pax_global_header00006660000000000000000000000064147036550170014522gustar00rootroot0000000000000052 comment=7b87dacb33831da8cbc03679661225d523d3a956 dssp-4.4.10/000077500000000000000000000000001470365501700125615ustar00rootroot00000000000000dssp-4.4.10/.dockerignore000066400000000000000000000000421470365501700152310ustar00rootroot00000000000000Dockerfile .dockerignore README.mddssp-4.4.10/.github/000077500000000000000000000000001470365501700141215ustar00rootroot00000000000000dssp-4.4.10/.github/workflows/000077500000000000000000000000001470365501700161565ustar00rootroot00000000000000dssp-4.4.10/.github/workflows/build-documentation.yml000066400000000000000000000034741470365501700226570ustar00rootroot00000000000000# This starter workflow is for a CMake project running on multiple platforms. There is a different starter workflow if you just want a single platform. # See: https://github.com/actions/starter-workflows/blob/main/ci/cmake-single-platform.yml name: publish docs on: push: branches: [ "trunk" ] permissions: contents: read pages: write id-token: write concurrency: group: "pages" cancel-in-progress: false jobs: docs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - name: Set reusable strings # Turn repeated input strings (such as the build output directory) into step outputs. These step outputs can be used throughout the workflow file. id: strings shell: bash run: | echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT" - name: Install dependencies Ubuntu run: sudo apt-get update && sudo apt-get install cmake doxygen - uses: actions/setup-python@v4 with: python-version: '3.9' cache: 'pip' # caching pip dependencies - run: pip install -r docs/requirements.txt - name: Configure CMake run: cmake -S . -B build -DBUILD_DOCUMENTATION=ON -DBUILD_TESTING=OFF - name: Run Sphinx run: | cmake --build build --target Sphinx-mcfp ls -l ${{ steps.strings.outputs.build-output-dir }} ls -l ${{ steps.strings.outputs.build-output-dir }}/docs/sphinx - name: Upload artifact uses: actions/upload-pages-artifact@v2 with: path: ${{ steps.strings.outputs.build-output-dir }}/docs/sphinx deploy: environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} runs-on: ubuntu-latest needs: docs steps: - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v2 dssp-4.4.10/.github/workflows/cmake-multi-platform.yml000066400000000000000000000032421470365501700227340ustar00rootroot00000000000000name: multi platform test on: push: branches: [ "trunk", "develop" ] pull_request: branches: [ "trunk" ] jobs: build: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] include: - os: windows-latest cpp_compiler: cl - os: ubuntu-latest cpp_compiler: g++ - os: macos-latest cpp_compiler: clang++ steps: - uses: actions/checkout@v3 - name: Set reusable strings id: strings shell: bash run: echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT" - name: Install Catch2 Ubuntu if: matrix.os == 'ubuntu-latest' run: > sudo apt-get update && sudo apt-get install catch2 - name: Install Catch2 macOS if: matrix.os == 'macos-latest' run: > brew install catch2 - name: Install dependencies Window if: matrix.os == 'windows-latest' run: ./tools/depends.cmd shell: cmd - name: Configure CMake run: > cmake -B ${{ steps.strings.outputs.build-output-dir }} -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=ON -S ${{ github.workspace }} - name: Build run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config Release - name: Test working-directory: ${{ steps.strings.outputs.build-output-dir }} run: ctest --build-config Release --output-on-failure -R dssp env: LIBCIFPP_DATA_DIR: ${{ steps.strings.outputs.build-output-dir }}/_deps/cifpp-src/rsrc dssp-4.4.10/.gitignore000066400000000000000000000001261470365501700145500ustar00rootroot00000000000000.vscode/ .vs/ build/ .gdb_history **/*.dssp src/revision.hpp libdssp/src/revision.hpp dssp-4.4.10/.gitmodules000066400000000000000000000005211470365501700147340ustar00rootroot00000000000000[submodule "libconfig"] path = libconfig url = https://github.com/mhekkel/libconfig.git [submodule "date"] path = date url = https://github.com/HowardHinnant/date.git [submodule "libcifpp"] path = libcifpp url = https://github.com/PDB-REDO/libcifpp.git [submodule "gxrio"] path = gxrio url = https://github.com/mhekkel/gxrio.git dssp-4.4.10/CMakeLists.txt000066400000000000000000000135021470365501700153220ustar00rootroot00000000000000# SPDX-License-Identifier: BSD-2-Clause # Copyright (c) 2021 NKI/AVL, Netherlands Cancer Institute # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # 1. Redistributions of source code must retain the above copyright notice, this # list of conditions and the following disclaimer # 2. Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. cmake_minimum_required(VERSION 3.23) # set the project name project(mkdssp VERSION 4.4.10 LANGUAGES CXX) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") include(CTest) include(VersionString) if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers") elseif(MSVC) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4") endif() # Optionally build a version to be installed inside CCP4 option(BUILD_FOR_CCP4 "Build a version to be installed in CCP4" OFF) option(BUILD_DOCUMENTATION "Generate the documentation files using pandoc" OFF) if(BUILD_FOR_CCP4) if("$ENV{CCP4}" STREQUAL "" OR NOT EXISTS $ENV{CCP4}) message(FATAL_ERROR "A CCP4 built was requested but CCP4 was not sourced") else() list(APPEND CMAKE_MODULE_PATH "$ENV{CCP4}") list(APPEND CMAKE_PREFIX_PATH "$ENV{CCP4}") set(CMAKE_INSTALL_PREFIX "$ENV{CCP4}") if(WIN32) set(BUILD_SHARED_LIBS ON) endif() endif() endif() if(MSVC) # make msvc standards compliant... add_compile_options(/permissive-) add_link_options(/NODEFAULTLIB:library) macro(get_WIN32_WINNT version) if(WIN32 AND CMAKE_SYSTEM_VERSION) set(ver ${CMAKE_SYSTEM_VERSION}) string(REPLACE "." "" ver ${ver}) string(REGEX REPLACE "([0-9])" "0\\1" ver ${ver}) set(${version} "0x${ver}") endif() endmacro() get_WIN32_WINNT(ver) add_definitions(-D_WIN32_WINNT=${ver}) if(BUILD_SHARED_LIBS) set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>DLL") else() set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") endif() endif() # Create a revision file, containing the current git version info write_version_header("${CMAKE_CURRENT_SOURCE_DIR}/src") # Optionally use mrc to create resources find_package(Mrc QUIET) if(MRC_FOUND) option(USE_RSRC "Use mrc to create resources" ON) else() message(STATUS "Not using resources since mrc was not found") endif() set(CMAKE_THREAD_PREFER_PTHREAD) set(THREADS_PREFER_PTHREAD_FLAG) find_package(Threads) find_package(libmcfp QUIET) if(NOT (libmcfp_FOUND OR TARGET libmcfp)) include(FetchContent) if(CMAKE_VERSION GREATER_EQUAL 3.28) set(EXLC "EXCLUDE_FROM_ALL") endif() FetchContent_Declare( libmcfp ${EXLC} GIT_REPOSITORY https://github.com/mhekkel/libmcfp GIT_TAG v1.3.1) FetchContent_MakeAvailable(libmcfp) endif() if(NOT TARGET cifpp AND NOT cifpp_FOUND) include(FetchContent) find_package(cifpp 7.0.7 QUIET) if(NOT cifpp_FOUND) set(CIFPP_DOWNLOAD_CCD OFF) set(SAVED_BUILD_TESTING "${BUILD_TESTING}") set(BUILD_TESTING OFF) FetchContent_Declare( cifpp ${EXLC} GIT_REPOSITORY https://github.com/pdb-redo/libcifpp.git GIT_TAG v7.0.7 ) FetchContent_MakeAvailable(cifpp) set(BUILD_TESTING ${SAVED_BUILD_TESTING}) endif() endif() add_subdirectory(libdssp) add_executable(mkdssp ${CMAKE_CURRENT_SOURCE_DIR}/src/mkdssp.cpp) target_link_libraries(mkdssp PRIVATE libmcfp::libmcfp dssp::dssp) if(USE_RSRC) mrc_target_resources(mkdssp ${CIFPP_SHARE_DIR}/mmcif_pdbx.dic ${CIFPP_SHARE_DIR}/mmcif_ddl.dic ${CMAKE_CURRENT_SOURCE_DIR}/libdssp/mmcif_pdbx/dssp-extension.dic) endif() # Install rules install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin ) if(NOT USE_RSRC) # When building cifpp ourselves, we need to find where libcifpp # expects the data files to be located. if(TARGET cifpp) get_target_property(DSSP_DATA_DIR cifpp CIFPP_DATA_DIR) get_target_property(CIFPP_SOURCE_DIR cifpp SOURCE_DIR) install( FILES ${CIFPP_SOURCE_DIR}/rsrc/mmcif_pdbx.dic ${CIFPP_SOURCE_DIR}/rsrc/mmcif_ddl.dic ${CMAKE_CURRENT_SOURCE_DIR}/libdssp/mmcif_pdbx/dssp-extension.dic DESTINATION ${DSSP_DATA_DIR}) else() endif() endif() if(BUILD_DOCUMENTATION) add_subdirectory(doc) endif() if(UNIX) install(FILES doc/mkdssp.1 DESTINATION share/man/man1) endif() if(EXISTS "${CCP4}/html") install(FILES doc/mkdssp.html DESTINATION ${CCP4}/html) endif() # test if(BUILD_TESTING) add_subdirectory(test) endif() include(InstallRequiredSystemLibraries) set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") # Tarball generation set(CPACK_SOURCE_TGZ ON) set(CPACK_SOURCE_TBZ2 OFF) set(CPACK_SOURCE_TXZ OFF) set(CPACK_SOURCE_TZ OFF) set(CPACK_SOURCE_IGNORE_FILES "/data/components.cif;/build;/.vscode;/.git") set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${PROJECT_VERSION}") set(CPACK_SOURCE_PACKAGE_FILE_NAME ${CPACK_PACKAGE_FILE_NAME}) # NSIS options set(CPACK_NSIS_MODIFY_PATH ON) # configuration done, include CPack include(CPack) dssp-4.4.10/Dockerfile000066400000000000000000000024641470365501700145610ustar00rootroot00000000000000FROM ubuntu:22.04 ENV TZ="Europe/Amsterdam" RUN apt-get update && \ apt-get install -yq tzdata && \ ln -fs /usr/share/zoneinfo/Europe/Amsterdam /etc/localtime && \ dpkg-reconfigure -f noninteractive tzdata && \ apt install -y build-essential cmake zlib1g-dev git libeigen3-dev WORKDIR /build # Build and install libcifpp # https://github.com/PDB-REDO/libcifpp RUN cd /build && \ git clone https://github.com/PDB-REDO/libcifpp.git && \ cd libcifpp && \ cmake -S . -B build -DCMAKE_BUILD_TYPE=Release \ -DBUILD_TESTING=OFF -DCIFPP_DOWNLOAD_CCD=OFF && \ cmake --build build -j $(nproc) && \ cmake --install build && \ echo "libcifpp installed" # Build and install libmcfp # https://github.com/mhekkel/libmcfp RUN cd /build && \ git clone https://github.com/mhekkel/libmcfp.git && \ cd libmcfp && \ cmake -S . -B build -DBUILD_TESTING=OFF && \ cmake --build build -j $(nproc) && \ cmake --install build && \ echo "libmcfp installed" # Build and install dssp COPY . /src RUN cd /src && \ rm -rf build && \ mkdir build && \ cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF && \ cmake --build build -j $(nproc) && \ cmake --install build && \ echo "dssp installed" && \ rm -rf /src /build WORKDIR /data ENTRYPOINT ["mkdssp"]dssp-4.4.10/LICENSE000066400000000000000000000024771470365501700136000ustar00rootroot00000000000000BSD-2-Clause License Copyright (c) 2020 NKI/AVL, Netherlands Cancer Institute All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. dssp-4.4.10/README.md000066400000000000000000000030001470365501700140310ustar00rootroot00000000000000[![github CI](https://github.com/pdb-redo/dssp/actions/workflows/cmake-multi-platform.yml/badge.svg)](https://github.com/pdb-redo/dssp/actions) [![GitHub License](https://img.shields.io/github/license/pdb-redo/dssp)](https://github.com/pdb-redo/dssp/LICENSE) DSSP 4.4 ======== This is a rewrite of DSSP, now offering full mmCIF support. The difference with previous releases of DSSP is that it now writes out an annotated mmCIF file by default, storing the secondary structure information in the `_struct_conf` category. Another new feature in this version of DSSP is that it now defines Poly-Proline helices as well. The DSSP program was designed by _Wolfgang Kabsch_ and _Chris Sander_ to standardize secondary structure assignment. DSSP is a database of secondary structure assignments (and much more) for all protein entries in the Protein Data Bank (PDB). DSSP is also the program that calculates DSSP entries from PDB entries. DSSP does **not** predict secondary structure. Requirements ------------ A good, modern compiler is needed to build the mkdssp program since it uses many new C++20 features. Building -------- The new makefile for dssp will take care of downloading and building all requirements automatically. So in theory, building is as simple as: ```console git clone https://github.com/PDB-REDO/dssp.git cd dssp cmake -S . -B build cmake --build build cmake --install build ``` Usage ----- See [manual page](doc/mkdssp.md) for more info. Or even better, see the [DSSP website](https://pdb-redo.eu/dssp). dssp-4.4.10/changelog000066400000000000000000000042641470365501700144410ustar00rootroot00000000000000Version 4.4.10 - Support for installing in environments that do not use resources, this time for real. Version 4.4.9 - Support for installing in environments that do not use resources Version 4.4.8 - Fix writing version numbers Version 4.4.7 - Fix cmakefile to use system installed libraries by default Version 4.4.6 - Update dependency on libcifpp to version 7 Version 4.4.5 - Changes required for building on Windows Version 4.4.4 - Fix unit test Version 4.4.3 - Split the code in a sub project for libdssp and the main code for the executable. - New version string code. Version 4.4.2 - Fix unit test Version 4.4.1 - Generate documentation only when requested Version 4.4.0 - Packaging (split out the web server again) - Added markdown doc file, all doc files are now created from mkdssp.1 using pandoc, if that is installed. - small changes in output category item names (range_1 renamed to range_id_1) Version 4.3.1.1 - Check to see if data will fit in old format before starting calculations Version 4.3.1 - Optimised for speed - Fix in sheet numbering (mmCIF output) Version 4.3 - Write new output by default - Fix some issues with this new output, typo e.g. - Added web service implementation - Added mmcif_pdbx dictionary extension Version 4.2.2.1 - Fixed dependency on libcifpp Version 4.2.2 - Building for CCP4 - Fix is_cis Version 4.2.1 - The previous version was a bit overly strict - Introduce a --quiet flag. Version 4.2.0 - Changes for packaging - New mmCIF DSSP output, added several categories Version 4.1.0 - Based on new libcifpp version 5 Version 4.0.6 - Prevent heap buffer overflow writing annotated mmCIF file. Version 4.0.5 - The options for loading custom dictionary files and the like are now visible in the help again. Version 4.0.4 - New version string logic - Improved makefile Version 4.0.3 - Fixed makefile Version 4.0.2 - Dropped support for reading bzip2 files directly. gzipped is still supported Version 4.0.1 - Switch from GNU configure to cmake as the build environment Version 4.0.0 - Write the secondary structure information as an annotation to an mmCIF file (old format is still available as an option) - Added the recognition of Poly-Proline helices dssp-4.4.10/cmake/000077500000000000000000000000001470365501700136415ustar00rootroot00000000000000dssp-4.4.10/cmake/VersionString.cmake000066400000000000000000000231451470365501700174640ustar00rootroot00000000000000# SPDX-License-Identifier: BSD-2-Clause # Copyright (c) 2021-2023 Maarten L. Hekkelman # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # 1. Redistributions of source code must retain the above copyright notice, this # list of conditions and the following disclaimer # 2. Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # This cmake extension writes out a revision.hpp file in a specified directory. # The file will contain a C++ inline function that can be used to write out # version information. cmake_minimum_required(VERSION 3.15) # We want the revision.hpp file to be updated whenever the status of the # git repository changes. Use the same technique as in GetGitRevisionDescription.cmake # from https://github.com/rpavlik/cmake-modules #[=======================================================================[.rst: .. command:: write_version_header Write a file named revision.hpp containing version info:: write_version_header( [FILE_NAME ] [LIB_NAME ] ) This command will generate the code to write a file name revision.hpp in the directory ````. ``FILE_NAME`` Specify the name of the file to create, default is ``revision.hpp``. ``LIB_NAME`` Specify the library name which will be used as a prefix part for the variables contained in the revision file. #]=======================================================================] # Record the location of this module now, not at the time the CMakeLists.txt # is being processed get_filename_component(_current_cmake_module_dir ${CMAKE_CURRENT_LIST_FILE} PATH) # First locate a .git file or directory. function(_get_git_dir _start_dir _variable) set(cur_dir "${_start_dir}") set(git_dir "${_start_dir}/.git") while(NOT EXISTS "${git_dir}") # .git dir not found, search parent directories set(prev_dir "${cur_dir}") get_filename_component(cur_dir "${cur_dir}" DIRECTORY) if(cur_dir STREQUAL prev_dir OR cur_dir STREQUAL ${_start_dir}) # we are not in git since we either hit root or # the ${_start_dir} which should be the top set(${_variable} "" PARENT_SCOPE) return() endif() set(git_dir "${cur_dir}/.git") endwhile() set(${_variable} "${git_dir}" PARENT_SCOPE) endfunction() # Locate the git refspec hash and load the hash # This code locates the file containing the git refspec/hash # and loads it. Doing it this way assures that each time the git # repository changes the revision.hpp file gets out of date. function(_get_git_hash _data_dir _variable) # Be pessimistic set(_variable "" PARENT_SCOPE) # Load git package if needed if(NOT GIT_FOUND) find_package(Git QUIET) endif() # And fail if not found if(NOT GIT_FOUND) return() endif() # Locate the nearest .git file or directory _get_git_dir(${CMAKE_CURRENT_SOURCE_DIR} GIT_DIR) # And fail if not found if("${GIT_DIR}" STREQUAL "") return() endif() # Check if the current source dir is a git submodule or a worktree. # In both cases .git is a file instead of a directory. # if(IS_DIRECTORY ${GIT_DIR}) set(HEAD_SOURCE_FILE "${GIT_DIR}/HEAD") else() # The following git command will return a non empty string that # points to the super project working tree if the current # source dir is inside a git submodule. # Otherwise the command will return an empty string. # execute_process( COMMAND "${GIT_EXECUTABLE}" rev-parse --show-superproject-working-tree WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" OUTPUT_VARIABLE out ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) if(NOT "${out}" STREQUAL "") # If out is not empty, GIT_DIR/CMAKE_CURRENT_SOURCE_DIR is in a submodule file(READ ${GIT_DIR} submodule) string(REGEX REPLACE "gitdir: (.*)$" "\\1" GIT_DIR_RELATIVE ${submodule}) string(STRIP ${GIT_DIR_RELATIVE} GIT_DIR_RELATIVE) get_filename_component(SUBMODULE_DIR ${GIT_DIR} PATH) get_filename_component(GIT_DIR ${SUBMODULE_DIR}/${GIT_DIR_RELATIVE} ABSOLUTE) set(HEAD_SOURCE_FILE "${GIT_DIR}/HEAD") else() # GIT_DIR/CMAKE_CURRENT_SOURCE_DIR is in a worktree file(READ ${GIT_DIR} worktree_ref) # The .git directory contains a path to the worktree information directory # inside the parent git repo of the worktree. # string(REGEX REPLACE "gitdir: (.*)$" "\\1" git_worktree_dir ${worktree_ref}) string(STRIP ${git_worktree_dir} git_worktree_dir) _get_git_dir("${git_worktree_dir}" GIT_DIR) set(HEAD_SOURCE_FILE "${git_worktree_dir}/HEAD") endif() endif() # Fail if the 'head' file was not found if(NOT EXISTS "${HEAD_SOURCE_FILE}") return() endif() # Make a copy of the head file set(HEAD_FILE "${_data_dir}/HEAD") configure_file("${HEAD_SOURCE_FILE}" "${HEAD_FILE}" COPYONLY) # Now we create a cmake file that will read the contents of this # head file in the appropriate way file(WRITE "${_data_dir}/grab-ref.cmake.in" [[ set(HEAD_HASH) file(READ "@HEAD_FILE@" HEAD_CONTENTS LIMIT 1024) string(STRIP "${HEAD_CONTENTS}" HEAD_CONTENTS) if(HEAD_CONTENTS MATCHES "ref") # named branch string(REPLACE "ref: " "" HEAD_REF "${HEAD_CONTENTS}") if(EXISTS "@GIT_DIR@/${HEAD_REF}") configure_file("@GIT_DIR@/${HEAD_REF}" "@VERSION_STRING_DATA@/head-ref" COPYONLY) else() configure_file("@GIT_DIR@/packed-refs" "@VERSION_STRING_DATA@/packed-refs" COPYONLY) file(READ "@VERSION_STRING_DATA@/packed-refs" PACKED_REFS) if(${PACKED_REFS} MATCHES "([0-9a-z]*) ${HEAD_REF}") set(HEAD_HASH "${CMAKE_MATCH_1}") endif() endif() else() # detached HEAD configure_file("@GIT_DIR@/HEAD" "@VERSION_STRING_DATA@/head-ref" COPYONLY) endif() if(NOT HEAD_HASH) file(READ "@VERSION_STRING_DATA@/head-ref" HEAD_HASH LIMIT 1024) string(STRIP "${HEAD_HASH}" HEAD_HASH) endif() ]]) configure_file("${VERSION_STRING_DATA}/grab-ref.cmake.in" "${VERSION_STRING_DATA}/grab-ref.cmake" @ONLY) # Include the aforementioned file, this will define # the HEAD_HASH variable we're looking for include("${VERSION_STRING_DATA}/grab-ref.cmake") set(${_variable} "${HEAD_HASH}" PARENT_SCOPE) endfunction() # Create a revision file, containing the current git version info, if any function(write_version_header dir) set(flags ) set(options LIB_NAME FILE_NAME) set(sources ) cmake_parse_arguments(VERSION_STRING_OPTION "${flags}" "${options}" "${sources}" ${ARGN}) # parameter check if(NOT IS_DIRECTORY ${dir}) message(FATAL_ERROR "First parameter to write_version_header should be a directory where the final revision.hpp file will be placed") endif() if(VERSION_STRING_OPTION_FILE_NAME) set(file_name "${VERSION_STRING_OPTION_FILE_NAME}") else() set(file_name "revision.hpp") endif() # Where to store intermediate files set(VERSION_STRING_DATA "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/VersionString") if(NOT EXISTS "${VERSION_STRING_DATA}") file(MAKE_DIRECTORY "${VERSION_STRING_DATA}") endif() # Load the git hash using the wizzard-like code above. _get_git_hash("${VERSION_STRING_DATA}" GIT_HASH) # If git was found, fetch the git description string if(GIT_HASH) execute_process( COMMAND "${GIT_EXECUTABLE}" describe --dirty --match=build WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" RESULT_VARIABLE res OUTPUT_VARIABLE out ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) if(res EQUAL 0) set(REVISION_STRING "${out}") else() message(STATUS "Git hash not found, does this project has a 'build' tag?") endif() else() message(STATUS "Git hash not found") endif() # Check the revision string, if it matches we fill in the required info if(REVISION_STRING MATCHES "build-([0-9]+)-g([0-9a-f]+)(-dirty)?") set(BUILD_NUMBER ${CMAKE_MATCH_1}) if(CMAKE_MATCH_3) set(REVISION_GIT_TAGREF "${CMAKE_MATCH_2}*") else() set(REVISION_GIT_TAGREF "${CMAKE_MATCH_2}") endif() string(TIMESTAMP REVISION_DATE_TIME "%Y-%m-%dT%H:%M:%SZ" UTC) else() set(REVISION_GIT_TAGREF "") set(BUILD_NUMBER 0) set(REVISION_DATE_TIME "") endif() if(VERSION_STRING_OPTION_LIB_NAME) set(VAR_PREFIX "${VERSION_STRING_OPTION_LIB_NAME}") set(IDENT_PREFIX "${VERSION_STRING_OPTION_LIB_NAME}_") set(BOOL_IS_MAIN "false") else() set(VAR_PREFIX "") set(IDENT_PREFIX "") set(BOOL_IS_MAIN "true") endif() configure_file("${_current_cmake_module_dir}/revision.hpp.in" "${dir}/${file_name}" @ONLY) endfunction() dssp-4.4.10/cmake/revision.hpp.in000066400000000000000000000056331470365501700166240ustar00rootroot00000000000000// This file was generated by VersionString.cmake #pragma once #include constexpr const char k@VAR_PREFIX@ProjectName[] = "@PROJECT_NAME@"; constexpr const char k@VAR_PREFIX@VersionNumber[] = "@PROJECT_VERSION@"; constexpr int k@VAR_PREFIX@BuildNumber = @BUILD_NUMBER@; constexpr const char k@VAR_PREFIX@RevisionGitTag[] = "@REVISION_GIT_TAGREF@"; constexpr const char k@VAR_PREFIX@RevisionDate[] = "@REVISION_DATE_TIME@"; #ifndef VERSION_INFO_DEFINED #define VERSION_INFO_DEFINED 1 namespace version_info_v1_1 { class version_info_base { public: static void write_version_string(std::ostream &os, bool verbose) { auto s_main = registered_main(); if (s_main != nullptr) s_main->write(os, verbose); if (verbose) { for (auto lib = registered_libraries(); lib != nullptr; lib = lib->m_next) { os << "-\n"; lib->write(os, verbose); } } } protected: version_info_base(const char *name, const char *version, int build_number, const char *git_tag, const char *revision_date, bool is_main) : m_name(name) , m_version(version) , m_build_number(build_number) , m_git_tag(git_tag) , m_revision_date(revision_date) { if (is_main) registered_main() = this; else { auto &s_head = registered_libraries(); m_next = s_head; s_head = this; } } void write(std::ostream &os, bool verbose) { os << m_name << " version " << m_version << '\n'; if (verbose) { if (m_build_number != 0) { os << "build: " << m_build_number << ' ' << m_revision_date << '\n'; if (m_git_tag[0] != 0) os << "git tag: " << m_git_tag << '\n'; } } } using version_info_ptr = version_info_base *; static version_info_ptr ®istered_main() { static version_info_ptr s_main = nullptr; return s_main; } static version_info_ptr ®istered_libraries() { static version_info_ptr s_head = nullptr; return s_head; } const char *m_name; const char *m_version; int m_build_number; const char *m_git_tag; const char *m_revision_date; version_info_base *m_next = nullptr; }; template class version_info : public version_info_base { public: using implementation_type = T; version_info(const char *name, const char *version, int build_number, const char *git_tag, const char *revision_date, bool is_main) : version_info_base(name, version, build_number, git_tag, revision_date, is_main) { } }; } // namespace version_info_v1_1 inline void write_version_string(std::ostream &os, bool verbose) { version_info_v1_1::version_info_base::write_version_string(os, verbose); } #endif const class version_info_@IDENT_PREFIX@impl : public version_info_v1_1::version_info { public: version_info_@IDENT_PREFIX@impl() : version_info(k@VAR_PREFIX@ProjectName, k@VAR_PREFIX@VersionNumber, k@VAR_PREFIX@BuildNumber, k@VAR_PREFIX@RevisionGitTag, k@VAR_PREFIX@RevisionDate, @BOOL_IS_MAIN@) { } } s_version_info_@IDENT_PREFIX@instance; dssp-4.4.10/doc/000077500000000000000000000000001470365501700133265ustar00rootroot00000000000000dssp-4.4.10/doc/CMakeLists.txt000066400000000000000000000024241470365501700160700ustar00rootroot00000000000000# manual find_program(PANDOC pandoc) if(PANDOC) file(GENERATE OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/pandoc-md.sh CONTENT "${PANDOC} ${CMAKE_CURRENT_SOURCE_DIR}/mkdssp.1 -t markdown | sed -e \"s/\\\\\\' \\\\\\' (space)/ ' ' (space)/\" > ${CMAKE_CURRENT_SOURCE_DIR}/mkdssp.md" FILE_PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ) add_custom_command(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/mkdssp.md DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/mkdssp.1 COMMAND "${CMAKE_CURRENT_BINARY_DIR}/pandoc-md.sh" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/ VERBATIM) add_custom_command(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/mkdssp.html DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/mkdssp.1 COMMAND ${PANDOC} -o mkdssp.html mkdssp.1 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/ VERBATIM) add_custom_command(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/mkdssp.pdf DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/mkdssp.1 COMMAND ${PANDOC} -o mkdssp.pdf mkdssp.1 -t html WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/ VERBATIM) add_custom_target(doc_files DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/mkdssp.html ${CMAKE_CURRENT_SOURCE_DIR}/mkdssp.pdf ${CMAKE_CURRENT_SOURCE_DIR}/mkdssp.md) add_dependencies(mkdssp doc_files) else() message(STATUS "Could not find pandoc, cannot recreate documentation files") endif() dssp-4.4.10/doc/mkdssp.1000066400000000000000000000065221470365501700147160ustar00rootroot00000000000000.TH mkdssp 1 "2023-06-13" "version 4.3.2" "User Commands" .if n .ad l .nh .SH NAME mkdssp \- Assign secondary structure to proteins .SH SYNOPSIS mkdssp [OPTION] input [output] .SH DESCRIPTION The DSSP program was designed by Wolfgang Kabsch and Chris Sander to standardize secondary structure assignment. DSSP is a database of secondary structure assignments (and much more) for all protein entries in the Protein Data Bank (PDB). mkdssp is the program that calculates DSSP entries from PDB entries. mkdssp does \fBnot\fR predict secondary structure. .sp The original DSSP program wrote output in a fixed format, this version by default writes annotated mmCIF files, storing the secondary structure information in the _struct_conf category. .sp Since version 4.0 the mkdssp program also assigns PPII helices. .SH OPTIONS The input file can be either mmCIF or PDB format and the file may be gzip compressed. Note that input files must be formatted correctly. E.g. PDB files must have a CRYST1 record. More info: https://www.wwpdb.org/documentation/file-format-content/format33/sect8.html#CRYST1 .sp The output is optional, if omitted the output is written to \fIstdout\fR. If the name of the output file ends with either \fI.gz\fR or \fI.bz2\fR the output is compressed accordingly. .TP \fB--output-format\fR=[dssp|mmcif] If an output file is specified, the extension of the filename is used to choose to output format, but if it is unclear, mmcif is the default. Use this option to force output in either the old fixed column DSSP format or the new annotated mmCIF format. .TP \fB--no-dssp-categories\fR When writing mmCIF files, suppress the output of all dssp_ categories. .TP \fB--min-pp-stretch\fR This option can be used to define the minimal number of residues with PHI/PSI angles within the range required to assing a PP helix. .TP \fB--write-other\fR By default the new format does not write the structure information for OTHER. Use this flag to change that. .TP \fB--components\fR The knowledge of compounds is loaded from the CCD file \fIcomponents.cif\fR that should have been installed by \fIlibcifpp\fR. You can override that file by using this option. .TP \fB--extra-compounds\fR As an addition to the standard \fIcomponents.cif\fR file, you can add more files using this option. Files should be either in CCD format or should be CCP4 restraints files. .TP \fB--mmcif-dictionary\fR The default mmCIF dictionary file is installed by the \fIlibcifpp\fR library but you can override it using this option. .SH DETAILS The DSSP algorithm assings secondary structure based on the energy calculated for H-bonds. .br .B Table\ \&1.\ \&Secondary\ Structures\ recognized .TS allbox; cb cb cb . DSSP Code mmCIF Code Description .T& l l l. H HELX_RH_AL_P Alphahelix B STRN Betabridge E STRN Strand G HELX_RH_3T_P Helix_3 I HELX_RH_PI_P Helix_5 P HELX_LH_PP_P Helix_PPII T TURN_TY1_P Turn S BEND Bend T{ \(aq \(aq (space) T} OTHER Loop .TE .SH BUGS The mmCIF format currently lacks a lot of information that was available in the old format like information about the bridge pairs or the span of the various helices recognized. Also the accessibility information is left out. .sp If you think this information should be part of the output, please contact the author. .SH AUTHOR Written by Maarten L. Hekkelman .SH "REPORTING BUGS" Report bugs at https://github.com/PDB-REDO/dssp/issues dssp-4.4.10/doc/mkdssp.html000066400000000000000000000117111470365501700155160ustar00rootroot00000000000000

NAME

mkdssp - Assign secondary structure to proteins

SYNOPSIS

mkdssp [OPTION] input [output]

DESCRIPTION

The DSSP program was designed by Wolfgang Kabsch and Chris Sander to standardize secondary structure assignment. DSSP is a database of secondary structure assignments (and much more) for all protein entries in the Protein Data Bank (PDB). mkdssp is the program that calculates DSSP entries from PDB entries. mkdssp does not predict secondary structure.

The original DSSP program wrote output in a fixed format, this version by default writes annotated mmCIF files, storing the secondary structure information in the _struct_conf category.

Since version 4.0 the mkdssp program also assigns PPII helices.

OPTIONS

The input file can be either mmCIF or PDB format and the file may be gzip compressed. Note that input files must be formatted correctly. E.g. PDB files must have a CRYST1 record. More info: https://www.wwpdb.org/documentation/file-format-content/format33/sect8.html#CRYST1

The output is optional, if omitted the output is written to stdout. If the name of the output file ends with either .gz or .bz2 the output is compressed accordingly.

--output-format=[dssp|mmcif]

If an output file is specified, the extension of the filename is used to choose to output format, but if it is unclear, mmcif is the default. Use this option to force output in either the old fixed column DSSP format or the new annotated mmCIF format.

--no-dssp-categories

When writing mmCIF files, suppress the output of all dssp_ categories.

--min-pp-stretch

This option can be used to define the minimal number of residues with PHI/PSI angles within the range required to assing a PP helix.

--write-other

By default the new format does not write the structure information for OTHER. Use this flag to change that.

--components

The knowledge of compounds is loaded from the CCD file components.cif that should have been installed by libcifpp. You can override that file by using this option.

--extra-compounds

As an addition to the standard components.cif file, you can add more files using this option. Files should be either in CCD format or should be CCP4 restraints files.

--mmcif-dictionary

The default mmCIF dictionary file is installed by the libcifpp library but you can override it using this option.

DETAILS

The DSSP algorithm assings secondary structure based on the energy calculated for H-bonds.
Table 1. Secondary Structures recognized

DSSP Code mmCIF Code Description
H HELX_RH_AL_P Alphahelix
B STRN Betabridge
E STRN Strand
G HELX_RH_3T_P Helix_3
I HELX_RH_PI_P Helix_5
P HELX_LH_PP_P Helix_PPII
T TURN_TY1_P Turn
S BEND Bend
' ' (space) OTHER Loop

BUGS

The mmCIF format currently lacks a lot of information that was available in the old format like information about the bridge pairs or the span of the various helices recognized. Also the accessibility information is left out.

If you think this information should be part of the output, please contact the author.

AUTHOR

Written by Maarten L. Hekkelman <maarten@hekkelman.com>

REPORTING BUGS

Report bugs at https://github.com/PDB-REDO/dssp/issues

dssp-4.4.10/doc/mkdssp.md000066400000000000000000000070311470365501700151520ustar00rootroot00000000000000# NAME mkdssp - Assign secondary structure to proteins # SYNOPSIS mkdssp \[OPTION\] input \[output\] # DESCRIPTION The DSSP program was designed by Wolfgang Kabsch and Chris Sander to standardize secondary structure assignment. DSSP is a database of secondary structure assignments (and much more) for all protein entries in the Protein Data Bank (PDB). mkdssp is the program that calculates DSSP entries from PDB entries. mkdssp does **not** predict secondary structure. The original DSSP program wrote output in a fixed format, this version by default writes annotated mmCIF files, storing the secondary structure information in the \_struct_conf category. Since version 4.0 the mkdssp program also assigns PPII helices. # OPTIONS The input file can be either mmCIF or PDB format and the file may be gzip compressed. Note that input files must be formatted correctly. E.g. PDB files must have a CRYST1 record. More info: https://www.wwpdb.org/documentation/file-format-content/format33/sect8.html#CRYST1 The output is optional, if omitted the output is written to *stdout*. If the name of the output file ends with either *.gz* or *.bz2* the output is compressed accordingly. **\--output-format**=\[dssp\|mmcif\] : If an output file is specified, the extension of the filename is used to choose to output format, but if it is unclear, mmcif is the default. Use this option to force output in either the old fixed column DSSP format or the new annotated mmCIF format. **\--no-dssp-categories** : When writing mmCIF files, suppress the output of all dssp\_ categories. **\--min-pp-stretch** : This option can be used to define the minimal number of residues with PHI/PSI angles within the range required to assing a PP helix. **\--write-other** : By default the new format does not write the structure information for OTHER. Use this flag to change that. **\--components** : The knowledge of compounds is loaded from the CCD file *components.cif* that should have been installed by *libcifpp*. You can override that file by using this option. **\--extra-compounds** : As an addition to the standard *components.cif* file, you can add more files using this option. Files should be either in CCD format or should be CCP4 restraints files. **\--mmcif-dictionary** : The default mmCIF dictionary file is installed by the *libcifpp* library but you can override it using this option. # DETAILS The DSSP algorithm assings secondary structure based on the energy calculated for H-bonds.\ **Table 1. Secondary Structures recognized** --------------- -------------- ------------- DSSP Code mmCIF Code Description H HELX_RH_AL_P Alphahelix B STRN Betabridge E STRN Strand G HELX_RH_3T_P Helix_3 I HELX_RH_PI_P Helix_5 P HELX_LH_PP_P Helix_PPII T TURN_TY1_P Turn S BEND Bend ' ' (space) OTHER Loop --------------- -------------- ------------- # BUGS The mmCIF format currently lacks a lot of information that was available in the old format like information about the bridge pairs or the span of the various helices recognized. Also the accessibility information is left out. If you think this information should be part of the output, please contact the author. # AUTHOR Written by Maarten L. Hekkelman \ # REPORTING BUGS Report bugs at https://github.com/PDB-REDO/dssp/issues dssp-4.4.10/doc/mkdssp.pdf000066400000000000000000001030111470365501700153160ustar00rootroot00000000000000%PDF-1.4 %âã 1 0 obj << /Title () /Creator (wkhtmltopdf 0.12.6) /Producer (Qt 5.15.3) /CreationDate (D:20230613091322+02'00') >> endobj 2 0 obj << /Type /Catalog /Pages 3 0 R >> endobj 4 0 obj << /Type /ExtGState /SA true /SM 0.02 /ca 1.0 /CA 1.0 /AIS false /SMask /None>> endobj 5 0 obj [/Pattern /DeviceRGB] endobj 6 0 obj << /Type /Page /Parent 3 0 R /Contents 10 0 R /Resources 12 0 R /Annots 13 0 R /MediaBox [0 0 595.000000 842.000000] >> endobj 12 0 obj << /ColorSpace << /PCSp 5 0 R /CSp /DeviceRGB /CSpg /DeviceGray >> /ExtGState << /GSa 4 0 R >> /Pattern << >> /Font << /F7 7 0 R /F8 8 0 R /F9 9 0 R >> /XObject << >> >> endobj 13 0 obj [ ] endobj 10 0 obj << /Length 11 0 R /Filter /FlateDecode >> stream x]n7}WsyY( r\ @ 6Ї EҴn]iI]vu(]ɪ*!g8sf8^zGj~og*?6hTV9}:{gf/>ǚr#M?~]u4̺otכdo/*>7-9]k]Wyjmg}[[8=ۿKq|/>*2]s)<̮̚s^,ڼvmb']YJ[-6N-ŲE׹jGiA-nKݱ3]Q7-ݨ]^ŘAqDoڒnD&7Nm Hյymj%u'Lo&Tv6yY \0^K˖:7.F}P m@Uu,!=:wEYMkdGUKӣS ) ZLӾFhօͿf[U^z[J?CA'eXKQPF )s42pEƲi#'"b:޸bJƒl:m)&Qy7S7U[bmnG6Z{ryh){so{;=oά5!ƃz}o sABY綁E;Viv:7.6eQm)d) M~oeNYyQЂu. aĔg:=غyˁo^<@Zk{ReJ4;-@y> Hu )suU:3HU4_:$~ѰIg' ~ń^"Xe(b&)%s xK"2:ks%dʐ:1N &rK 14|iWz$^ RކA!$2;$2XP5h#JY?Xl9]10xIlFɩf!4/*8F}ASƔEEڤI\+T$g#{8.F\*ď73*ӤQ#30TMHP&=."XM%J>BGX/Lbƀ %;-80 19xa(oI 愋m%\|;SRg2y"íTt7Ii?7RG%1\%ru8ATx Чٕ+78Y^ۙ,24DI_35(-l:pCjCYI|Rŗg\reѥ٦\D, 3T39Is~aʑ'5&_Qc$b')W*Tc+56YsbGA7/sCLVJMxKmSi -#/j$-i]*GgwD` D'BϖEj*IZ#MSY/߯W=HF]Do$Rmނ(oLo!Zs⹦Nmjیk)o2Wr'eƈ,-ŕ6 -bX\x;fϹV>5<<^Ee>2 f\,xl$E&\Ϝ/ IUFII!5qY2STooW.h 8JgȘ\g-Ϻn JJ0Tq剟jf 6Y՞p\ZZ*U9SZfWM#gv[|XJ{?;_n|y|r%K&5"^u5\Ћʁ%`*E6[ڷto9l< T> ruͺfע\-f=+u І7VL0kb]hzZR.mw򓉈M.*E'LA+́ ^5<<~c"T&Dx|mTסQʧTݝqMt0VOl3SZi? #3'a;ɍHmE/lDsv%靝RqL3~_8Y&itRN22/S^M"6fUom㐾o9co> endobj 17 0 obj << /ColorSpace << /PCSp 5 0 R /CSp /DeviceRGB /CSpg /DeviceGray >> /ExtGState << /GSa 4 0 R >> /Pattern << >> /Font << /F8 8 0 R /F7 7 0 R /F9 9 0 R >> /XObject << >> >> endobj 18 0 obj [ ] endobj 15 0 obj << /Length 16 0 R /Filter /FlateDecode >> stream x]M6y%x `99,.u9/["խ~áF@f9bUU(Gv܉D_qVuv{L??oﻷw7vCϯ/roR}ߍӏMSh{1x~K{76I{ɣ/>~8D!eeZ~Q?w7%ۏM!m[mgAֲxRUN3ZZRhZRMtliDѮcoflSzSUk:>c3tv{7)Z=-=x>%L#!zSF'BkcՔ.v}oQ#V!Uxxu-M/I]iUvF9 BFD؁2W}6cަvK|@fItndy(ZWcֽ`P!([s]x%&[gf*ZFY jOHOa͒v%`H RM{r!a'wqF׉PޡR]khߨgvg'2W˯b>Rv# ֖>A0<6 ޘS BWu\IHl=t. ZG4?q:)L8rjZ<`AP=V4vJKẖEXC߻}(=a6gIe\Q g}oxZ!/xEU=+M]BNUe3Uuxf_){PRe?ZgTGmn"}3=Ύ[0C#<>@Iԁ1 bK& CEvLfTҽḬ%8> +.q!)q e0-f;|n7lX%\'UgAR ͘s,gTfTs.o8>A5!| >{kB$3/ _HNg"q7<r!0S.?($׈g*uM* Ep9ue%h au+#KOxJ$ErFfyn1pdu)YU%͠ u}Ksm i >8DfLUtq-l"87iS9ъy#k@ˡiJo3cc٧>wv:T|"6 Va&q1KytZIS6y;f?~bd mhcAـS9ek*6D[:"pքtiҸ3|A@n[`0A&0jcΘ}H"Ix5<j$#dcsZ&0 ʿM8_Ȋ7ޫYȒ!/8K8 _$' vdɶŽTK~|Uz׳c\;nCjNJ1'7s0eӡ fwde3ȦVÎKYMgޫ|5 Frqlc8:w!P5a12U#Hz}ċDegIo˧jt!kJ עd1a-oD Ȝ9Iq+βd19n¥F_ sʨY ! DFj>M5ŹbSym%Đ eݒz8\7rCL ^:$24;:̔`.͔i `.J캥=ѕDm  YG2?37|w|󒐨v@¿[L|4S2mg"s=fdbrKZ)p"5ս:}a;u'U zcJ#v5zX'S֘)Ƽ>E{*# q-賋47g :tK'rS%&iiaJb&G=buqX E@$vcǿl7U2@!plb]OzLie򉏲PQ㮮eZ޶H}^Xן> endobj 20 0 obj << /Length1 11328 /Length 24 0 R /Filter /FlateDecode >> stream xZ p[ՙ>G B^~ɱ@˱'(l%#vBbµte][Uc%@w;](P$4S貔vYn)ӝ0S,2Yv+&0mw֊s?uFB'H7rNeR0-,-KI .a};0x|1`>QRp3sygV:GMO䤬)0Sۮ:uP?L?_eBZgb{ٗ6D@H#lo(6ӎ,~UdAI[IҁPm-[R6nœ5f˿fB;@ko{{};:;_>_?;`jw؛_ScjnZk뮾}iۼ oR[;ھx9| /l [ڷnn-G1|qtefjv[p_dAq(VkmqX&om O4>q÷o75޳02zmg[}5֗'/,\FֵcG7G)so^7:@wVrEHZŋd~4w}ϙ? hlmX'}`u {o==g Mϙ{z(_3G$^m S:je x$6E ay$!mWxQ)y]5}w.7v3Oާ>\(v.z U"{ Sg OZ8 Ol@ilQ̄oUhoY4uO^~˯:|;igr`nm𽟽'rsf{[ szDԜ NkC]', W gfb5pb;s }+'B33 zO."n\I}=2㆔/d=Oݿxӻe|4ɉC{8.X~!ۗE-S}?wa`I?G'}CKۮ->t͚0`n:=öعkf׾ϚW?b,O~ɩI<<Y7 |ġ:Ņnm} y7Y=}%-رx}AVP˧øicO+X}^xS3 ~׃9V}/L*aL묾dJ)YL j&?r3n۶N=P|εZsE.ŻZU>~\No>tP}dzpd z;ۂ33]8g9pkww^l`=f`f&&ZC)Ƶfjl~2QFgYdhUjㅅ)tg85$J=ȝ=|(MdC+'&\:YO{8d~.8::sX@alm9lf*]d= ޲Pl>GWQ yw_Bgfva?~ud0׺| %!3;k(4uսoyRU]ݞM:<ݛqVkh---Wy<wwq=V׻ZiP5rdNzj,[sokٝ?d-.s^}%Il7؆6v$B1㫞m<*~zWY{{X0a#[5菡qb*mmjPn Mu,`>j- ꚗ߷݆'уlށ-忖O59&ފcՖi#_Z;5AI3"+P^sSZ?'blAv<)VT?%6u KB-rt_qÍoԷb&x=8XĶ`]f1ڈ[[Q;>,6?.u K1B.K_,b|E}buh#"0 ҐH#;Qug/ꁗF A>1 {`Gx-LO$H:A*Dd%2$ ~ZrYЫ*ؕ5'B5)sit&HoO.},e$Kx?!Q*19qT$RnN։Dɑ|a6$HRJJ T#1? |{LYID!CTWj"SLZ 1 {7)Y5Gz=^_m+`-ŬX"/L\)5 hnx%c{Ui,܂[R"ˁ4 `&*=2kUYqӌu~u?%?Y_"L3[VG^qRF5YWhXjHpO.S%%$C:bU1Ee.97D5UfY-m38K "beqbayvI#OSK9Y*ϲSX-b7D+)4Yʬ3/jU-gzdHirĺ&-ִ*kڨGH*{\*$\IZ^Vqϰ}%&:e+z)3ͺ=Ed,2lksUv7O]WE9gfYݫX H 89'*:/~Iʥ/]1i Feԇ nNT5+J*Z:]:Dt,}ND9mEpfE\LEAf'0v"0ik!X#p?+S0!?BX5NØjI;}Vntà FŘd1 9#+0DF0슳ڡ(4eըB̢lfQ?*Aw݌):p ~LuI|ḣa} 2<Q>'6\qZ I73S*GQO,ǘc"8Ylk0^ʣI柟akEXI2Zƍ"b؊ڪRvFAAVx>-X#`5(rϸW_G/ baYv1+ӬLb+0w\ 03"?#%dud}u#8iL hw\K;FoWܕwOwE]xfkʫ?3nwQoݧ{AtWtgȮtm0$*. v!Noyvs+ll;_A[kk5ߪ>*/ſߩ029 _ٚj@ Iq$t"4Yi)euC>SQY<%kKb.tOmIe CrVtNZVsON˚ 4)gI7Iin@)f325IKIK:hsռr'I!]}=Tdu5C+J"A^LX1ŜZ?LAr&EAp$'p| PLD#Sqc0wt(>$2Ld(<&`,F"Q a-M#d Gd,4xmBU6Fa p(:ALP`r%щH,:@m8xEhhd4MqXtx?G)%L(A NͱQѠRvF‘qdxEd_\ rlJ`w!$+b2tH0$6 x E817 ǂ7Nș& AfÿCTO<LbA7GC1 a848 |^#vqv- @a¸H+x> /FontDescriptor 19 0 R /CIDToGIDMap /Identity /W [0 [600 513 402 640 602 644 318 640 527 640 636 560 948 640 644 592 320 370 320 ] ] >> endobj 22 0 obj << /Length 490 >> stream /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> def /CMapName /Adobe-Identity-UCS def /CMapType 2 def 1 begincodespacerange <0000> endcodespacerange 2 beginbfrange <0000> <0000> <0000> <0001> <0012> [<0073> <0074> <0064> <006F> <0075> <002E> <0067> <007A> <0062> <0032> <0063> <006D> <0070> <006E> <0065> <0069> <0066> <006C> ] endbfrange endcmap CMapName currentdict /CMap defineresource pop end end endstream endobj 9 0 obj << /Type /Font /Subtype /Type0 /BaseFont /DejaVuSerif-Italic /Encoding /Identity-H /DescendantFonts [21 0 R] /ToUnicode 22 0 R>> endobj 23 0 obj << /Length 3 >> stream endstream endobj 25 0 obj << /Type /FontDescriptor /FontName /QZAAAA+DejaVuSerif-Bold /Flags 4 /FontBBox [-835.937500 -389.160156 1854.00390 1145.01953 ] /ItalicAngle 0 /Ascent 938.964843 /Descent -235.839843 /CapHeight 938.964843 /StemV 43.9453125 /FontFile2 26 0 R /CIDSet 29 0 R >> endobj 26 0 obj << /Length1 13608 /Length 30 0 R /Filter /FlateDecode >> stream xZ tTչ#1T $! ID($$#df̜ 3ɑE@aY,k^kjr-UZj9gϓ.{ﺉg#]HQ[9a> HޝOw* .Oo܊u\l\y\wT_068ku nW"zU5Fuh\|.;!TaVyAH<:uq|F8EO/P?:$O k:x,8#`eH+,-(-,HTuEyO~NG;% ť9Ueyڒ/K^_W2Y}μ X|_bƯz1qhs޽6qsgJ8#I_iGkUgnlI$tx-DxSMp^{)ۈ/$G6o4#7MI~&1zAD׃mU`[Ɇ:\ aӖUUq0HVfřպ,ܳWΫ/ܵ-w][K9/YΟ,wiݽ Oa# -#d(O.T~^\WM.JA5ZoJCGͷ\^շvSASƀ|N7Eq >`aEe7UL.r9?4N'U[=aQܭi '0 IJU)Ϫ Vxfuf|k_ݛ7vvݑD>S/[w-v1i}4k|YgiM#5gPBzbu=C\|i$8$/HϫKGԆF~<,c*JUbx'WWN̈́SVS4+.̖OI\97 9\MD!·Ǹg'd=UkQ5$]EU^A|xxҿ$amH܇n&Km|\:J9+"}[c|Y4-MDPU< B<``x?~2{'.|}1d̯pjGO?m;vyuuonX?dVΪꃡ.0G{O H,15'ܯlݍm{NHCCeVlL#QE] h B`kDŰ"!'VZr^1,oY| Ç/~~G_=|U->*$: _nIūN`y)h">iRQS?ݹsaxՂź9Ln waICtw)HPR)t89EC,_?PXO^cbrwh@ Ü:sY9,AIjŦ=0 ?.w9&(}^- HJ%,YI4h>ÉϽ֬'ǧ_E?]a:xV44D\`߫L)9sq{ !C8d,.&%!O_p~EcTl\4BȼMsѤXSWJCU_UjEt̝KTܶ`{n㦋{;wco/-=턡_c{ٍz'HB $6^+I=8է "[Mmjʝ+r^zrdKe^;_r̭?k)AT(, E oA)t>` ЀKZidcnn0\SX|e^ pQ2&TPTxy?^Hq7}uUb>g;?Z$%^hd'cdžAX0N=!#b+'o߇oO p6qGq$-0 ^/7|yuܠ> #? 2eцi`"89Z7AK?W7/^5}<; MgqxjB]l lvB6sb`# e25T'oS=tǐV.9~W_ʞi˙J؛5?^Ix ]2IaE.A^ItBM=y-&v|I쳻߾!}BD:`1T Y@QHjQ?҉ڸ~@V[Iu3xFbOWȪ<2WDcL!utDž۾W~#c-\rgm=~Wy.ؼy<,$`t9xF I(&*+bȀŒC*47'v!.xn|dn D؏E< \"BEg Z=D$$G ,M'FͦjڡwBmsxסGP_.[䧾uO*/**O>O:5*Ӄ7e!>5+Ӊ-53sv:9@xR %ΓxT"+X'|%QXM8E_OXiH8R[2~j'7h>ToBK6-֏~uko@k4/gFhj~(hNnT=fHZU?Z6Z}95%rT@{-^}_`E!=y]M"ȺZgPwǨ :x;~ e[}{<1TV=zO]v]?Wfk ZA MȳywC#ykЭdcW?7Rq+x[sH;Z lZgk-ȍc|T-bql}5;ќ)WR.Dj$b5/4D5Fc9[Zp7[a}[klE<~Qw3[C8;[_[TI'f|S|l=]u!kPQI(P z4䆚ϣ:4 ~ 5M E/w VF_SJoάOPfX(nu^JÚK>@|@y=MbX{}1~{:_7kF,751*ۅY'xj 8BBwE{Ġٚ:~qU#P|)>MyWNuS(P_ua=yS-D~1 ӬsYScXx6G41!;aAJC-Qt,ܠYrQ|2@15!<{%GPh>eD4X7 ua.eg-K<ϼ[m8X Pd6xiM 1 Id7ZpS~ M&J&#䦲=Tc?tN';" d֢!lf&s%y6XzRu;5J%w]%"A<}~E ,ӾbdyjgOA}~ɊFt(z2bd"RŁKZ䡚x2 tۋdPEݤ\D?צBh, I\=@R# T`N4dv;!+*=_6F_,Kٝ{'nYڔܱbqH1<&A0*]E+:EgVz~GEgEnN)U*~ٜ1g$.Qdf;1L,bJ_ Q볭a9c}ћT2Q96d+"WNI;g=9;醫fmq1;~%&mRx^;7Ob/rքR&栔vʻv-mbtDt5Y"2*pIs#(:a?-5[+3Ԭ5o3GQO5g H}D8M^.:ڬhk6}@Q|wlB z9DQꨅĞfzH]Lwl,dR|Aߝ[;aIccIIR)uQ6*#^$(Qi"q#7SIFǘ$eGg,t$%RLSJ?ޜQh61*<+dxH" RM SFl+ !P"`dM>KGʢ۔J,hTFkG -4ۙ]KƱӖ,ۿڭ<eN:+`45(CLM&n+OAJrD./etiHͫu'0ɄgdΜHS i?BfT~a2O0|>Kx@ỷz}<;fhaWޤЗq}&y'zO #ā5xYSP>-D\9ε?_,#*#]>^r)("Aj@Vo p :>&ćH=10)nPP|{r` AIB( ..)<+~A!sň>^|g;s~;#bz$AH[3qg3\ g>y3syо},1eݒϿ8|kOz +S\FC5#4i 0q# 2#tXxf`{< d ҉A$CH+ wdfnD%2a#k0NX**Za8~q1oee B if)Jns{Nw(ʟ;>i|8,yyffcX9,_mjwq'V,Ttlh8nέb'|}mk*\T n7ȟ?I)cAIșee;1./aSGǦ~شh~\ٿ{؉]{`hv E;&3v12 4Jggsgz TL[[G&;~Wdw-v%%%ԋs˶~xvo5<rqCҚ%;]̌KK~uoj d\0/dBrb2[m[m.*(Vntc>Ӵ잝=esv;H0 ]vNvd1⹂%ɒD(It_[`s[/3yspMfx\^@:Jvb.PPNMΙ_~eSSSRR$gp Tg'(gKσ3l/^KFșyW lG`*OvWUW=Vh 0+Cw}%b6m[okbK/C8=*ɣmgwtϴi x/QU;ħ# ctdE- ]WV(xv~.A &_4|iЗn֔۲V7е{ /)m__Rzb8XВwv;{=K+UGnf; \pCP$zϗNpkgE%>LײEW݌<0~7MT,?ZGp 4W.I"*YEʷ>\J˭u_z֭>{1Hz{|NS'pْ`L `|Ƥ Z-.:.43 ˗U Bh>shv/TW!ez.KFYL.QS -!+_DHNd:dUW=u4i&OmFg YL,[Sp#XJ  T{>|;}Oq|g+ncV*s4>o1cUr+fo% Y#rTdLB/ ?=xodsTQC{ $q)=bSZ:κWJ\#̇1C|JC3<0҃|ObNNnY,+*b53a()+ 3:#(DC"ϑ밍`3|^>+V]#*~Pۑ/ Mͅ@j1JJ.mŸu[Zܱn1o6Ƴ vbo]ukjp~\K__g1εt5r>?q]ug P2#dxnj4me9/_~¿%syBdND'o|XifaOʙ|`ՓLt*{ɐǞ]>Lu n͍Kk߭;/ wn/[_oq%..jϛ3{ºU}V-T?/=*3q,a !%`<|jn~Vd >${: T|ZOA&8 >LBS#'p$Qf%~sE?u#~g4@l.x4JkUUz>o$?9 sҗHie@QQ{IqYaHaKvR6J)i40SnZ2oÙo:#لE8CƌI.)\٤FnH(6e{?y2pG? Lȵ1'Ox)D0G^.9TSdž] qnOc߶}iH-w9''/l)~i(}D#XuD#LW"똞69`f QZ=}?Mf>EI R[g'nZ%JFƔsidcq |W$ŭ?Ckb􇝰aeNo_c6^Yg?vVB!&PJ 9D/<ԣ,,T@x /O9?o6A&ƣ.6ӵ!/:yp ~Ru &O?yF&M{JSm wlZx'\zfVݨ`|V j R ;k-?:/ois &>$ H)DI&581+n'cKJzKY|cځeTF H.U5C!)|mbxIkN.BHl |K |K 2?Zш$E`^੢2D CgUB5˼3K ēġ/x 9$9QJ.%9tșDKɉl$$T"rB$rg}e']W- ܍3)#YqY9y ?sJ- p璚GC >-/v)G;nfn?ؿ1/} d@VfbގuA*亷1c1x[Gy#J3f;4~p-]OCD,e#-$sQ錴9S0NK Os24d00NS.R]FeBx?3 I,KZJNzRxAmE+*UkCUҪR5|'_E(sD2>~qF(L!_~|foaf]ke2t#nYbnxBͦ$ F2IXNtG$~tš'ΆC+Jv=U2%Gz/[ZSϘʱ}UyMOf{hV~3Ngהed< NE%޻ OqʌL;oN\PZ[.lqQ¸/ή5w.HO+/Z5_˺'^M* 1W꼾]ڪ-KjC*4ѶMȣHzdfZIkqz{ wDOͅ -sb2˒P'\pbepk f;?&#f<BR%f *%  oN"m /ɷ:(F$ wr(E裼d] dg`h _at.C~,s*9ЧzT0#7I &m@ggxVn|a0;|%Y i<#Bz".}_: ˔!(;*;% O/+?-c;@ie[c?5fT(((m^K+[@^8Z3zF_#?y1o:uΑ#+>LC5 y b[n-#b[~-Ggh41FmMؾ͜L$㑔 ƨr'mn¬fP,.Rhm{ŶЎE)[=eu :}=L'Ǣ&$Q,Q!r!qzdA> #ʄ 4 Ъ,*1>0 ʂ^5rlh)P|Yرiyw欆_CJhـB5#5z:6'aLе8滀=R[|c&;cڴ\->gpdj1U44:28/Y͙㔜PgZ_`5&`uhI+VRy+9 @,\eٳ~j \"3՜ku9ٹԮuUfJPpOtisrki0w8<ԍ@9䘀j9Se;9x]!AA] 7@.c @3')/EH^aY@1VC fh581́d"bA9 qï aiLTZѷACKFO6iМ-}{P)H6̊i;?ǯfg=BzмRB<UmuFM! fS\G%1QcXdR By;5B&7\ß.?>M5Qv5ؤ9$Fr0}bzIMM>D]p"\{ jd9#Q6C =vJ:p]D{ɴI;L%[ us%տ ,_=z bR(ᨊꧠvR"gYh.+^oDr%夠&Aj޹:~*j2:쨂PG5յP@SRgW)]BZP6 {_#z0k-EٕVYBcQEG)+CV([.J^D|jCE7Gq?'w=x*% Y K뚑w|rGV4̊ȵXLjq^!? kVxY]m >\!w {Dtap*&6 ARf~qHZB}i潊5B!z/pimXX]gĮ|v{*+0'EܟmB, ~9Fx=>Bm.YGHn=.q8rDI9CǛ/DZu\)3qq՜ CǨqS\ "L౳.H*qqa#Nm<>ΔŚ="}WF٢J V1 R1rnBzTȟYB;!p>on0zJPsvklŝ#/: endstream endobj 36 0 obj 8848 endobj 33 0 obj << /Type /Font /Subtype /CIDFontType2 /BaseFont /DejaVuSerif /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> /FontDescriptor 31 0 R /CIDToGIDMap /Identity /W [0 [600 636 636 636 338 636 636 948 606 640 513 640 318 722 320 640 644 592 560 602 596 478 565 402 644 390 820 673 667 395 875 390 644 802 685 856 640 1028 320 370 747 765 527 318 390 390 735 564 318 565 694 500 636 730 753 660 1024 337 337 636 838 838 337 843 872 640 664 712 799 636 275 838 1000 838 ] ] >> endobj 34 0 obj << /Length 875 >> stream /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> def /CMapName /Adobe-Identity-UCS def /CMapType 2 def 1 begincodespacerange <0000> endcodespacerange 2 beginbfrange <0000> <0000> <0000> <0001> <0049> [<0032> <0030> <0033> <002D> <0036> <0031> <006D> <006B> <0064> <0073> <0070> <0009> <0041> <0069> <0067> <006E> <0065> <0063> <006F> <0061> <0072> <0079> <0074> <0075> <005B> <004F> <0050> <0054> <0049> <004E> <005D> <0068> <0044> <0053> <0077> <0062> <0057> <006C> <0066> <004B> <0043> <007A> <002E> <0028> <0029> <0042> <0078> <002C> <0076> <0046> <005F> <0034> <0045> <0052> <0059> <004D> <003A> <002F> <0038> <0023> <003D> <007C> <0055> <0048> <0071> <004C> <0058> <0047> <0035> <0027> <003C> <0040> <003E> ] endbfrange endcmap CMapName currentdict /CMap defineresource pop end end endstream endobj 8 0 obj << /Type /Font /Subtype /Type0 /BaseFont /DejaVuSerif /Encoding /Identity-H /DescendantFonts [33 0 R] /ToUnicode 34 0 R>> endobj 35 0 obj << /Length 10 >> stream endstream endobj 3 0 obj << /Type /Pages /Kids [ 6 0 R 14 0 R ] /Count 2 /ProcSet [/PDF /Text /ImageB /ImageC] >> endobj xref 0 37 0000000000 65535 f 0000000015 00000 n 0000000169 00000 n 0000033387 00000 n 0000000218 00000 n 0000000313 00000 n 0000000350 00000 n 0000022317 00000 n 0000033189 00000 n 0000013653 00000 n 0000000691 00000 n 0000003630 00000 n 0000000485 00000 n 0000000671 00000 n 0000003651 00000 n 0000003993 00000 n 0000006992 00000 n 0000003787 00000 n 0000003973 00000 n 0000007013 00000 n 0000007296 00000 n 0000012817 00000 n 0000013111 00000 n 0000013797 00000 n 0000012796 00000 n 0000013850 00000 n 0000014131 00000 n 0000021184 00000 n 0000021586 00000 n 0000022459 00000 n 0000021163 00000 n 0000022515 00000 n 0000022791 00000 n 0000031752 00000 n 0000032262 00000 n 0000033326 00000 n 0000031731 00000 n trailer << /Size 37 /Info 1 0 R /Root 2 0 R >> startxref 33492 %%EOF dssp-4.4.10/libdssp/000077500000000000000000000000001470365501700142215ustar00rootroot00000000000000dssp-4.4.10/libdssp/CMakeLists.txt000066400000000000000000000046661470365501700167750ustar00rootroot00000000000000# Use the version of the parent list file, if any. May need a fix someday. if(NOT CMAKE_PARENT_LIST_FILE) set(PROJECT_VERSION 4.4.8) endif() project(libdssp VERSION ${PROJECT_VERSION}) include(CMakePackageConfigHelpers) # We do not want to write an export file for all our symbols... set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) # Create a revision file, containing the current git version info write_version_header("${CMAKE_CURRENT_SOURCE_DIR}/src" LIB_NAME libdssp) # The DSSP code is in a separate library, optionally to be used by others add_library(dssp) add_library(dssp::dssp ALIAS dssp) target_sources(dssp PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/dssp.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/dssp-io.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/dssp-io.hpp PUBLIC FILE_SET dssp_header TYPE HEADERS BASE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/include FILES include/dssp.hpp ) target_link_libraries(dssp PUBLIC cifpp::cifpp) set_target_properties(dssp PROPERTIES POSITION_INDEPENDENT_CODE ON) target_compile_features(dssp PUBLIC cxx_std_17) target_include_directories(dssp PUBLIC "$" "$" ) # Install rules install(TARGETS dssp EXPORT dssp FILE_SET dssp_header DESTINATION "include") if(MSVC AND BUILD_SHARED_LIBS) install( FILES $ DESTINATION "lib" OPTIONAL) endif() install(EXPORT dssp FILE "dsspTargets.cmake" NAMESPACE dssp:: DESTINATION lib/cmake/dssp ) set(CONFIG_TEMPLATE_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cmake/dsspConfig.cmake.in) configure_package_config_file( ${CONFIG_TEMPLATE_FILE} ${CMAKE_CURRENT_BINARY_DIR}/dssp/dsspConfig.cmake INSTALL_DESTINATION lib/cmake/dssp ) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/dssp/dsspConfig.cmake" DESTINATION lib/cmake/dssp COMPONENT Devel ) set(dssp_MAJOR_VERSION ${CMAKE_PROJECT_VERSION_MAJOR}) set_target_properties(dssp PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION ${dssp_MAJOR_VERSION} INTERFACE_dssp_MAJOR_VERSION ${dssp_MAJOR_VERSION}) set_property(TARGET dssp APPEND PROPERTY COMPATIBLE_INTERFACE_STRING dssp_MAJOR_VERSION ) write_basic_package_version_file( "${CMAKE_CURRENT_BINARY_DIR}/dssp/dsspConfigVersion.cmake" VERSION ${PROJECT_VERSION} COMPATIBILITY AnyNewerVersion ) # set(CIFPP_DATA_DIR "${CMAKE_INSTALL_FULL_DATADIR}/libcifpp") install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/mmcif_pdbx/dssp-extension.dic" DESTINATION share/libcifpp) dssp-4.4.10/libdssp/cmake/000077500000000000000000000000001470365501700153015ustar00rootroot00000000000000dssp-4.4.10/libdssp/cmake/dsspConfig.cmake.in000066400000000000000000000002531470365501700210070ustar00rootroot00000000000000@PACKAGE_INIT@ include(CMakeFindDependencyMacro) find_dependency(cifpp REQUIRED) INCLUDE("${CMAKE_CURRENT_LIST_DIR}/dsspTargets.cmake") check_required_components(dssp) dssp-4.4.10/libdssp/cmake/libdssp.pc.in000066400000000000000000000005021470365501700176670ustar00rootroot00000000000000prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ datalibdir=@datarootdir@/libdssp Name: libdssp Description: C++ library for the assignment of secondary structure in proteins Version: @PACKAGE_VERSION@ Requires.private: libcifpp Libs: -L${libdir} -ldssp Cflags: -I${includedir} -pthread dssp-4.4.10/libdssp/include/000077500000000000000000000000001470365501700156445ustar00rootroot00000000000000dssp-4.4.10/libdssp/include/dssp.hpp000066400000000000000000000155161470365501700173360ustar00rootroot00000000000000/*- * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2020 NKI/AVL, Netherlands Cancer Institute * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #pragma once /// \file DSSP.hpp /// Calculate DSSP-like secondary structure information. #include #include class dssp { public: struct residue; enum class structure_type : char { Loop = ' ', Alphahelix = 'H', Betabridge = 'B', Strand = 'E', Helix_3 = 'G', Helix_5 = 'I', Helix_PPII = 'P', Turn = 'T', Bend = 'S' }; enum class helix_type { _3_10, alpha, pi, pp }; enum class helix_position_type { None, Start, End, StartAndEnd, Middle }; static constexpr size_t kHistogramSize = 30; struct statistics { struct { uint32_t residues, chains, SS_bridges, intra_chain_SS_bridges, H_bonds; uint32_t H_bonds_in_antiparallel_bridges, H_bonds_in_parallel_bridges; uint32_t H_Bonds_per_distance[11]; } count; double accessible_surface; struct { uint32_t residues_per_alpha_helix[kHistogramSize]; uint32_t parallel_bridges_per_ladder[kHistogramSize]; uint32_t antiparallel_bridges_per_ladder[kHistogramSize]; uint32_t ladders_per_sheet[kHistogramSize]; } histogram; }; enum class chain_break_type { None, NewChain, Gap }; dssp(const cif::datablock &db, int model_nr, int min_poly_proline_stretch_length, bool calculateSurfaceAccessibility); dssp(const cif::mm::structure &s, int min_poly_proline_stretch_length, bool calculateSurfaceAccessibility); ~dssp(); dssp(const dssp &) = delete; dssp &operator=(const dssp &) = delete; statistics get_statistics() const; class iterator; using res_iterator = typename std::vector::iterator; class residue_info { public: friend class iterator; residue_info() = default; residue_info(const residue_info &rhs) = default; residue_info &operator=(const residue_info &rhs) = default; explicit operator bool() const { return not empty(); } bool empty() const { return m_impl == nullptr; } std::string asym_id() const; int seq_id() const; std::string alt_id() const; std::string compound_id() const; char compound_letter() const; // Single letter for residue compound type, or 'X' in case it is not known std::string auth_asym_id() const; int auth_seq_id() const; std::string pdb_strand_id() const; int pdb_seq_num() const; std::string pdb_ins_code() const; std::optional alpha() const; std::optional kappa() const; std::optional phi() const; std::optional psi() const; std::optional tco() const; std::optional omega() const; bool is_pre_pro() const; bool is_cis() const { return std::abs(omega().value_or(360)) < 30.0f; } float chiral_volume() const; std::size_t nr_of_chis() const; float chi(std::size_t index) const; std::tuple ca_location() const; chain_break_type chain_break() const; /// \brief the internal number in DSSP int nr() const; structure_type type() const; int ssBridgeNr() const; helix_position_type helix(helix_type helixType) const; bool is_alpha_helix_end_before_start() const; bool bend() const; double accessibility() const; /// \brief returns resinfo, ladder and parallel std::tuple bridge_partner(int i) const; int sheet() const; int strand() const; /// \brief return resinfo and the energy of the bond std::tuple acceptor(int i) const; std::tuple donor(int i) const; /// \brief Simple compare equals bool operator==(const residue_info &rhs) const { return m_impl == rhs.m_impl; } /// \brief Returns \result true if there is a bond between two residues friend bool test_bond(residue_info const &a, residue_info const &b); private: residue_info(residue *res) : m_impl(res) { } residue *m_impl = nullptr; }; class iterator { public: using iterator_category = std::bidirectional_iterator_tag; using value_type = residue_info; using difference_type = std::ptrdiff_t; using pointer = value_type *; using reference = value_type &; iterator(const iterator &i) = default; iterator(residue *res); iterator &operator=(const iterator &i) = default; reference operator*() { return m_current; } pointer operator->() { return &m_current; } iterator &operator++(); iterator operator++(int) { auto tmp(*this); this->operator++(); return tmp; } iterator &operator--(); iterator operator--(int) { auto tmp(*this); this->operator--(); return tmp; } bool operator==(const iterator &rhs) const { return m_current.m_impl == rhs.m_current.m_impl; } bool operator!=(const iterator &rhs) const { return m_current.m_impl != rhs.m_current.m_impl; } private: residue_info m_current; }; using value_type = residue_info; // To access residue info by key, i.e. LabelAsymID and LabelSeqID using key_type = std::tuple; iterator begin() const; iterator end() const; residue_info operator[](const key_type &key) const; bool empty() const { return begin() == end(); } // -------------------------------------------------------------------- // Writing out the data, either in legacy format... void write_legacy_output(std::ostream& os) const; // ... or as annotation in the cif::datablock void annotate(cif::datablock &db, bool writeOther, bool writeDSSPCategories) const; // convenience method, when creating old style DSSP files enum class pdb_record_type { HEADER, COMPND, SOURCE, AUTHOR }; std::string get_pdb_header_line(pdb_record_type pdb_record) const; private: struct DSSP_impl *m_impl; }; dssp-4.4.10/libdssp/mmcif_pdbx/000077500000000000000000000000001470365501700163315ustar00rootroot00000000000000dssp-4.4.10/libdssp/mmcif_pdbx/dssp-extension.dic000066400000000000000000001723611470365501700220070ustar00rootroot00000000000000## File: dssp-extension.dic ## Date: 30-May-2023 ## # Items containing Secondary Structure information as written by e.g. DSSP # # data_mmcif_pdbx-def-dssp.dic ######################################## ## Category dssp_struct_bridge_pairs ## ######################################## save_dssp_struct_bridge_pairs # _category.description 'dssp_struct_bridge_pairs describes bridge pairs as assigned by DSSP.' _category.id dssp_struct_bridge_pairs _category.mandatory_code no # _category_key.name '_dssp_struct_bridge_pairs.id' loop_ _category_group.id 'inclusive_group' 'struct_group' # loop_ _category_examples.detail _category_examples.case # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; Example taken from 1cbs, first bridge pair ; ; _dssp_struct_bridge_pairs.id 2 _dssp_struct_bridge_pairs.label_comp_id ASN _dssp_struct_bridge_pairs.label_seq_id 2 _dssp_struct_bridge_pairs.label_asym_id A _dssp_struct_bridge_pairs.auth_seq_id 2 _dssp_struct_bridge_pairs.auth_asym_id A _dssp_struct_bridge_pairs.pdbx_PDB_ins_code ? _dssp_struct_bridge_pairs.acceptor_1_label_comp_id PHE _dssp_struct_bridge_pairs.acceptor_1_label_seq_id 3 _dssp_struct_bridge_pairs.acceptor_1_label_asym_id A _dssp_struct_bridge_pairs.acceptor_1_auth_seq_id 3 _dssp_struct_bridge_pairs.acceptor_1_auth_asym_id A _dssp_struct_bridge_pairs.acceptor_1_pdbx_PDB_ins_code ? _dssp_struct_bridge_pairs.acceptor_1_energy -0.1 _dssp_struct_bridge_pairs.acceptor_2_label_comp_id SER _dssp_struct_bridge_pairs.acceptor_2_label_seq_id 4 _dssp_struct_bridge_pairs.acceptor_2_label_asym_id A _dssp_struct_bridge_pairs.acceptor_2_auth_seq_id 4 _dssp_struct_bridge_pairs.acceptor_2_auth_asym_id A _dssp_struct_bridge_pairs.acceptor_2_pdbx_PDB_ins_code ? _dssp_struct_bridge_pairs.acceptor_2_energy -0.1 _dssp_struct_bridge_pairs.donor_1_label_comp_id ASN _dssp_struct_bridge_pairs.donor_1_label_seq_id 91 _dssp_struct_bridge_pairs.donor_1_label_asym_id A _dssp_struct_bridge_pairs.donor_1_auth_seq_id 91 _dssp_struct_bridge_pairs.donor_1_auth_asym_id A _dssp_struct_bridge_pairs.donor_1_pdbx_PDB_ins_code ? _dssp_struct_bridge_pairs.donor_1_energy -0.0 _dssp_struct_bridge_pairs.donor_2_label_comp_id GLU _dssp_struct_bridge_pairs.donor_2_label_seq_id 46 _dssp_struct_bridge_pairs.donor_2_label_asym_id A _dssp_struct_bridge_pairs.donor_2_auth_seq_id 46 _dssp_struct_bridge_pairs.donor_2_auth_asym_id A _dssp_struct_bridge_pairs.donor_2_pdbx_PDB_ins_code ? _dssp_struct_bridge_pairs.donor_2_energy -0.0 ; save_ # save__dssp_struct_bridge_pairs.id _item.description ; The value of _dssp_struct_bridge_pairs.id must uniquely identify a record in the dssp_struct_bridge_pairs list. ; _item.name '_dssp_struct_bridge_pairs.id' _item.category_id dssp_struct_bridge_pairs _item.mandatory_code yes _item_type.code code save_ save__dssp_struct_bridge_pairs.label_comp_id _item.description ; A component of the identifier for this monomer. This data item is a pointer to _chem_comp.id in the CHEM_COMP category. ; _item.name '_dssp_struct_bridge_pairs.label_comp_id' _item.category_id dssp_struct_bridge_pairs _item.mandatory_code yes _item_type.code ucode save_ save__dssp_struct_bridge_pairs.label_seq_id _item.description ; A component of the identifier for this monomer. ; _item.name '_dssp_struct_bridge_pairs.label_seq_id' _item.category_id dssp_struct_bridge_pairs _item.mandatory_code yes _item_type.code int save_ save__dssp_struct_bridge_pairs.label_asym_id _item.description ; A component of the identifier for this monomer ; _item.name '_dssp_struct_bridge_pairs.label_asym_id' _item.category_id dssp_struct_bridge_pairs _item.mandatory_code yes _item_type.code code save_ save__dssp_struct_bridge_pairs.auth_seq_id _item.description ; A component of the identifier for this monomer ; _item.name '_dssp_struct_bridge_pairs.auth_seq_id' _item.category_id dssp_struct_bridge_pairs _item.mandatory_code no _item_type.code int save_ save__dssp_struct_bridge_pairs.auth_asym_id _item.description ; A component of the identifier for this monomer ; _item.name '_dssp_struct_bridge_pairs.auth_asym_id' _item.category_id dssp_struct_bridge_pairs _item.mandatory_code no _item_type.code code save_ save__dssp_struct_bridge_pairs.pdbx_PDB_ins_code _item.description ; A component of the identifier for this monomer ; _item.name '_dssp_struct_bridge_pairs.pdbx_PDB_ins_code' _item.category_id dssp_struct_bridge_pairs _item.mandatory_code no _item_type.code code save_ save__dssp_struct_bridge_pairs.acceptor_1_label_comp_id _item.description ; A component of the identifier of the first residue that forms a bridge pair with this monomer where this monomer is the donor. ; _item.name '_dssp_struct_bridge_pairs.acceptor_1_label_comp_id' _item.category_id dssp_struct_bridge_pairs _item.mandatory_code no _item_type.code ucode save_ save__dssp_struct_bridge_pairs.acceptor_1_label_seq_id _item.description ; A component of the identifier of the first residue that forms a bridge pair with this monomer where this monomer is the donor. ; _item.name '_dssp_struct_bridge_pairs.acceptor_1_label_seq_id' _item.category_id dssp_struct_bridge_pairs _item.mandatory_code no _item_type.code int save_ save__dssp_struct_bridge_pairs.acceptor_1_label_asym_id _item.description ; A component of the identifier of the first residue that forms a bridge pair with this monomer where this monomer is the donor. ; _item.name '_dssp_struct_bridge_pairs.acceptor_1_label_asym_id' _item.category_id dssp_struct_bridge_pairs _item.mandatory_code no _item_type.code code save_ save__dssp_struct_bridge_pairs.acceptor_1_auth_seq_id _item.description ; A component of the identifier of the first residue that forms a bridge pair with this monomer where this monomer is the donor. ; _item.name '_dssp_struct_bridge_pairs.acceptor_1_auth_seq_id' _item.category_id dssp_struct_bridge_pairs _item.mandatory_code no _item_type.code int save_ save__dssp_struct_bridge_pairs.acceptor_1_auth_asym_id _item.description ; A component of the identifier of the first residue that forms a bridge pair with this monomer where this monomer is the donor. ; _item.name '_dssp_struct_bridge_pairs.acceptor_1_auth_asym_id' _item.category_id dssp_struct_bridge_pairs _item.mandatory_code no _item_type.code code save_ save__dssp_struct_bridge_pairs.acceptor_1_pdbx_PDB_ins_code _item.description ; A component of the identifier of the first residue that forms a bridge pair with this monomer where this monomer is the donor. ; _item.name '_dssp_struct_bridge_pairs.acceptor_1_pdbx_PDB_ins_code' _item.category_id dssp_struct_bridge_pairs _item.mandatory_code no _item_type.code code save_ save__dssp_struct_bridge_pairs.acceptor_1_energy _item.description ; The calculated energy for the H-bond between this residue and the first acceptor. ; _item.name '_dssp_struct_bridge_pairs.acceptor_1_energy' _item.category_id dssp_struct_bridge_pairs _item.mandatory_code no _item_type.code float save_ save__dssp_struct_bridge_pairs.acceptor_2_label_comp_id _item.description ; A component of the identifier of the second residue that forms a bridge pair with this monomer where this monomer is the donor. ; _item.name '_dssp_struct_bridge_pairs.acceptor_2_label_comp_id' _item.category_id dssp_struct_bridge_pairs _item.mandatory_code no _item_type.code ucode save_ save__dssp_struct_bridge_pairs.acceptor_2_label_seq_id _item.description ; A component of the identifier of the second residue that forms a bridge pair with this monomer where this monomer is the donor. ; _item.name '_dssp_struct_bridge_pairs.acceptor_2_label_seq_id' _item.category_id dssp_struct_bridge_pairs _item.mandatory_code no _item_type.code int save_ save__dssp_struct_bridge_pairs.acceptor_2_label_asym_id _item.description ; A component of the identifier of the second residue that forms a bridge pair with this monomer where this monomer is the donor. ; _item.name '_dssp_struct_bridge_pairs.acceptor_2_label_asym_id' _item.category_id dssp_struct_bridge_pairs _item.mandatory_code no _item_type.code code save_ save__dssp_struct_bridge_pairs.acceptor_2_auth_seq_id _item.description ; A component of the identifier of the second residue that forms a bridge pair with this monomer where this monomer is the donor. ; _item.name '_dssp_struct_bridge_pairs.acceptor_2_auth_seq_id' _item.category_id dssp_struct_bridge_pairs _item.mandatory_code no _item_type.code int save_ save__dssp_struct_bridge_pairs.acceptor_2_auth_asym_id _item.description ; A component of the identifier of the second residue that forms a bridge pair with this monomer where this monomer is the donor. ; _item.name '_dssp_struct_bridge_pairs.acceptor_2_auth_asym_id' _item.category_id dssp_struct_bridge_pairs _item.mandatory_code no _item_type.code code save_ save__dssp_struct_bridge_pairs.acceptor_2_pdbx_PDB_ins_code _item.description ; A component of the identifier of the second residue that forms a bridge pair with this monomer where this monomer is the donor. ; _item.name '_dssp_struct_bridge_pairs.acceptor_2_pdbx_PDB_ins_code' _item.category_id dssp_struct_bridge_pairs _item.mandatory_code no _item_type.code code save_ save__dssp_struct_bridge_pairs.acceptor_2_energy _item.description ; The calculated energy for the H-bond between this residue and the second acceptor. ; _item.name '_dssp_struct_bridge_pairs.acceptor_2_energy' _item.category_id dssp_struct_bridge_pairs _item.mandatory_code no _item_type.code float save_ save__dssp_struct_bridge_pairs.donor_1_label_comp_id _item.description ; A component of the identifier of the first residue that forms a bridge pair with this monomer where this monomer is the acceptor. ; _item.name '_dssp_struct_bridge_pairs.donor_1_label_comp_id' _item.category_id dssp_struct_bridge_pairs _item.mandatory_code no _item_type.code ucode save_ save__dssp_struct_bridge_pairs.donor_1_label_seq_id _item.description ; A component of the identifier of the first residue that forms a bridge pair with this monomer where this monomer is the acceptor. ; _item.name '_dssp_struct_bridge_pairs.donor_1_label_seq_id' _item.category_id dssp_struct_bridge_pairs _item.mandatory_code no _item_type.code int save_ save__dssp_struct_bridge_pairs.donor_1_label_asym_id _item.description ; A component of the identifier of the first residue that forms a bridge pair with this monomer where this monomer is the acceptor. ; _item.name '_dssp_struct_bridge_pairs.donor_1_label_asym_id' _item.category_id dssp_struct_bridge_pairs _item.mandatory_code no _item_type.code code save_ save__dssp_struct_bridge_pairs.donor_1_auth_seq_id _item.description ; A component of the identifier of the first residue that forms a bridge pair with this monomer where this monomer is the acceptor. ; _item.name '_dssp_struct_bridge_pairs.donor_1_auth_seq_id' _item.category_id dssp_struct_bridge_pairs _item.mandatory_code no _item_type.code int save_ save__dssp_struct_bridge_pairs.donor_1_auth_asym_id _item.description ; A component of the identifier of the first residue that forms a bridge pair with this monomer where this monomer is the acceptor. ; _item.name '_dssp_struct_bridge_pairs.donor_1_auth_asym_id' _item.category_id dssp_struct_bridge_pairs _item.mandatory_code no _item_type.code code save_ save__dssp_struct_bridge_pairs.donor_1_pdbx_PDB_ins_code _item.description ; A component of the identifier of the first residue that forms a bridge pair with this monomer where this monomer is the acceptor. ; _item.name '_dssp_struct_bridge_pairs.donor_1_pdbx_PDB_ins_code' _item.category_id dssp_struct_bridge_pairs _item.mandatory_code no _item_type.code code save_ save__dssp_struct_bridge_pairs.donor_1_energy _item.description ; The calculated energy for the H-bond between this residue and the first donor. ; _item.name '_dssp_struct_bridge_pairs.donor_1_energy' _item.category_id dssp_struct_bridge_pairs _item.mandatory_code no _item_type.code float save_ save__dssp_struct_bridge_pairs.donor_2_label_comp_id _item.description ; A component of the identifier of the second residue that forms a bridge pair with this monomer where this monomer is the acceptor. ; _item.name '_dssp_struct_bridge_pairs.donor_2_label_comp_id' _item.category_id dssp_struct_bridge_pairs _item.mandatory_code no _item_type.code ucode save_ save__dssp_struct_bridge_pairs.donor_2_label_seq_id _item.description ; A component of the identifier of the second residue that forms a bridge pair with this monomer where this monomer is the acceptor. ; _item.name '_dssp_struct_bridge_pairs.donor_2_label_seq_id' _item.category_id dssp_struct_bridge_pairs _item.mandatory_code no _item_type.code int save_ save__dssp_struct_bridge_pairs.donor_2_label_asym_id _item.description ; A component of the identifier of the second residue that forms a bridge pair with this monomer where this monomer is the acceptor. ; _item.name '_dssp_struct_bridge_pairs.donor_2_label_asym_id' _item.category_id dssp_struct_bridge_pairs _item.mandatory_code no _item_type.code code save_ save__dssp_struct_bridge_pairs.donor_2_auth_seq_id _item.description ; A component of the identifier of the second residue that forms a bridge pair with this monomer where this monomer is the acceptor. ; _item.name '_dssp_struct_bridge_pairs.donor_2_auth_seq_id' _item.category_id dssp_struct_bridge_pairs _item.mandatory_code no _item_type.code int save_ save__dssp_struct_bridge_pairs.donor_2_auth_asym_id _item.description ; A component of the identifier of the second residue that forms a bridge pair with this monomer where this monomer is the acceptor. ; _item.name '_dssp_struct_bridge_pairs.donor_2_auth_asym_id' _item.category_id dssp_struct_bridge_pairs _item.mandatory_code no _item_type.code code save_ save__dssp_struct_bridge_pairs.donor_2_pdbx_PDB_ins_code _item.description ; A component of the identifier of the second residue that forms a bridge pair with this monomer where this monomer is the acceptor. ; _item.name '_dssp_struct_bridge_pairs.donor_2_pdbx_PDB_ins_code' _item.category_id dssp_struct_bridge_pairs _item.mandatory_code no _item_type.code code save_ save__dssp_struct_bridge_pairs.donor_2_energy _item.description ; The calculated energy for the H-bond between this residue and the second donor. ; _item.name '_dssp_struct_bridge_pairs.donor_2_energy' _item.category_id dssp_struct_bridge_pairs _item.mandatory_code no _item_type.code float save_ ######################################## ## Category dssp_struct_ladder ## ######################################## save_dssp_struct_ladder # _category.description 'dssp_struct_ladder describes ladders as assigned by DSSP.' _category.id dssp_struct_ladder _category.mandatory_code no # _category_key.name '_dssp_struct_ladder.id' loop_ _category_group.id 'inclusive_group' 'struct_group' # loop_ _category_examples.detail _category_examples.case # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; Example taken from 1cbs, first ladder ; ; _dssp_struct_ladder.id A _dssp_struct_ladder.sheet_id A _dssp_struct_ladder.range_id_1 A _dssp_struct_ladder.range_id_2 B _dssp_struct_ladder.type anti-parallel _dssp_struct_ladder.beg_1_label_comp_id GLY _dssp_struct_ladder.beg_1_label_asym_id A _dssp_struct_ladder.beg_1_label_seq_id 5 _dssp_struct_ladder.pdbx_beg_1_PDB_ins_code ? _dssp_struct_ladder.end_1_label_comp_id TRP _dssp_struct_ladder.end_1_label_asym_id A _dssp_struct_ladder.end_1_label_seq_id 7 _dssp_struct_ladder.pdbx_end_1_PDB_ins_code ? _dssp_struct_ladder.beg_1_auth_comp_id GLY _dssp_struct_ladder.beg_1_auth_asym_id A _dssp_struct_ladder.beg_1_auth_seq_id 5 _dssp_struct_ladder.end_1_auth_comp_id TRP _dssp_struct_ladder.end_1_auth_asym_id A _dssp_struct_ladder.end_1_auth_seq_id 7 _dssp_struct_ladder.beg_2_label_comp_id ILE _dssp_struct_ladder.beg_2_label_asym_id A _dssp_struct_ladder.beg_2_label_seq_id 43 _dssp_struct_ladder.pdbx_beg_2_PDB_ins_code ? _dssp_struct_ladder.end_2_label_comp_id VAL _dssp_struct_ladder.end_2_label_asym_id A _dssp_struct_ladder.end_2_label_seq_id 41 _dssp_struct_ladder.pdbx_end_2_PDB_ins_code ? _dssp_struct_ladder.beg_2_auth_comp_id ILE _dssp_struct_ladder.beg_2_auth_asym_id A _dssp_struct_ladder.beg_2_auth_seq_id 43 _dssp_struct_ladder.end_2_auth_comp_id VAL _dssp_struct_ladder.end_2_auth_asym_id A _dssp_struct_ladder.end_2_auth_seq_id 41 ; save_ save__dssp_struct_ladder.id _item.description ; The value of _dssp_struct_ladder.id must uniquely identify a record in the dssp_struct_ladder list. ; _item.name '_dssp_struct_ladder.id' _item.category_id dssp_struct_ladder _item.mandatory_code yes _item_type.code code save_ save__dssp_struct_ladder.sheet_id _item.description ; This data item is a pointer to _struct_sheet.id in the STRUCT_SHEET category. ; _item.name '_dssp_struct_ladder.sheet_id' _item.category_id dssp_struct_ladder _item.mandatory_code yes _item_type.code code save_ save__dssp_struct_ladder.range_id_1 _item.description ; This data item is a pointer to _struct_sheet_range.id in the STRUCT_SHEET_RANGE category. ; _item.name '_dssp_struct_ladder.range_id_1' _item.category_id dssp_struct_ladder _item.mandatory_code yes _item_type.code code save_ save__dssp_struct_ladder.range_id_2 _item.description ; This data item is a pointer to _struct_sheet_range.id in the STRUCT_SHEET_RANGE category. ; _item.name '_dssp_struct_ladder.range_id_2' _item.category_id dssp_struct_ladder _item.mandatory_code yes _item_type.code code save_ save__dssp_struct_ladder.type _item.description ; The type of the ladder, be it parallel or anti-parallel ; _item.name '_dssp_struct_ladder.type' _item.category_id dssp_struct_ladder _item.mandatory_code yes _item_type.code code loop_ _item_enumeration.value _item_enumeration.detail parallel 'The strands forming a ladder are oriented parallel' anti-parallel 'The strands forming a ladder are oriented anti-parallel' save_ save__dssp_struct_ladder.beg_1_label_comp_id _item.description ; A component of the identifier for the residue at which the first ladder segment begins. ; _item.name '_dssp_struct_ladder.beg_1_label_comp_id' _item.category_id dssp_struct_ladder _item.mandatory_code yes _item_type.code ucode save_ save__dssp_struct_ladder.beg_1_label_asym_id _item.description ; A component of the identifier for the residue at which the first ladder segment begins. ; _item.name '_dssp_struct_ladder.beg_1_label_asym_id' _item.category_id dssp_struct_ladder _item.mandatory_code yes _item_type.code code save_ save__dssp_struct_ladder.beg_1_label_seq_id _item.description ; A component of the identifier for the residue at which the first ladder segment begins. ; _item.name '_dssp_struct_ladder.beg_1_label_seq_id' _item.category_id dssp_struct_ladder _item.mandatory_code yes _item_type.code int save_ save__dssp_struct_ladder.pdbx_beg_1_PDB_ins_code _item.description ; A component of the identifier for the residue at which the first ladder segment begins. ; _item.name '_dssp_struct_ladder.pdbx_beg_1_PDB_ins_code' _item.category_id dssp_struct_ladder _item.mandatory_code no _item_type.code code save_ save__dssp_struct_ladder.end_1_label_comp_id _item.description ; A component of the identifier for the residue at which the first ladder segment ends. ; _item.name '_dssp_struct_ladder.end_1_label_comp_id' _item.category_id dssp_struct_ladder _item.mandatory_code yes _item_type.code ucode save_ save__dssp_struct_ladder.end_1_label_asym_id _item.description ; A component of the identifier for the residue at which the first ladder segment ends. ; _item.name '_dssp_struct_ladder.end_1_label_asym_id' _item.category_id dssp_struct_ladder _item.mandatory_code yes _item_type.code code save_ save__dssp_struct_ladder.end_1_label_seq_id _item.description ; A component of the identifier for the residue at which the first ladder segment ends. ; _item.name '_dssp_struct_ladder.end_1_label_seq_id' _item.category_id dssp_struct_ladder _item.mandatory_code yes _item_type.code int save_ save__dssp_struct_ladder.pdbx_end_1_PDB_ins_code _item.description ; A component of the identifier for the residue at which the first ladder segment ends. ; _item.name '_dssp_struct_ladder.pdbx_end_1_PDB_ins_code' _item.category_id dssp_struct_ladder _item.mandatory_code no _item_type.code code save_ save__dssp_struct_ladder.beg_1_auth_comp_id _item.description ; A component of the identifier for the residue at which the first ladder segment begins. ; _item.name '_dssp_struct_ladder.beg_1_auth_comp_id' _item.category_id dssp_struct_ladder _item.mandatory_code no _item_type.code ucode save_ save__dssp_struct_ladder.beg_1_auth_asym_id _item.description ; A component of the identifier for the residue at which the first ladder segment begins. ; _item.name '_dssp_struct_ladder.beg_1_auth_asym_id' _item.category_id dssp_struct_ladder _item.mandatory_code no _item_type.code code save_ save__dssp_struct_ladder.beg_1_auth_seq_id _item.description ; A component of the identifier for the residue at which the first ladder segment begins. ; _item.name '_dssp_struct_ladder.beg_1_auth_seq_id' _item.category_id dssp_struct_ladder _item.mandatory_code no _item_type.code int save_ save__dssp_struct_ladder.end_1_auth_comp_id _item.description ; A component of the identifier for the residue at which the first ladder segment ends. ; _item.name '_dssp_struct_ladder.end_1_auth_comp_id' _item.category_id dssp_struct_ladder _item.mandatory_code no _item_type.code ucode save_ save__dssp_struct_ladder.end_1_auth_asym_id _item.description ; A component of the identifier for the residue at which the first ladder segment ends. ; _item.name '_dssp_struct_ladder.end_1_auth_asym_id' _item.category_id dssp_struct_ladder _item.mandatory_code no _item_type.code code save_ save__dssp_struct_ladder.end_1_auth_seq_id _item.description ; A component of the identifier for the residue at which the first ladder segment ends. ; _item.name '_dssp_struct_ladder.end_1_auth_seq_id' _item.category_id dssp_struct_ladder _item.mandatory_code no _item_type.code int save_ save__dssp_struct_ladder.beg_2_label_comp_id _item.description ; A component of the identifier for the residue at which the second ladder segment begins. ; _item.name '_dssp_struct_ladder.beg_2_label_comp_id' _item.category_id dssp_struct_ladder _item.mandatory_code yes _item_type.code ucode save_ save__dssp_struct_ladder.beg_2_label_asym_id _item.description ; A component of the identifier for the residue at which the second ladder segment begins. ; _item.name '_dssp_struct_ladder.beg_2_label_asym_id' _item.category_id dssp_struct_ladder _item.mandatory_code yes _item_type.code code save_ save__dssp_struct_ladder.beg_2_label_seq_id _item.description ; A component of the identifier for the residue at which the second ladder segment begins. ; _item.name '_dssp_struct_ladder.beg_2_label_seq_id' _item.category_id dssp_struct_ladder _item.mandatory_code yes _item_type.code int save_ save__dssp_struct_ladder.pdbx_beg_2_PDB_ins_code _item.description ; A component of the identifier for the residue at which the second ladder segment begins. ; _item.name '_dssp_struct_ladder.pdbx_beg_2_PDB_ins_code' _item.category_id dssp_struct_ladder _item.mandatory_code no _item_type.code code save_ save__dssp_struct_ladder.end_2_label_comp_id _item.description ; A component of the identifier for the residue at which the second ladder segment ends. ; _item.name '_dssp_struct_ladder.end_2_label_comp_id' _item.category_id dssp_struct_ladder _item.mandatory_code yes _item_type.code ucode save_ save__dssp_struct_ladder.end_2_label_asym_id _item.description ; A component of the identifier for the residue at which the second ladder segment ends. ; _item.name '_dssp_struct_ladder.end_2_label_asym_id' _item.category_id dssp_struct_ladder _item.mandatory_code yes _item_type.code code save_ save__dssp_struct_ladder.end_2_label_seq_id _item.description ; A component of the identifier for the residue at which the second ladder segment ends. ; _item.name '_dssp_struct_ladder.end_2_label_seq_id' _item.category_id dssp_struct_ladder _item.mandatory_code yes _item_type.code int save_ save__dssp_struct_ladder.pdbx_end_2_PDB_ins_code _item.description ; A component of the identifier for the residue at which the second ladder segment ends. ; _item.name '_dssp_struct_ladder.pdbx_end_2_PDB_ins_code' _item.category_id dssp_struct_ladder _item.mandatory_code no _item_type.code code save_ save__dssp_struct_ladder.beg_2_auth_comp_id _item.description ; A component of the identifier for the residue at which the second ladder segment begins. ; _item.name '_dssp_struct_ladder.beg_2_auth_comp_id' _item.category_id dssp_struct_ladder _item.mandatory_code no _item_type.code ucode save_ save__dssp_struct_ladder.beg_2_auth_asym_id _item.description ; A component of the identifier for the residue at which the second ladder segment begins. ; _item.name '_dssp_struct_ladder.beg_2_auth_asym_id' _item.category_id dssp_struct_ladder _item.mandatory_code no _item_type.code code save_ save__dssp_struct_ladder.beg_2_auth_seq_id _item.description ; A component of the identifier for the residue at which the second ladder segment begins. ; _item.name '_dssp_struct_ladder.beg_2_auth_seq_id' _item.category_id dssp_struct_ladder _item.mandatory_code no _item_type.code int save_ save__dssp_struct_ladder.end_2_auth_comp_id _item.description ; A component of the identifier for the residue at which the second ladder segment ends. ; _item.name '_dssp_struct_ladder.end_2_auth_comp_id' _item.category_id dssp_struct_ladder _item.mandatory_code no _item_type.code ucode save_ save__dssp_struct_ladder.end_2_auth_asym_id _item.description ; A component of the identifier for the residue at which the second ladder segment ends. ; _item.name '_dssp_struct_ladder.end_2_auth_asym_id' _item.category_id dssp_struct_ladder _item.mandatory_code no _item_type.code code save_ save__dssp_struct_ladder.end_2_auth_seq_id _item.description ; A component of the identifier for the residue at which the second ladder segment ends. ; _item.name '_dssp_struct_ladder.end_2_auth_seq_id' _item.category_id dssp_struct_ladder _item.mandatory_code no _item_type.code int save_ ######################################## ## Category dssp_statistics ## ######################################## save_dssp_statistics # _category.description 'dssp_statistics contains secondary structure statistics as calculated by DSSP.' _category.id dssp_statistics _category.mandatory_code no # _category_key.name '_dssp_statistics.entry_id' loop_ _category_group.id 'inclusive_group' 'struct_group' # loop_ _category_examples.detail _category_examples.case # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; Example taken from 1cbs ; ; _dssp_statistics.entry_id 1CBS _dssp_statistics.nr_of_residues 137 _dssp_statistics.nr_of_chains 1 _dssp_statistics.nr_of_ss_bridges_total 0 _dssp_statistics.nr_of_ss_bridges_intra_chain 0 _dssp_statistics.nr_of_ss_bridges_inter_chain 0 _dssp_statistics.accessible_surface_of_protein 7905.01 ; save_ save__dssp_statistics.entry_id _item.description ; The entry ID for which these statistics are calculated. ; _item.name '_dssp_statistics.entry_id' _item.category_id dssp_statistics _item.mandatory_code yes _item_type.code code save_ save__dssp_statistics.nr_of_residues _item.description ; The total number of residues to which secondary structure information was assigned. ; _item.name '_dssp_statistics.nr_of_residues' _item.category_id dssp_statistics _item.mandatory_code yes _item_type.code int save_ save__dssp_statistics.nr_of_chains _item.description ; The number of chains used ; _item.name '_dssp_statistics.nr_of_chains' _item.category_id dssp_statistics _item.mandatory_code yes _item_type.code int save_ save__dssp_statistics.nr_of_ss_bridges_total _item.description ; The number of sulfur-sulfur bridges assigned. ; _item.name '_dssp_statistics.nr_of_ss_bridges_total' _item.category_id dssp_statistics _item.mandatory_code yes _item_type.code int save_ save__dssp_statistics.nr_of_ss_bridges_intra_chain _item.description ; The number of intra-chain sulfur-sulfur bridges assigned. ; _item.name '_dssp_statistics.nr_of_ss_bridges_intra_chain' _item.category_id dssp_statistics _item.mandatory_code yes _item_type.code int save_ save__dssp_statistics.nr_of_ss_bridges_inter_chain _item.description ; The number of inter-chain sulfur-sulfur bridges assigned. ; _item.name '_dssp_statistics.nr_of_ss_bridges_inter_chain' _item.category_id dssp_statistics _item.mandatory_code yes _item_type.code int save_ save__dssp_statistics.accessible_surface_of_protein _item.description ; The total accessible surface of the protein in square Angstroms. ; _item.name '_dssp_statistics.accessible_surface_of_protein' _item.category_id dssp_statistics _item.mandatory_code yes _item_type.code float save_ ######################################## ## Category dssp_statistics_hbond ## ######################################## save_dssp_statistics_hbond # _category.description 'dssp_statistics_hbond contains statistics for the collection of h-bond variants calculated by DSSP.' _category.id dssp_statistics_hbond _category.mandatory_code no # loop_ _category_key.name '_dssp_statistics_hbond.entry_id' '_dssp_statistics_hbond.type' loop_ _category_group.id 'inclusive_group' 'struct_group' # loop_ _category_examples.detail _category_examples.case # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; Example taken from 1cbs ; ; _dssp_statistics_hbond.entry_id 1CBS _dssp_statistics_hbond.type O(I)-->H-N(J) _dssp_statistics_hbond.count 94 _dssp_statistics_hbond.count_per_100 68.6 ; save_ save__dssp_statistics_hbond.entry_id _item.description ; The entry ID for which these statistics are calculated. ; _item.name '_dssp_statistics_hbond.entry_id' _item.category dssp_statistics_hbond _item.mandatory_code yes _item_type.code code save_ save__dssp_statistics_hbond.type _item.description ; The type of the h-bond ; _item.name '_dssp_statistics_hbond.type' _item.category dssp_statistics_hbond _item.mandatory_code yes _item_type.code text loop_ _item_enumeration.value _item_enumeration.detail O(I)-->H-N(J) 'non-bridge h-bond with residue further away than 5 residues' 'PARALLEL BRIDGES' 'h-bond forming a parallel bridge' 'ANTIPARALLEL BRIDGES' 'h-bond forming a anti-parallel bridge' O(I)-->H-N(I-5) 'h-bond with residue five residues before the current one' O(I)-->H-N(I-4) 'h-bond with residue four residues before the current one' O(I)-->H-N(I-3) 'h-bond with residue three residues before the current one' O(I)-->H-N(I-2) 'h-bond with residue two residues before the current one' O(I)-->H-N(I-1) 'h-bond with residue one residue before the current one' O(I)-->H-N(I+0) 'h-bond with current residue itself' O(I)-->H-N(I+1) 'h-bond with residue one residues after the current one' O(I)-->H-N(I+2) 'h-bond with residue two residues after the current one' O(I)-->H-N(I+3) 'h-bond with residue three residues after the current one' O(I)-->H-N(I+4) 'h-bond with residue four residues after the current one' O(I)-->H-N(I+5) 'h-bond with residue five residues after the current one' save_ save__dssp_statistics_hbond.count _item.description ; Absolute number of h-bonds of this type ; _item.name '_dssp_statistics_hbond.count' _item.category dssp_statistics_hbond _item.mandatory_code yes _item_type.code int save_ save__dssp_statistics_hbond.count_per_100 _item.description ; Number of h-bonds of this type per hundred residues in the entire structure ; _item.name '_dssp_statistics_hbond.count_per_100' _item.category dssp_statistics_hbond _item.mandatory_code yes _item_type.code float save_ ######################################## ## Category dssp_statistics_histogram ## ######################################## save_dssp_statistics_histogram # _category.description 'dssp_statistics_histogram contains the statistics for the ladders and helices in the form of a histogram as calculated by DSSP.' _category.id dssp_statistics_histogram _category.mandatory_code no # loop_ _category_key.name '_dssp_statistics_histogram.entry_id' '_dssp_statistics_histogram.type' loop_ _category_group.id 'inclusive_group' 'struct_group' # loop_ _category_examples.detail _category_examples.case # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; Example taken from 1cbs ; ; _dssp_statistics_histogram.entry_id 1CBS _dssp_statistics_histogram.type antiparallel_bridges_per_ladder _dssp_statistics_histogram.1 0 _dssp_statistics_histogram.2 0 _dssp_statistics_histogram.3 1 _dssp_statistics_histogram.4 1 _dssp_statistics_histogram.5 1 _dssp_statistics_histogram.6 1 _dssp_statistics_histogram.7 4 _dssp_statistics_histogram.8 1 _dssp_statistics_histogram.9 0 _dssp_statistics_histogram.10 0 _dssp_statistics_histogram.11 0 _dssp_statistics_histogram.12 0 _dssp_statistics_histogram.13 0 _dssp_statistics_histogram.14 0 _dssp_statistics_histogram.15 0 _dssp_statistics_histogram.16 0 _dssp_statistics_histogram.17 0 _dssp_statistics_histogram.18 0 _dssp_statistics_histogram.19 0 _dssp_statistics_histogram.20 0 _dssp_statistics_histogram.21 0 _dssp_statistics_histogram.22 0 _dssp_statistics_histogram.23 0 _dssp_statistics_histogram.24 0 _dssp_statistics_histogram.25 0 _dssp_statistics_histogram.26 0 _dssp_statistics_histogram.27 0 _dssp_statistics_histogram.28 0 _dssp_statistics_histogram.29 0 _dssp_statistics_histogram.30 0 ; save_ save__dssp_statistics_histogram.entry_id _item.description ; The entry ID for which these statistics are calculated. ; _item.name '_dssp_statistics_histogram.entry_id' _item.category dssp_statistics_histogram _item.mandatory_code yes _item_type.code code save_ save__dssp_statistics_histogram.type _item.description ; The type for which this histogram contains data ; _item.name '_dssp_statistics_histogram.type' _item.category dssp_statistics_histogram _item.mandatory_code yes _item_type.code code loop_ _item_enumeration.value _item_enumeration.detail residues_per_alpha_helix 'residues per alpha helix' parallel_bridges_per_ladder 'parallel bridges per ladder' antiparallel_bridges_per_ladder 'antiparallel bridges per ladder' ladders_per_sheet 'ladders per sheet' save_ save__dssp_statistics_histogram.1 _item.description ; The count of this type of ladder with a length of 1 residues ; _item.name '_dssp_statistics_histogram.1' _item.category dssp_statistics_histogram _item.mandatory_code yes _item_type.code int save_ save__dssp_statistics_histogram.2 _item.description ; The count of this type of ladder with a length of 2 residues ; _item.name '_dssp_statistics_histogram.2' _item.category dssp_statistics_histogram _item.mandatory_code yes _item_type.code int save_ save__dssp_statistics_histogram.3 _item.description ; The count of this type of ladder with a length of 3 residues ; _item.name '_dssp_statistics_histogram.3' _item.category dssp_statistics_histogram _item.mandatory_code yes _item_type.code int save_ save__dssp_statistics_histogram.4 _item.description ; The count of this type of ladder with a length of 4 residues ; _item.name '_dssp_statistics_histogram.4' _item.category dssp_statistics_histogram _item.mandatory_code yes _item_type.code int save_ save__dssp_statistics_histogram.5 _item.description ; The count of this type of ladder with a length of 5 residues ; _item.name '_dssp_statistics_histogram.5' _item.category dssp_statistics_histogram _item.mandatory_code yes _item_type.code int save_ save__dssp_statistics_histogram.6 _item.description ; The count of this type of ladder with a length of 6 residues ; _item.name '_dssp_statistics_histogram.6' _item.category dssp_statistics_histogram _item.mandatory_code yes _item_type.code int save_ save__dssp_statistics_histogram.7 _item.description ; The count of this type of ladder with a length of 7 residues ; _item.name '_dssp_statistics_histogram.7' _item.category dssp_statistics_histogram _item.mandatory_code yes _item_type.code int save_ save__dssp_statistics_histogram.8 _item.description ; The count of this type of ladder with a length of 8 residues ; _item.name '_dssp_statistics_histogram.8' _item.category dssp_statistics_histogram _item.mandatory_code yes _item_type.code int save_ save__dssp_statistics_histogram.9 _item.description ; The count of this type of ladder with a length of 9 residues ; _item.name '_dssp_statistics_histogram.9' _item.category dssp_statistics_histogram _item.mandatory_code yes _item_type.code int save_ save__dssp_statistics_histogram.10 _item.description ; The count of this type of ladder with a length of 10 residues ; _item.name '_dssp_statistics_histogram.10' _item.category dssp_statistics_histogram _item.mandatory_code yes _item_type.code int save_ save__dssp_statistics_histogram.11 _item.description ; The count of this type of ladder with a length of 11 residues ; _item.name '_dssp_statistics_histogram.11' _item.category dssp_statistics_histogram _item.mandatory_code yes _item_type.code int save_ save__dssp_statistics_histogram.12 _item.description ; The count of this type of ladder with a length of 12 residues ; _item.name '_dssp_statistics_histogram.12' _item.category dssp_statistics_histogram _item.mandatory_code yes _item_type.code int save_ save__dssp_statistics_histogram.13 _item.description ; The count of this type of ladder with a length of 13 residues ; _item.name '_dssp_statistics_histogram.13' _item.category dssp_statistics_histogram _item.mandatory_code yes _item_type.code int save_ save__dssp_statistics_histogram.14 _item.description ; The count of this type of ladder with a length of 14 residues ; _item.name '_dssp_statistics_histogram.14' _item.category dssp_statistics_histogram _item.mandatory_code yes _item_type.code int save_ save__dssp_statistics_histogram.15 _item.description ; The count of this type of ladder with a length of 15 residues ; _item.name '_dssp_statistics_histogram.15' _item.category dssp_statistics_histogram _item.mandatory_code yes _item_type.code int save_ save__dssp_statistics_histogram.16 _item.description ; The count of this type of ladder with a length of 16 residues ; _item.name '_dssp_statistics_histogram.16' _item.category dssp_statistics_histogram _item.mandatory_code yes _item_type.code int save_ save__dssp_statistics_histogram.17 _item.description ; The count of this type of ladder with a length of 17 residues ; _item.name '_dssp_statistics_histogram.17' _item.category dssp_statistics_histogram _item.mandatory_code yes _item_type.code int save_ save__dssp_statistics_histogram.18 _item.description ; The count of this type of ladder with a length of 18 residues ; _item.name '_dssp_statistics_histogram.18' _item.category dssp_statistics_histogram _item.mandatory_code yes _item_type.code int save_ save__dssp_statistics_histogram.19 _item.description ; The count of this type of ladder with a length of 19 residues ; _item.name '_dssp_statistics_histogram.19' _item.category dssp_statistics_histogram _item.mandatory_code yes _item_type.code int save_ save__dssp_statistics_histogram.20 _item.description ; The count of this type of ladder with a length of 20 residues ; _item.name '_dssp_statistics_histogram.20' _item.category dssp_statistics_histogram _item.mandatory_code yes _item_type.code int save_ save__dssp_statistics_histogram.21 _item.description ; The count of this type of ladder with a length of 21 residues ; _item.name '_dssp_statistics_histogram.21' _item.category dssp_statistics_histogram _item.mandatory_code yes _item_type.code int save_ save__dssp_statistics_histogram.22 _item.description ; The count of this type of ladder with a length of 22 residues ; _item.name '_dssp_statistics_histogram.22' _item.category dssp_statistics_histogram _item.mandatory_code yes _item_type.code int save_ save__dssp_statistics_histogram.23 _item.description ; The count of this type of ladder with a length of 23 residues ; _item.name '_dssp_statistics_histogram.23' _item.category dssp_statistics_histogram _item.mandatory_code yes _item_type.code int save_ save__dssp_statistics_histogram.24 _item.description ; The count of this type of ladder with a length of 24 residues ; _item.name '_dssp_statistics_histogram.24' _item.category dssp_statistics_histogram _item.mandatory_code yes _item_type.code int save_ save__dssp_statistics_histogram.25 _item.description ; The count of this type of ladder with a length of 25 residues ; _item.name '_dssp_statistics_histogram.25' _item.category dssp_statistics_histogram _item.mandatory_code yes _item_type.code int save_ save__dssp_statistics_histogram.26 _item.description ; The count of this type of ladder with a length of 26 residues ; _item.name '_dssp_statistics_histogram.26' _item.category dssp_statistics_histogram _item.mandatory_code yes _item_type.code int save_ save__dssp_statistics_histogram.27 _item.description ; The count of this type of ladder with a length of 27 residues ; _item.name '_dssp_statistics_histogram.27' _item.category dssp_statistics_histogram _item.mandatory_code yes _item_type.code int save_ save__dssp_statistics_histogram.28 _item.description ; The count of this type of ladder with a length of 28 residues ; _item.name '_dssp_statistics_histogram.28' _item.category dssp_statistics_histogram _item.mandatory_code yes _item_type.code int save_ save__dssp_statistics_histogram.29 _item.description ; The count of this type of ladder with a length of 29 residues ; _item.name '_dssp_statistics_histogram.29' _item.category dssp_statistics_histogram _item.mandatory_code yes _item_type.code int save_ save__dssp_statistics_histogram.30 _item.description ; The count of this type of ladder with a length of 30 or more residues ; _item.name '_dssp_statistics_histogram.30' _item.category dssp_statistics_histogram _item.mandatory_code yes _item_type.code int save_ ######################################## ## Category dssp_struct_summary ## ######################################## save_dssp_struct_summary # _category.description 'dssp_struct_summary contains the extra secondary structure information per residue as calculated by DSSP.' _category.id dssp_struct_summary _category.mandatory_code no # loop_ _category_key.name '_dssp_struct_summary.entry_id' '_dssp_struct_summary.label_asym_id' '_dssp_struct_summary.label_seq_id' '_dssp_struct_summary.label_comp_id' loop_ _category_group.id 'inclusive_group' 'struct_group' # loop_ _category_examples.detail _category_examples.case # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; Example taken from 1cbs ; ; _dssp_struct_summary.entry_id 1CBS _dssp_struct_summary.label_comp_id PHE _dssp_struct_summary.label_asym_id A _dssp_struct_summary.label_seq_id 15 _dssp_struct_summary.secondary_structure H _dssp_struct_summary.ss_bridge . _dssp_struct_summary.helix_3_10 . _dssp_struct_summary.helix_alpha > _dssp_struct_summary.helix_pi . _dssp_struct_summary.helix_pp . _dssp_struct_summary.bend S _dssp_struct_summary.chirality + _dssp_struct_summary.sheet . _dssp_struct_summary.strand . _dssp_struct_summary.ladder_1 . _dssp_struct_summary.ladder_2 . _dssp_struct_summary.accessibility 23.1 _dssp_struct_summary.TCO 0.940 _dssp_struct_summary.kappa 73.9 _dssp_struct_summary.alpha 44.8 _dssp_struct_summary.phi -66.9 _dssp_struct_summary.psi -48.6 _dssp_struct_summary.x_ca 22.4 _dssp_struct_summary.y_ca 17.2 _dssp_struct_summary.z_ca 17.7 ; save_ save__dssp_struct_summary.entry_id _item.description ; The entry ID for which these statistics are calculated. ; _item.name '_dssp_struct_summary.entry_id' _item.category dssp_struct_summary _item.mandatory_code yes _item_type.code code save_ save__dssp_struct_summary.label_comp_id _item.description ; A component of the identifier for this monomer. This data item is a pointer to _chem_comp.id in the CHEM_COMP category. ; _item.name '_dssp_struct_summary.label_comp_id' _item.category dssp_struct_summary _item.mandatory_code yes _item_type.code ucode save_ save__dssp_struct_summary.label_asym_id _item.description ; A component of the identifier for this monomer ; _item.name '_dssp_struct_summary.label_asym_id' _item.category dssp_struct_summary _item.mandatory_code yes _item_type.code code save_ save__dssp_struct_summary.label_seq_id _item.description ; A component of the identifier for this monomer ; _item.name '_dssp_struct_summary.label_seq_id' _item.category dssp_struct_summary _item.mandatory_code yes _item_type.code code save_ save__dssp_struct_summary.secondary_structure _item.description ; The secondary structure assigned to this residue in a single letter code The value for this field may be empty in which case the assigned secondary structure is Loop. ; _item.name '_dssp_struct_summary.secondary_structure' _item.category dssp_struct_summary _item.mandatory_code no _item_type.code code loop_ _item_enumeration.value _item_enumeration.detail H Alphahelix B Betabridge E Strand G Helix_3 I Helix_5 P Helix_PPII T Turn S Bend save_ save__dssp_struct_summary.ss_bridge _item.description ; Identifier for the SS-Bridge formed by this residue ; _item.name '_dssp_struct_summary.ss_bridge' _item.category dssp_struct_summary _item.mandatory_code no _item_type.code int save_ save__dssp_struct_summary.helix_3_10 _item.description ; In case this residue is a candidate to form a 3_10 helix, this field contains the position of the residue in the helix. ; _item.name '_dssp_struct_summary.helix_3_10' _item.category dssp_struct_summary _item.mandatory_code no _item_type.code code loop_ _item_enumeration.value _item_enumeration.detail '>' 'The residue has h-bond(s) is a candidate to start a 3_10 helix' '3' 'The residue has h-bond(s) is a candidate to be within a 3_10 helix' '<' 'The residue has h-bond(s) is a candidate to end a 3_10 helix' 'X' 'The residue has h-bond(s) is a candidate for both a start and an end of a 3_10 helix' save_ save__dssp_struct_summary.helix_alpha _item.description ; In case this residue is a candidate to form a alpha helix, this field contains the position of the residue in the helix. ; _item.name '_dssp_struct_summary.helix_alpha' _item.category dssp_struct_summary _item.mandatory_code no _item_type.code code loop_ _item_enumeration.value _item_enumeration.detail '>' 'The residue has h-bond(s) is a candidate to start a alpha helix' '4' 'The residue has h-bond(s) is a candidate to be within a alpha helix' '<' 'The residue has h-bond(s) is a candidate to end a alpha helix' 'X' 'The residue has h-bond(s) is a candidate for both a start and an end of a alpha helix' save_ save__dssp_struct_summary.helix_pi _item.description ; In case this residue is a candidate to form a pi helix, this field contains the position of the residue in the helix. ; _item.name '_dssp_struct_summary.helix_pi' _item.category dssp_struct_summary _item.mandatory_code no _item_type.code code loop_ _item_enumeration.value _item_enumeration.detail '>' 'The residue has h-bond(s) is a candidate to start a pi helix' '5' 'The residue has h-bond(s) is a candidate to be within a pi helix' '<' 'The residue has h-bond(s) is a candidate to end a pi helix' 'X' 'The residue has h-bond(s) is a candidate for both a start and an end of a pi helix' save_ save__dssp_struct_summary.helix_pp _item.description ; In case this residue is a candidate to form a poly-proline helix, this field contains the position of the residue in the helix. ; _item.name '_dssp_struct_summary.helix_pp' _item.category dssp_struct_summary _item.mandatory_code no _item_type.code code loop_ _item_enumeration.value _item_enumeration.detail '>' 'The residue has h-bond(s) is a candidate to start a poly-proline helix' 'P' 'The residue has h-bond(s) is a candidate to be within a poly-proline helix' '<' 'The residue has h-bond(s) is a candidate to end a poly-proline helix' 'X' 'The residue has h-bond(s) is a candidate for both a start and an end of a poly-proline helix' save_ save__dssp_struct_summary.bend _item.description ; If this field contains S this indicates that the assigned secondary structure Turn actually forms a Bend. ; _item.name '_dssp_struct_summary.bend' _item.category dssp_struct_summary _item.mandatory_code no _item_type.code code _item_enumeration.value S _item_enumeration.detail 'The residue forms a Bend' save_ save__dssp_struct_summary.chirality _item.description ; The chirality for the virtual torsion angle (dihedral angle) defined by the four C-alpha atoms of residues I-1, I, I+1 and I+2. ; _item.name '_dssp_struct_summary.chirality' _item.category dssp_struct_summary _item.mandatory_code no _item_type.code code loop_ _item_enumeration.value '+' '-' save_ save__dssp_struct_summary.sheet _item.description ; This data item is a pointer to _struct_sheet.id in the STRUCT_SHEET category. ; _item.name '_dssp_struct_summary.sheet' _item.category dssp_struct_summary _item.mandatory_code no _item_type.code code save_ save__dssp_struct_summary.strand _item.description ; This data item is a pointer to _struct_sheet_range.id in the STRUCT_SHEET_RANGE category. ; _item.name '_dssp_struct_summary.strand' _item.category dssp_struct_summary _item.mandatory_code no _item_type.code code save_ save__dssp_struct_summary.ladder_1 _item.description ; Label for the first beta bridge of which this residue is part. ; _item.name '_dssp_struct_summary.ladder_1' _item.category dssp_struct_summary _item.mandatory_code no _item_type.code code save_ save__dssp_struct_summary.ladder_2 _item.description ; Label for the second beta bridge of which this residue is part. ; _item.name '_dssp_struct_summary.ladder_2' _item.category dssp_struct_summary _item.mandatory_code no _item_type.code code save_ save__dssp_struct_summary.accessibility _item.description ; Solvent accessibility for this residue in square Angstroms ; _item.name '_dssp_struct_summary.accessibility' _item.category dssp_struct_summary _item.mandatory_code no _item_type.code float save_ save__dssp_struct_summary.TCO _item.description ; The cosine of the angle between C=O of residue I and C=O of residue I-1. For alpha-helices, TCO is near +1, for Beta-sheets TCO is near -1. Not used for structure definition. ; _item.name '_dssp_struct_summary.TCO' _item.category dssp_struct_summary _item.mandatory_code no _item_type.code float save_ save__dssp_struct_summary.kappa _item.description ; The virtual bond angle (bend angle) defined by the three C-alpha atoms of residues I-2, I and I+2. Used to define bend (structure code 'S'). ; _item.name '_dssp_struct_summary.kappa' _item.category dssp_struct_summary _item.mandatory_code no _item_type.code float save_ save__dssp_struct_summary.alpha _item.description ; The virtual torsion angle (dihedral angle) defined by the four C-alpha atoms of residues I-1, I, I+1 and I+2. Used to define chirality (structure code '+' or '-'). ; _item.name '_dssp_struct_summary.alpha' _item.category dssp_struct_summary _item.mandatory_code no _item_type.code float save_ save__dssp_struct_summary.phi _item.description ; IUPAC peptide backbone torsion phi angle ; _item.name '_dssp_struct_summary.phi' _item.category dssp_struct_summary _item.mandatory_code no _item_type.code float save_ save__dssp_struct_summary.psi _item.description ; IUPAC peptide backbone torsion psi angle ; _item.name '_dssp_struct_summary.psi' _item.category dssp_struct_summary _item.mandatory_code no _item_type.code float save_ save__dssp_struct_summary.x_ca _item.description ; The x coordinate of the C-alpha atom for this residue ; _item.name '_dssp_struct_summary.x_ca' _item.category dssp_struct_summary _item.mandatory_code no _item_type.code float save_ save__dssp_struct_summary.y_ca _item.description ; The y coordinate of the C-alpha atom for this residue ; _item.name '_dssp_struct_summary.y_ca' _item.category dssp_struct_summary _item.mandatory_code no _item_type.code float save_ save__dssp_struct_summary.z_ca _item.description ; The z coordinate of the C-alpha atom for this residue ; _item.name '_dssp_struct_summary.z_ca' _item.category dssp_struct_summary _item.mandatory_code no _item_type.code float save_ dssp-4.4.10/libdssp/src/000077500000000000000000000000001470365501700150105ustar00rootroot00000000000000dssp-4.4.10/libdssp/src/dssp-io.cpp000066400000000000000000000715651470365501700171100ustar00rootroot00000000000000/*- * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2020 NKI/AVL, Netherlands Cancer Institute * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "dssp-io.hpp" #include "revision.hpp" #include #include #include #include #include #include // -------------------------------------------------------------------- std::string ResidueToDSSPLine(const dssp::residue_info &info) { /* This is the header line for the residue lines in a DSSP file: # RESIDUE AA STRUCTURE BP1 BP2 ACC N-H-->O O-->H-N N-H-->O O-->H-N TCO KAPPA ALPHA PHI PSI X-CA Y-CA Z-CA */ // auto& residue = info.residue(); auto &residue = info; if (residue.pdb_strand_id().length() > 1) throw std::runtime_error("This file contains data that won't fit in the original DSSP format"); char code = residue.compound_letter(); if (code == 'C') // a cysteine { auto ssbridgenr = info.ssBridgeNr(); if (ssbridgenr) code = 'a' + ((ssbridgenr - 1) % 26); } char ss = ' '; switch (info.type()) { case dssp::structure_type::Alphahelix: ss = 'H'; break; case dssp::structure_type::Betabridge: ss = 'B'; break; case dssp::structure_type::Strand: ss = 'E'; break; case dssp::structure_type::Helix_3: ss = 'G'; break; case dssp::structure_type::Helix_5: ss = 'I'; break; case dssp::structure_type::Helix_PPII: ss = 'P'; break; case dssp::structure_type::Turn: ss = 'T'; break; case dssp::structure_type::Bend: ss = 'S'; break; case dssp::structure_type::Loop: ss = ' '; break; } char helix[4] = { ' ', ' ', ' ', ' ' }; for (dssp::helix_type helixType : { dssp::helix_type::_3_10, dssp::helix_type::alpha, dssp::helix_type::pi, dssp::helix_type::pp }) { switch (info.helix(helixType)) { case dssp::helix_position_type::None: helix[static_cast(helixType)] = ' '; break; case dssp::helix_position_type::Start: helix[static_cast(helixType)] = '>'; break; case dssp::helix_position_type::End: helix[static_cast(helixType)] = '<'; break; case dssp::helix_position_type::StartAndEnd: helix[static_cast(helixType)] = 'X'; break; case dssp::helix_position_type::Middle: helix[static_cast(helixType)] = (helixType == dssp::helix_type::pp ? 'P' : static_cast('3' + static_cast(helixType))); break; } } char bend = ' '; if (info.bend()) bend = 'S'; double alpha = residue.alpha().value_or(360); char chirality = alpha == 360 ? ' ' : (alpha < 0 ? '-' : '+'); uint32_t bp[2] = {}; char bridgelabel[2] = { ' ', ' ' }; for (uint32_t i : { 0, 1 }) { const auto &[p, ladder, parallel] = info.bridge_partner(i); if (not p) continue; bp[i] = p.nr() % 10000; // won't fit otherwise... bridgelabel[i] = (parallel ? 'a' : 'A') + ladder % 26; } char sheet = ' '; if (info.sheet() != 0) sheet = 'A' + (info.sheet() - 1) % 26; std::string NHO[2], ONH[2]; for (int i : { 0, 1 }) { const auto &[donor, donorE] = info.donor(i); const auto &[acceptor, acceptorE] = info.acceptor(i); NHO[i] = ONH[i] = "0, 0.0"; if (acceptor) { auto d = acceptor.nr() - info.nr(); NHO[i] = cif::format("%d,%3.1f", d, acceptorE).str(); } if (donor) { auto d = donor.nr() - info.nr(); ONH[i] = cif::format("%d,%3.1f", d, donorE).str(); } } // auto ca = residue.atomByID("CA"); auto const &[cax, cay, caz] = residue.ca_location(); return cif::format("%5d%5d%1.1s%1.1s %c %c%c%c%c%c%c%c%c%c%4d%4d%c%4.0f %11s%11s%11s%11s %6.3f%6.1f%6.1f%6.1f%6.1f %6.1f %6.1f %6.1f", info.nr(), residue.pdb_seq_num(), residue.pdb_ins_code(), residue.pdb_strand_id(), code, ss, helix[3], helix[0], helix[1], helix[2], bend, chirality, bridgelabel[0], bridgelabel[1], bp[0], bp[1], sheet, floor(info.accessibility() + 0.5), NHO[0], ONH[0], NHO[1], ONH[1], residue.tco().value_or(0), residue.kappa().value_or(360), residue.alpha().value_or(360), residue.phi().value_or(360), residue.psi().value_or(360), cax, cay, caz) .str(); } void writeDSSP(const dssp &dssp, std::ostream &os) { using namespace std::chrono; auto stats = dssp.get_statistics(); std::time_t today = system_clock::to_time_t(system_clock::now()); std::tm *tm = std::gmtime(&today); std::string version = klibdsspVersionNumber; if (version.length() < 10) version.insert(version.end(), 10 - version.length(), ' '); os << "==== Secondary Structure Definition by the program DSSP, NKI version " << version << " ==== DATE=" << std::put_time(tm, "%F") << " ." << std::endl << "REFERENCE W. KABSCH AND C.SANDER, BIOPOLYMERS 22 (1983) 2577-2637 ." << std::endl << dssp.get_pdb_header_line(dssp::pdb_record_type::HEADER) << '.' << std::endl << dssp.get_pdb_header_line(dssp::pdb_record_type::COMPND) << '.' << std::endl << dssp.get_pdb_header_line(dssp::pdb_record_type::SOURCE) << '.' << std::endl << dssp.get_pdb_header_line(dssp::pdb_record_type::AUTHOR) << '.' << std::endl; os << cif::format("%5d%3d%3d%3d%3d TOTAL NUMBER OF RESIDUES, NUMBER OF CHAINS, NUMBER OF SS-BRIDGES(TOTAL,INTRACHAIN,INTERCHAIN) .", stats.count.residues, stats.count.chains, stats.count.SS_bridges, stats.count.intra_chain_SS_bridges, (stats.count.SS_bridges - stats.count.intra_chain_SS_bridges)) << std::endl; os << cif::format("%8.1f ACCESSIBLE SURFACE OF PROTEIN (ANGSTROM**2) .", stats.accessible_surface) << std::endl; // hydrogenbond summary os << cif::format("%5d%5.1f TOTAL NUMBER OF HYDROGEN BONDS OF TYPE O(I)-->H-N(J) , SAME NUMBER PER 100 RESIDUES .", stats.count.H_bonds, (stats.count.H_bonds * 100.0 / stats.count.residues)) << std::endl; os << cif::format("%5d%5.1f TOTAL NUMBER OF HYDROGEN BONDS IN PARALLEL BRIDGES, SAME NUMBER PER 100 RESIDUES .", stats.count.H_bonds_in_parallel_bridges, (stats.count.H_bonds_in_parallel_bridges * 100.0 / stats.count.residues)) << std::endl; os << cif::format("%5d%5.1f TOTAL NUMBER OF HYDROGEN BONDS IN ANTIPARALLEL BRIDGES, SAME NUMBER PER 100 RESIDUES .", stats.count.H_bonds_in_antiparallel_bridges, (stats.count.H_bonds_in_antiparallel_bridges * 100.0 / stats.count.residues)) << std::endl; for (int k = 0; k < 11; ++k) os << cif::format("%5d%5.1f TOTAL NUMBER OF HYDROGEN BONDS OF TYPE O(I)-->H-N(I%c%1d), SAME NUMBER PER 100 RESIDUES .", stats.count.H_Bonds_per_distance[k], (stats.count.H_Bonds_per_distance[k] * 100.0 / stats.count.residues), (k - 5 < 0 ? '-' : '+'), abs(k - 5)) << std::endl; // histograms... os << " 1 2 3 4 5 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 *** HISTOGRAMS OF *** ." << std::endl; for (auto hi : stats.histogram.residues_per_alpha_helix) os << cif::format("%3d", hi); os << " RESIDUES PER ALPHA HELIX ." << std::endl; for (auto hi : stats.histogram.parallel_bridges_per_ladder) os << cif::format("%3d", hi); os << " PARALLEL BRIDGES PER LADDER ." << std::endl; for (auto hi : stats.histogram.antiparallel_bridges_per_ladder) os << cif::format("%3d", hi); os << " ANTIPARALLEL BRIDGES PER LADDER ." << std::endl; for (auto hi : stats.histogram.ladders_per_sheet) os << cif::format("%3d", hi); os << " LADDERS PER SHEET ." << std::endl; // per residue information os << " # RESIDUE AA STRUCTURE BP1 BP2 ACC N-H-->O O-->H-N N-H-->O O-->H-N TCO KAPPA ALPHA PHI PSI X-CA Y-CA Z-CA" << std::endl; int last = 0; for (auto ri : dssp) { // insert a break line whenever we detect missing residues // can be the transition to a different chain, or missing residues in the current chain if (ri.nr() != last + 1) os << cif::format("%5d !%c 0 0 0 0, 0.0 0, 0.0 0, 0.0 0, 0.0 0.000 360.0 360.0 360.0 360.0 0.0 0.0 0.0", (last + 1), (ri.chain_break() == dssp::chain_break_type::NewChain ? '*' : ' ')) << std::endl; os << ResidueToDSSPLine(ri) << std::endl; last = ri.nr(); } } // -------------------------------------------------------------------- void writeBridgePairs(cif::datablock &db, const dssp &dssp) { auto &hb = db["dssp_struct_bridge_pairs"]; hb.add_item("id"); hb.add_item("label_comp_id"); hb.add_item("label_seq_id"); hb.add_item("label_asym_id"); hb.add_item("auth_seq_id"); hb.add_item("auth_asym_id"); hb.add_item("pdbx_PDB_ins_code"); // force right order for (std::string da : { "acceptor_", "donor_" }) { for (std::string i : { "1_", "2_" }) { for (std::string n : { "label_comp_id", "label_seq_id", "label_asym_id", "auth_seq_id", "auth_asym_id", "pdbx_PDB_ins_code", "energy" }) hb.add_item(da + i + n); } } for (auto &res : dssp) { cif::row_initializer data({ { "id", hb.get_unique_id("") }, { "label_comp_id", res.compound_id() }, { "label_seq_id", res.seq_id() }, { "label_asym_id", res.asym_id() }, // { "auth_comp_id", res.compound_id() }, { "auth_seq_id", res.auth_seq_id() }, { "auth_asym_id", res.auth_asym_id() }, { "pdbx_PDB_ins_code", res.pdb_ins_code() } }); for (int i : { 0, 1 }) { const auto &&[acceptor, acceptorEnergy] = res.acceptor(i); const auto &&[donor, donorEnergy] = res.donor(i); if (acceptor) { if (i == 0) { data.emplace_back("acceptor_1_label_comp_id", acceptor.compound_id()); data.emplace_back("acceptor_1_label_seq_id", acceptor.seq_id()); data.emplace_back("acceptor_1_label_asym_id", acceptor.asym_id()); // data.emplace_back("acceptor_1_auth_comp_id", acceptor.compound_id()); data.emplace_back("acceptor_1_auth_seq_id", acceptor.auth_seq_id()); data.emplace_back("acceptor_1_auth_asym_id", acceptor.auth_asym_id()); data.emplace_back("acceptor_1_pdbx_PDB_ins_code", acceptor.pdb_ins_code()); data.emplace_back("acceptor_1_energy", acceptorEnergy, 1); } else { data.emplace_back("acceptor_2_label_comp_id", acceptor.compound_id()); data.emplace_back("acceptor_2_label_seq_id", acceptor.seq_id()); data.emplace_back("acceptor_2_label_asym_id", acceptor.asym_id()); // data.emplace_back("acceptor_2_auth_comp_id", acceptor.compound_id()); data.emplace_back("acceptor_2_auth_seq_id", acceptor.auth_seq_id()); data.emplace_back("acceptor_2_auth_asym_id", acceptor.auth_asym_id()); data.emplace_back("acceptor_2_pdbx_PDB_ins_code", acceptor.pdb_ins_code()); data.emplace_back("acceptor_2_energy", acceptorEnergy, 1); } } if (donor) { if (i == 0) { data.emplace_back("donor_1_label_comp_id", donor.compound_id()); data.emplace_back("donor_1_label_seq_id", donor.seq_id()); data.emplace_back("donor_1_label_asym_id", donor.asym_id()); // data.emplace_back("donor_1_auth_comp_id", donor.compound_id()); data.emplace_back("donor_1_auth_seq_id", donor.auth_seq_id()); data.emplace_back("donor_1_auth_asym_id", donor.auth_asym_id()); data.emplace_back("donor_1_pdbx_PDB_ins_code", donor.pdb_ins_code()); data.emplace_back("donor_1_energy", donorEnergy, 1); } else { data.emplace_back("donor_2_label_comp_id", donor.compound_id()); data.emplace_back("donor_2_label_seq_id", donor.seq_id()); data.emplace_back("donor_2_label_asym_id", donor.asym_id()); // data.emplace_back("donor_2_auth_comp_id", donor.compound_id()); data.emplace_back("donor_2_auth_seq_id", donor.auth_seq_id()); data.emplace_back("donor_2_auth_asym_id", donor.auth_asym_id()); data.emplace_back("donor_2_pdbx_PDB_ins_code", donor.pdb_ins_code()); data.emplace_back("donor_2_energy", donorEnergy, 1); } } } hb.emplace(std::move(data)); } } void writeSheets(cif::datablock &db, const dssp &dssp) { using namespace cif::literals; using res_list = std::vector; // clean up old info first for (auto sheet_cat : { "struct_sheet", "struct_sheet_order", "struct_sheet_range", "struct_sheet_hbond", "pdbx_struct_sheet_hbond" }) db.erase(remove_if(db.begin(), db.end(), [sheet_cat](const cif::category &cat) { return cat.name() == sheet_cat; }), db.end()); // create a list of strands, based on the SS info in DSSP. Store sheet number along with the strand. std::map, res_list> strands; std::set sheetNrs; for (auto &res : dssp) { if (res.type() != dssp::structure_type::Strand and res.type() != dssp::structure_type::Betabridge) continue; strands[{res.sheet(), res.strand()}].emplace_back(res); sheetNrs.insert(res.sheet()); } // -------------------------------------------------------------------- auto &struct_sheet = db["struct_sheet"]; auto &struct_sheet_range = db["struct_sheet_range"]; for (int sheetNr : sheetNrs) { auto sheetID = cif::cif_id_for_number(sheetNr - 1); struct_sheet.emplace({ { "id", sheetID }, { "number_strands", std::count_if(strands.begin(), strands.end(), [nr = sheetNr](std::tuple, res_list> const &s) { const auto &[strandID, strand] = s; return strand.front().sheet() == nr; }) } }); for (auto &&[strandTuple, strand] : strands) { if (strand.front().sheet() != sheetNr) continue; std::string strandID = cif::cif_id_for_number(strand.front().strand() - 1); std::sort(strand.begin(), strand.end(), [](dssp::residue_info const &a, dssp::residue_info const &b) { return a.nr() < b.nr(); }); auto &beg = strand.front(); auto &end = strand.back(); struct_sheet_range.emplace({ { "sheet_id", sheetID }, { "id", strandID }, { "beg_label_comp_id", beg.compound_id() }, { "beg_label_asym_id", beg.asym_id() }, { "beg_label_seq_id", beg.seq_id() }, { "pdbx_beg_PDB_ins_code", beg.pdb_ins_code() }, { "end_label_comp_id", end.compound_id() }, { "end_label_asym_id", end.asym_id() }, { "end_label_seq_id", end.seq_id() }, { "pdbx_end_PDB_ins_code", end.pdb_ins_code() }, { "beg_auth_comp_id", beg.compound_id() }, { "beg_auth_asym_id", beg.auth_asym_id() }, { "beg_auth_seq_id", beg.auth_seq_id() }, { "end_auth_comp_id", end.compound_id() }, { "end_auth_asym_id", end.auth_asym_id() }, { "end_auth_seq_id", end.auth_seq_id() } }); } } } void writeLadders(cif::datablock &db, const dssp &dssp) { // Write out the DSSP ladders struct ladder_info { ladder_info(int label, int sheet, bool parallel, const dssp::residue_info &a, const dssp::residue_info &b) : ladder(label) , sheet(sheet) , parallel(parallel) , pairs({ { a, b } }) { } bool operator<(const ladder_info &rhs) const { return ladder < rhs.ladder; } int ladder; int sheet; bool parallel; std::vector> pairs; }; std::vector ladders; for (auto res : dssp) { for (int i : { 0, 1 }) { const auto &[p, ladder, parallel] = res.bridge_partner(i); if (not p) continue; bool is_new = true; for (auto &l : ladders) { if (l.ladder != ladder) continue; assert(l.parallel == parallel); if (find_if(l.pairs.begin(), l.pairs.end(), [na = p.nr(), nb = res.nr()](const auto &p) { return p.first.nr() == na and p.second.nr() == nb; }) != l.pairs.end()) { is_new = false; break; } l.pairs.emplace_back(res, p); is_new = false; break; } if (not is_new) continue; ladders.emplace_back(ladder, res.sheet() - 1, parallel, res, p); } } std::sort(ladders.begin(), ladders.end()); auto &dssp_struct_ladder = db["dssp_struct_ladder"]; for (const auto &l : ladders) { const auto &[beg1, beg2] = l.pairs.front(); const auto &[end1, end2] = l.pairs.back(); dssp_struct_ladder.emplace({ { "id", cif::cif_id_for_number(l.ladder) }, { "sheet_id", cif::cif_id_for_number(l.sheet) }, { "range_id_1", cif::cif_id_for_number(beg1.strand() - 1) }, { "range_id_2", cif::cif_id_for_number(beg2.strand() - 1) }, { "type", l.parallel ? "parallel" : "anti-parallel" }, { "beg_1_label_comp_id", beg1.compound_id() }, { "beg_1_label_asym_id", beg1.asym_id() }, { "beg_1_label_seq_id", beg1.seq_id() }, { "pdbx_beg_1_PDB_ins_code", beg1.pdb_ins_code() }, { "end_1_label_comp_id", end1.compound_id() }, { "end_1_label_asym_id", end1.asym_id() }, { "end_1_label_seq_id", end1.seq_id() }, { "pdbx_end_1_PDB_ins_code", end1.pdb_ins_code() }, { "beg_1_auth_comp_id", beg1.compound_id() }, { "beg_1_auth_asym_id", beg1.auth_asym_id() }, { "beg_1_auth_seq_id", beg1.auth_seq_id() }, { "end_1_auth_comp_id", end1.compound_id() }, { "end_1_auth_asym_id", end1.auth_asym_id() }, { "end_1_auth_seq_id", end1.auth_seq_id() }, { "beg_2_label_comp_id", beg2.compound_id() }, { "beg_2_label_asym_id", beg2.asym_id() }, { "beg_2_label_seq_id", beg2.seq_id() }, { "pdbx_beg_2_PDB_ins_code", beg2.pdb_ins_code() }, { "end_2_label_comp_id", end2.compound_id() }, { "end_2_label_asym_id", end2.asym_id() }, { "end_2_label_seq_id", end2.seq_id() }, { "pdbx_end_2_PDB_ins_code", end2.pdb_ins_code() }, { "beg_2_auth_comp_id", beg2.compound_id() }, { "beg_2_auth_asym_id", beg2.auth_asym_id() }, { "beg_2_auth_seq_id", beg2.auth_seq_id() }, { "end_2_auth_comp_id", end2.compound_id() }, { "end_2_auth_asym_id", end2.auth_asym_id() }, { "end_2_auth_seq_id", end2.auth_seq_id() } }); } } void writeStatistics(cif::datablock &db, const dssp &dssp) { using namespace std::literals; auto stats = dssp.get_statistics(); auto &dssp_statistics = db["dssp_statistics"]; auto stats_i = dssp_statistics.emplace({ { "entry_id", db.name() }, { "nr_of_residues", stats.count.residues }, { "nr_of_chains", stats.count.chains }, { "nr_of_ss_bridges_total", stats.count.SS_bridges }, { "nr_of_ss_bridges_intra_chain", stats.count.intra_chain_SS_bridges }, { "nr_of_ss_bridges_inter_chain", stats.count.SS_bridges - stats.count.intra_chain_SS_bridges } }); if (stats.accessible_surface > 0) (*stats_i)["accessible_surface_of_protein"] = stats.accessible_surface; auto &dssp_struct_hbonds = db["dssp_statistics_hbond"]; dssp_struct_hbonds.emplace({ { "entry_id", db.name() }, { "type", "O(I)-->H-N(J)" }, { "count", stats.count.H_bonds }, { "count_per_100", stats.count.H_bonds * 100.0 / stats.count.residues, 1 } }); dssp_struct_hbonds.emplace({ { "entry_id", db.name() }, { "type", "PARALLEL BRIDGES" }, { "count", stats.count.H_bonds_in_parallel_bridges }, { "count_per_100", stats.count.H_bonds_in_parallel_bridges * 100.0 / stats.count.residues, 1 } }); dssp_struct_hbonds.emplace({ { "entry_id", db.name() }, { "type", "ANTIPARALLEL BRIDGES" }, { "count", stats.count.H_bonds_in_antiparallel_bridges }, { "count_per_100", stats.count.H_bonds_in_antiparallel_bridges * 100.0 / stats.count.residues, 1 } }); for (int k = 0; k < 11; ++k) dssp_struct_hbonds.emplace({ { "entry_id", db.name() }, { "type", "O(I)-->H-N(I"s + char(k - 5 < 0 ? '-' : '+') + std::to_string(abs(k - 5)) + ")" }, { "count", stats.count.H_Bonds_per_distance[k] }, { "count_per_100", stats.count.H_Bonds_per_distance[k] * 100.0 / stats.count.residues, 1 } }); auto &dssp_statistics_histogram = db["dssp_statistics_histogram"]; using histogram_data_type = std::tuple; for (const auto &[type, values] : std::vector{ { "residues_per_alpha_helix", stats.histogram.residues_per_alpha_helix }, { "parallel_bridges_per_ladder", stats.histogram.parallel_bridges_per_ladder }, { "antiparallel_bridges_per_ladder", stats.histogram.antiparallel_bridges_per_ladder }, { "ladders_per_sheet", stats.histogram.ladders_per_sheet } }) { auto hi = dssp_statistics_histogram.emplace({ { "entry_id", db.name() }, { "type", type }, { "1", values[0] }, { "2", values[1] }, { "3", values[2] }, { "4", values[3] }, { "5", values[4] }, { "6", values[5] }, { "7", values[6] }, { "8", values[7] }, { "9", values[8] }, { "10", values[9] }, { "11", values[10] }, { "12", values[11] }, { "13", values[12] }, { "14", values[13] }, { "15", values[14] }, { "16", values[15] }, { "17", values[16] }, { "18", values[17] }, { "19", values[18] }, { "20", values[19] }, { "21", values[20] }, { "22", values[21] }, { "23", values[22] }, { "24", values[23] }, { "25", values[24] }, { "26", values[25] }, { "27", values[26] }, { "28", values[27] }, { "29", values[28] }, { "30", values[29] }, }); } } void writeSummary(cif::datablock &db, const dssp &dssp) { bool writeAccessibility = dssp.get_statistics().accessible_surface > 0; // A approximation of the old format auto &dssp_struct_summary = db["dssp_struct_summary"]; // prime the category with the field labels we need, this is to ensure proper order in writing out the data. for (auto label : { "entry_id", "label_comp_id", "label_asym_id", "label_seq_id", "secondary_structure", "ss_bridge", "helix_3_10", "helix_alpha", "helix_pi", "helix_pp", "bend", "chirality", "sheet", "strand", "ladder_1", "ladder_2", "accessibility", "TCO", "kappa", "alpha", "phi", "psi", "x_ca", "y_ca", "z_ca"}) dssp_struct_summary.add_item(label); for (auto res : dssp) { /* This is the header line for the residue lines in a DSSP file: # RESIDUE AA STRUCTURE BP1 BP2 ACC N-H-->O O-->H-N N-H-->O O-->H-N TCO KAPPA ALPHA PHI PSI X-CA Y-CA Z-CA */ std::string ss_bridge = "."; if (res.ssBridgeNr() != 0) ss_bridge = std::to_string(res.ssBridgeNr()); std::string ss = { res.type() == dssp::structure_type::Loop ? '.' : static_cast(res.type()) }; std::string helix[4] = { ".", ".", ".", "." }; for (dssp::helix_type helixType : { dssp::helix_type::_3_10, dssp::helix_type::alpha, dssp::helix_type::pi, dssp::helix_type::pp }) { switch (res.helix(helixType)) { // case dssp::helix_position_type::None: helix[static_cast(helixType)] = ' '; break; case dssp::helix_position_type::Start: helix[static_cast(helixType)] = { '>' }; break; case dssp::helix_position_type::End: helix[static_cast(helixType)] = { '<' }; break; case dssp::helix_position_type::StartAndEnd: helix[static_cast(helixType)] = { 'X' }; break; case dssp::helix_position_type::Middle: if (helixType == dssp::helix_type::pp) helix[static_cast(helixType)] = { 'P' }; else helix[static_cast(helixType)] = { static_cast('3' + static_cast(helixType)) }; break; default: break; } } std::string bend = "."; if (res.bend()) bend = "S"; std::string chirality = "."; if (res.alpha().has_value()) chirality = *res.alpha() < 0 ? "-" : "+"; std::string ladders[2] = { ".", "." }; for (uint32_t i : { 0, 1 }) { const auto &[p, ladder, parallel] = res.bridge_partner(i); if (not p) continue; ladders[i] = cif::cif_id_for_number(ladder); } auto const &[cax, cay, caz] = res.ca_location(); cif::row_initializer data{ { "entry_id", db.name() }, { "label_comp_id", res.compound_id() }, { "label_asym_id", res.asym_id() }, { "label_seq_id", res.seq_id() }, { "secondary_structure", ss }, { "ss_bridge", ss_bridge }, { "helix_3_10", helix[0] }, { "helix_alpha", helix[1] }, { "helix_pi", helix[2] }, { "helix_pp", helix[3] }, { "bend", bend }, { "chirality", chirality }, { "sheet", res.sheet() ? cif::cif_id_for_number(res.sheet() - 1) : "." }, { "strand", res.strand() ? cif::cif_id_for_number(res.strand() - 1) : "." }, { "ladder_1", ladders[0] }, { "ladder_2", ladders[1] }, { "x_ca", cax, 1 }, { "y_ca", cay, 1 }, { "z_ca", caz, 1 }, }; if (writeAccessibility) data.emplace_back("accessibility", res.accessibility(), 1); if (res.tco().has_value()) data.emplace_back("TCO", *res.tco(), 3); else data.emplace_back("TCO", "."); if (res.kappa().has_value()) data.emplace_back("kappa", *res.kappa(), 1); else data.emplace_back("kappa", "."); if (res.alpha().has_value()) data.emplace_back("alpha", *res.alpha(), 1); else data.emplace_back("alpha", "."); if (res.phi().has_value()) data.emplace_back("phi", *res.phi(), 1); else data.emplace_back("phi", "."); if (res.psi().has_value()) data.emplace_back("psi", *res.psi(), 1); else data.emplace_back("psi", "."); dssp_struct_summary.emplace(std::move(data)); } } void annotateDSSP(cif::datablock &db, const dssp &dssp, bool writeOther, bool writeExperimental) { using namespace std::literals; if (db.get_validator() != nullptr) { auto &validator = const_cast(*db.get_validator()); if (validator.get_validator_for_category("dssp_struct_summary") == nullptr) { auto dssp_extension = cif::load_resource("dssp-extension.dic"); if (dssp_extension) cif::extend_dictionary(validator, *dssp_extension); } } if (dssp.empty()) { if (cif::VERBOSE > 0) std::cout << "No secondary structure information found" << std::endl; } else { if (writeExperimental) { writeBridgePairs(db, dssp); writeSheets(db, dssp); writeLadders(db, dssp); writeStatistics(db, dssp); writeSummary(db, dssp); } // replace all struct_conf and struct_conf_type records auto &structConfType = db["struct_conf_type"]; structConfType.clear(); auto &structConf = db["struct_conf"]; structConf.clear(); std::map foundTypes; auto st = dssp.begin(), lt = st; auto lastSS = st->type(); for (auto t = dssp.begin();; lt = t, ++t) { bool stop = t == dssp.end(); bool flush = (stop or t->type() != lastSS); if (flush and (writeOther or lastSS != dssp::structure_type::Loop)) { auto &rb = *st; auto &re = *lt; std::string id; switch (lastSS) { case dssp::structure_type::Helix_3: id = "HELX_RH_3T_P"; break; case dssp::structure_type::Alphahelix: id = "HELX_RH_AL_P"; break; case dssp::structure_type::Helix_5: id = "HELX_RH_PI_P"; break; case dssp::structure_type::Helix_PPII: id = "HELX_LH_PP_P"; break; case dssp::structure_type::Turn: id = "TURN_TY1_P"; break; case dssp::structure_type::Bend: id = "BEND"; break; case dssp::structure_type::Betabridge: case dssp::structure_type::Strand: id = "STRN"; break; case dssp::structure_type::Loop: id = "OTHER"; break; } if (foundTypes.count(id) == 0) { structConfType.emplace({ { "id", id }, { "criteria", "DSSP" } }); foundTypes[id] = 1; } structConf.emplace({ { "conf_type_id", id }, { "id", id + std::to_string(foundTypes[id]++) }, // { "pdbx_PDB_helix_id", vS(12, 14) }, { "beg_label_comp_id", rb.compound_id() }, { "beg_label_asym_id", rb.asym_id() }, { "beg_label_seq_id", rb.seq_id() }, { "pdbx_beg_PDB_ins_code", rb.pdb_ins_code() }, { "end_label_comp_id", re.compound_id() }, { "end_label_asym_id", re.asym_id() }, { "end_label_seq_id", re.seq_id() }, { "pdbx_end_PDB_ins_code", re.pdb_ins_code() }, { "beg_auth_comp_id", rb.compound_id() }, { "beg_auth_asym_id", rb.auth_asym_id() }, { "beg_auth_seq_id", rb.auth_seq_id() }, { "end_auth_comp_id", re.compound_id() }, { "end_auth_asym_id", re.auth_asym_id() }, { "end_auth_seq_id", re.auth_seq_id() } }); st = t; } if (stop) break; if (lastSS != t->type()) { st = t; lastSS = t->type(); } } } auto &software = db["software"]; software.emplace({ { "pdbx_ordinal", software.get_unique_id("") }, { "name", "dssp" }, { "version", klibdsspVersionNumber }, { "date", klibdsspRevisionDate }, { "classification", "model annotation" } }); } dssp-4.4.10/libdssp/src/dssp-io.hpp000066400000000000000000000031021470365501700170730ustar00rootroot00000000000000/*- * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2020 NKI/AVL, Netherlands Cancer Institute * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #pragma once #include "dssp.hpp" void writeDSSP(const dssp& dssp, std::ostream& os); void annotateDSSP(cif::datablock &db, const dssp& dssp, bool writeOther, bool writeExperimental); dssp-4.4.10/libdssp/src/dssp.cpp000066400000000000000000001663421470365501700165010ustar00rootroot00000000000000/*- * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2020 NKI/AVL, Netherlands Cancer Institute * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ // Calculate DSSP-like secondary structure information #include "dssp.hpp" #include "dssp-io.hpp" #include #include #include #include #ifdef near #undef near #endif using residue = dssp::residue; using statistics = dssp::statistics; using structure_type = dssp::structure_type; using helix_type = dssp::helix_type; using helix_position_type = dssp::helix_position_type; using chain_break_type = dssp::chain_break_type; // -------------------------------------------------------------------- const double kPI = 3.141592653589793238462643383279502884; struct point { float mX, mY, mZ; }; inline point operator-(const point &lhs, const point &rhs) { return { lhs.mX - rhs.mX, lhs.mY - rhs.mY, lhs.mZ - rhs.mZ }; } inline point operator*(const point &lhs, float rhs) { return { lhs.mX * rhs, lhs.mY * rhs, lhs.mZ * rhs }; } inline float distance_sq(const point &a, const point &b) { return (a.mX - b.mX) * (a.mX - b.mX) + (a.mY - b.mY) * (a.mY - b.mY) + (a.mZ - b.mZ) * (a.mZ - b.mZ); } inline float distance(const point &a, const point &b) { return std::sqrt(distance_sq(a, b)); } inline float dot_product(const point &a, const point &b) { return a.mX * b.mX + a.mY * b.mY + a.mZ * b.mZ; } inline point cross_product(const point &a, const point &b) { return { a.mY * b.mZ - b.mY * a.mZ, a.mZ * b.mX - b.mZ * a.mX, a.mX * b.mY - b.mX * a.mY }; } float dihedral_angle(const point &p1, const point &p2, const point &p3, const point &p4) { point v12 = p1 - p2; // vector from p2 to p1 point v43 = p4 - p3; // vector from p3 to p4 point z = p2 - p3; // vector from p3 to p2 point p = cross_product(z, v12); point x = cross_product(z, v43); point y = cross_product(z, x); float u = dot_product(x, x); float v = dot_product(y, y); float result = 360; if (u > 0 and v > 0) { u = dot_product(p, x) / std::sqrt(u); v = dot_product(p, y) / std::sqrt(v); if (u != 0 or v != 0) result = std::atan2(v, u) * 180.f / static_cast(kPI); } return result; } float cosinus_angle(const point &p1, const point &p2, const point &p3, const point &p4) { point v12 = p1 - p2; point v34 = p3 - p4; float result = 0; float x = dot_product(v12, v12) * dot_product(v34, v34); if (x > 0) result = dot_product(v12, v34) / std::sqrt(x); return result; } enum residue_type : char { kUnknownResidue = 'X', // kAlanine = 'A', // ala kArginine = 'R', // arg kAsparagine = 'N', // asn kAsparticAcid = 'D', // asp kCysteine = 'C', // cys kGlutamicAcid = 'E', // glu kGlutamine = 'Q', // gln kGlycine = 'G', // gly kHistidine = 'H', // his kIsoleucine = 'I', // ile kLeucine = 'L', // leu kLysine = 'K', // lys kMethionine = 'M', // met kPhenylalanine = 'F', // phe kProline = 'P', // pro kSerine = 'S', // ser kThreonine = 'T', // thr kTryptophan = 'W', // trp kTyrosine = 'Y', // tyr kValine = 'V', // val }; struct { residue_type type; char name[4]; } const kResidueInfo[] = { { kUnknownResidue, "UNK" }, { kAlanine, "ALA" }, { kArginine, "ARG" }, { kAsparagine, "ASN" }, { kAsparticAcid, "ASP" }, { kCysteine, "CYS" }, { kGlutamicAcid, "GLU" }, { kGlutamine, "GLN" }, { kGlycine, "GLY" }, { kHistidine, "HIS" }, { kIsoleucine, "ILE" }, { kLeucine, "LEU" }, { kLysine, "LYS" }, { kMethionine, "MET" }, { kPhenylalanine, "PHE" }, { kProline, "PRO" }, { kSerine, "SER" }, { kThreonine, "THR" }, { kTryptophan, "TRP" }, { kTyrosine, "TYR" }, { kValine, "VAL" } }; constexpr residue_type MapResidue(std::string_view inName) { residue_type result = kUnknownResidue; for (auto &ri : kResidueInfo) { if (inName == ri.name) { result = ri.type; break; } } return result; } struct HBond { residue *res; double energy; }; enum class bridge_type { None, Parallel, AntiParallel }; struct bridge { bridge_type type; uint32_t sheet, ladder; std::set link; std::deque i, j; std::string chainI, chainJ; bool operator<(const bridge &b) const { return chainI < b.chainI or (chainI == b.chainI and i.front() < b.i.front()); } }; struct bridge_partner { residue *m_residue; uint32_t ladder; bool parallel; }; // -------------------------------------------------------------------- const float // kSSBridgeDistance = 3.0f, kMinimalDistance = 0.5f, kMinimalCADistance = 9.0f, kMinHBondEnergy = -9.9f, kMaxHBondEnergy = -0.5f, kCouplingConstant = -27.888f, // = -332 * 0.42 * 0.2 kMaxPeptideBondLength = 2.5f; const float kRadiusN = 1.65f, kRadiusCA = 1.87f, kRadiusC = 1.76f, kRadiusO = 1.4f, kRadiusSideAtom = 1.8f, kRadiusWater = 1.4f; struct dssp::residue { residue(residue &&) = default; residue &operator=(residue &&) = default; residue(int model_nr, std::string_view pdb_strand_id, int pdb_seq_num, std::string_view pdb_ins_code) : mPDBStrandID(pdb_strand_id) , mPDBSeqNum(pdb_seq_num) , mPDBInsCode(pdb_ins_code) , mChainBreak(chain_break_type::None) , m_model_nr(model_nr) { // update the box containing all atoms mBox[0].mX = mBox[0].mY = mBox[0].mZ = std::numeric_limits::max(); mBox[1].mX = mBox[1].mY = mBox[1].mZ = -std::numeric_limits::max(); mH = point{ std::numeric_limits::max(), std::numeric_limits::max(), std::numeric_limits::max() }; for (auto &p : m_chiralAtoms) p = {}; } void addAtom(cif::row_handle atom) { std::string asymID, compID, atomID, type, authAsymID; std::optional altID; int seqID, authSeqID; std::optional model; float x, y, z; cif::tie(asymID, compID, atomID, altID, type, seqID, model, x, y, z, authAsymID, authSeqID) = atom.get("label_asym_id", "label_comp_id", "label_atom_id", "label_alt_id", "type_symbol", "label_seq_id", "pdbx_PDB_model_num", "Cartn_x", "Cartn_y", "Cartn_z", "auth_asym_id", "auth_seq_id"); if (model and model != m_model_nr) return; if (m_seen == 0) { mAsymID = asymID; mCompoundID = compID; mSeqID = seqID; mAuthSeqID = authSeqID; mAuthAsymID = authAsymID; mType = MapResidue(mCompoundID); if (altID) mAltID = *altID; } if (atomID == "CA") { m_seen |= 1; mCAlpha = { x, y, z }; ExtendBox(mCAlpha, kRadiusCA + 2 * kRadiusWater); if (mType == kValine) m_chiralAtoms[1] = mCAlpha; } else if (atomID == "C") { m_seen |= 2; mC = { x, y, z }; ExtendBox(mC, kRadiusC + 2 * kRadiusWater); } else if (atomID == "N") { m_seen |= 4; mH = mN = { x, y, z }; ExtendBox(mN, kRadiusN + 2 * kRadiusWater); } else if (atomID == "O") { m_seen |= 8; mO = { x, y, z }; ExtendBox(mO, kRadiusO + 2 * kRadiusWater); } else if (type != "H") { m_seen |= 16; mSideChain.emplace_back(atomID, point{ x, y, z }); ExtendBox(point{ x, y, z }, kRadiusSideAtom + 2 * kRadiusWater); if (mType == kLeucine) { if (atomID == "CG") m_chiralAtoms[0] = { x, y, z }; else if (atomID == "CB") m_chiralAtoms[1] = { x, y, z }; else if (atomID == "CD1") m_chiralAtoms[2] = { x, y, z }; else if (atomID == "CD2") m_chiralAtoms[3] = { x, y, z }; } else if (mType == kValine) { if (atomID == "CB") m_chiralAtoms[0] = { x, y, z }; else if (atomID == "CG1") m_chiralAtoms[2] = { x, y, z }; else if (atomID == "CG2") m_chiralAtoms[3] = { x, y, z }; } } } void finish() { const int kSeenAll = (1 bitor 2 bitor 4 bitor 8); mComplete = (m_seen bitand kSeenAll) == kSeenAll; if (mType == kValine or mType == kLeucine) mChiralVolume = dot_product(m_chiralAtoms[1] - m_chiralAtoms[0], cross_product(m_chiralAtoms[2] - m_chiralAtoms[0], m_chiralAtoms[3] - m_chiralAtoms[0])); mRadius = mBox[1].mX - mBox[0].mX; if (mRadius < mBox[1].mY - mBox[0].mY) mRadius = mBox[1].mY - mBox[0].mY; if (mRadius < mBox[1].mZ - mBox[0].mZ) mRadius = mBox[1].mZ - mBox[0].mZ; mCenter.mX = (mBox[0].mX + mBox[1].mX) / 2; mCenter.mY = (mBox[0].mY + mBox[1].mY) / 2; mCenter.mZ = (mBox[0].mZ + mBox[1].mZ) / 2; } void assignHydrogen() { // assign the Hydrogen mH = mN; if (mType != kProline and mPrev != nullptr) { auto pc = mPrev->mC; auto po = mPrev->mO; float CODistance = static_cast(distance(pc, po)); mH.mX += (pc.mX - po.mX) / CODistance; mH.mY += (pc.mY - po.mY) / CODistance; mH.mZ += (pc.mZ - po.mZ) / CODistance; } } void SetSecondaryStructure(structure_type inSS) { mSecondaryStructure = inSS; } structure_type GetSecondaryStructure() const { return mSecondaryStructure; } void SetBetaPartner(uint32_t n, residue &inResidue, uint32_t inLadder, bool inParallel) { assert(n == 0 or n == 1); mBetaPartner[n].m_residue = &inResidue; mBetaPartner[n].ladder = inLadder; mBetaPartner[n].parallel = inParallel; } bridge_partner GetBetaPartner(uint32_t n) const { assert(n == 0 or n == 1); return mBetaPartner[n]; } void SetSheet(uint32_t inSheet) { mSheet = inSheet; } uint32_t GetSheet() const { return mSheet; } void SetStrand(uint32_t inStrand) { mStrand = inStrand; } uint32_t GetStrand() const { return mStrand; } bool IsBend() const { return mBend; } void SetBend(bool inBend) { mBend = inBend; } helix_position_type GetHelixFlag(helix_type helixType) const { size_t stride = static_cast(helixType); assert(stride < 4); return mHelixFlags[stride]; } bool IsHelixStart(helix_type helixType) const { size_t stride = static_cast(helixType); assert(stride < 4); return mHelixFlags[stride] == helix_position_type::Start or mHelixFlags[stride] == helix_position_type::StartAndEnd; } void SetHelixFlag(helix_type helixType, helix_position_type inHelixFlag) { size_t stride = static_cast(helixType); assert(stride < 4); mHelixFlags[stride] = inHelixFlag; } void SetSSBridgeNr(uint8_t inBridgeNr) { if (mType != kCysteine) throw std::runtime_error("Only cysteine residues can form sulphur bridges"); mSSBridgeNr = inBridgeNr; } uint8_t GetSSBridgeNr() const { if (mType != kCysteine) throw std::runtime_error("Only cysteine residues can form sulphur bridges"); return mSSBridgeNr; } float CalculateSurface(const std::vector &inResidues); float CalculateSurface(const point &inAtom, float inRadius, const std::vector &inNeighbours); bool AtomIntersectsBox(const point &atom, float inRadius) const { return atom.mX + inRadius >= mBox[0].mX and atom.mX - inRadius <= mBox[1].mX and atom.mY + inRadius >= mBox[0].mY and atom.mY - inRadius <= mBox[1].mY and atom.mZ + inRadius >= mBox[0].mZ and atom.mZ - inRadius <= mBox[1].mZ; } void ExtendBox(const point &atom, float inRadius) { if (mBox[0].mX > atom.mX - inRadius) mBox[0].mX = atom.mX - inRadius; if (mBox[0].mY > atom.mY - inRadius) mBox[0].mY = atom.mY - inRadius; if (mBox[0].mZ > atom.mZ - inRadius) mBox[0].mZ = atom.mZ - inRadius; if (mBox[1].mX < atom.mX + inRadius) mBox[1].mX = atom.mX + inRadius; if (mBox[1].mY < atom.mY + inRadius) mBox[1].mY = atom.mY + inRadius; if (mBox[1].mZ < atom.mZ + inRadius) mBox[1].mZ = atom.mZ + inRadius; } point get_atom(std::string_view name) { if (name == "CA") return mCAlpha; else if (name == "C") return mC; else if (name == "N") return mN; else if (name == "O") return mO; else if (name == "H") return mH; else { for (const auto &[n, p] : mSideChain) { if (n == name) return p; } } return {}; } residue *mNext = nullptr; residue *mPrev = nullptr; // const Monomer &mM; std::string mAsymID; int mSeqID; std::string mCompoundID; std::string mAltID; int mNumber; bool mComplete = false; std::string mAuthAsymID; int mAuthSeqID; std::string mPDBStrandID; int mPDBSeqNum; std::string mPDBInsCode; point mCAlpha, mC, mN, mO, mH; point mBox[2] = {}; float mRadius; point mCenter; std::vector> mSideChain; float mAccessibility = 0; float mChiralVolume = 0; // float mAlpha = 360, mKappa = 360, mPhi = 360, mPsi = 360, mTCO = 0, mOmega = 360; std::optional mAlpha, mKappa, mPhi, mPsi, mTCO, mOmega; residue_type mType; uint8_t mSSBridgeNr = 0; structure_type mSecondaryStructure = structure_type::Loop; HBond mHBondDonor[2] = {}, mHBondAcceptor[2] = {}; bridge_partner mBetaPartner[2] = {}; uint32_t mSheet = 0; uint32_t mStrand = 0; // Added to ease the writing of mmCIF's struct_sheet and friends helix_position_type mHelixFlags[4] = { helix_position_type::None, helix_position_type::None, helix_position_type::None, helix_position_type::None }; // bool mBend = false; chain_break_type mChainBreak = chain_break_type::None; int m_seen = 0, m_model_nr = 0; std::array m_chiralAtoms; }; // -------------------------------------------------------------------- class accumulator { public: struct candidate { point location; double radius; double distance; bool operator<(const candidate &rhs) const { return distance < rhs.distance; } }; void operator()(const point &a, const point &b, double d, double r) { double distance = distance_sq(a, b); d += kRadiusWater; r += kRadiusWater; double test = d + r; test *= test; if (distance < test and distance > 0.0001) { candidate c = { b - a, r * r, distance }; m_x.push_back(c); push_heap(m_x.begin(), m_x.end()); } } void sort() { sort_heap(m_x.begin(), m_x.end()); } std::vector m_x; }; // we use a fibonacci sphere to calculate the even distribution of the dots class MSurfaceDots { public: static MSurfaceDots &Instance(); size_t size() const { return mPoints.size(); } const point &operator[](size_t inIx) const { return mPoints[inIx]; } double weight() const { return mWeight; } private: MSurfaceDots(int32_t inN); std::vector mPoints; double mWeight; }; MSurfaceDots &MSurfaceDots::Instance() { const int32_t kN = 200; static MSurfaceDots sInstance(kN); return sInstance; } MSurfaceDots::MSurfaceDots(int32_t N) { auto P = 2 * N + 1; const float kGoldenRatio = (1 + std::sqrt(5.0f)) / 2; mWeight = (4 * kPI) / P; for (auto i = -N; i <= N; ++i) { float lat = std::asin((2.0f * i) / P); float lon = static_cast(std::fmod(i, kGoldenRatio) * 2 * kPI / kGoldenRatio); mPoints.emplace_back(point{ std::sin(lon) * std::cos(lat), std::cos(lon) * std::cos(lat), std::sin(lat) }); } } float residue::CalculateSurface(const point &inAtom, float inRadius, const std::vector &inNeighbours) { accumulator accumulate; for (auto r : inNeighbours) { if (r->AtomIntersectsBox(inAtom, inRadius)) { accumulate(inAtom, r->mN, inRadius, kRadiusN); accumulate(inAtom, r->mCAlpha, inRadius, kRadiusCA); accumulate(inAtom, r->mC, inRadius, kRadiusC); accumulate(inAtom, r->mO, inRadius, kRadiusO); for (const auto &[name, atom] : r->mSideChain) accumulate(inAtom, atom, inRadius, kRadiusSideAtom); } } accumulate.sort(); float radius = inRadius + kRadiusWater; float surface = 0; MSurfaceDots &surfaceDots = MSurfaceDots::Instance(); for (size_t i = 0; i < surfaceDots.size(); ++i) { point xx = surfaceDots[i] * radius; bool free = true; for (size_t k = 0; free and k < accumulate.m_x.size(); ++k) free = accumulate.m_x[k].radius < distance_sq(xx, accumulate.m_x[k].location); if (free) surface += static_cast(surfaceDots.weight()); } return surface * radius * radius; } float residue::CalculateSurface(const std::vector &inResidues) { std::vector neighbours; for (auto &r : inResidues) { point center = r.mCenter; float radius = r.mRadius; if (distance_sq(mCenter, center) < (mRadius + radius) * (mRadius + radius)) neighbours.push_back(const_cast(&r)); } mAccessibility = CalculateSurface(mN, kRadiusN, neighbours) + CalculateSurface(mCAlpha, kRadiusCA, neighbours) + CalculateSurface(mC, kRadiusC, neighbours) + CalculateSurface(mO, kRadiusO, neighbours); for (const auto &[name, atom] : mSideChain) mAccessibility += CalculateSurface(atom, kRadiusSideAtom, neighbours); return mAccessibility; } void CalculateAccessibilities(std::vector &inResidues, statistics &stats) { stats.accessible_surface = 0; for (auto &residue : inResidues) stats.accessible_surface += residue.CalculateSurface(inResidues); } // -------------------------------------------------------------------- // TODO: use the angle to improve bond energy calculation. double CalculateHBondEnergy(residue &inDonor, residue &inAcceptor) { double result = 0; if (inDonor.mType != kProline) { double distanceHO = distance(inDonor.mH, inAcceptor.mO); double distanceHC = distance(inDonor.mH, inAcceptor.mC); double distanceNC = distance(inDonor.mN, inAcceptor.mC); double distanceNO = distance(inDonor.mN, inAcceptor.mO); if (distanceHO < kMinimalDistance or distanceHC < kMinimalDistance or distanceNC < kMinimalDistance or distanceNO < kMinimalDistance) result = kMinHBondEnergy; else result = kCouplingConstant / distanceHO - kCouplingConstant / distanceHC + kCouplingConstant / distanceNC - kCouplingConstant / distanceNO; // DSSP compatibility mode: result = std::round(result * 1000) / 1000; if (result < kMinHBondEnergy) result = kMinHBondEnergy; } // update donor if (result < inDonor.mHBondAcceptor[0].energy) { inDonor.mHBondAcceptor[1] = inDonor.mHBondAcceptor[0]; inDonor.mHBondAcceptor[0].res = &inAcceptor; inDonor.mHBondAcceptor[0].energy = result; } else if (result < inDonor.mHBondAcceptor[1].energy) { inDonor.mHBondAcceptor[1].res = &inAcceptor; inDonor.mHBondAcceptor[1].energy = result; } // and acceptor if (result < inAcceptor.mHBondDonor[0].energy) { inAcceptor.mHBondDonor[1] = inAcceptor.mHBondDonor[0]; inAcceptor.mHBondDonor[0].res = &inDonor; inAcceptor.mHBondDonor[0].energy = result; } else if (result < inAcceptor.mHBondDonor[1].energy) { inAcceptor.mHBondDonor[1].res = &inDonor; inAcceptor.mHBondDonor[1].energy = result; } return result; } // -------------------------------------------------------------------- void CalculateHBondEnergies(std::vector &inResidues, std::vector> &q) { std::unique_ptr progress; if (cif::VERBOSE == 0 or cif::VERBOSE == 1) progress.reset(new cif::progress_bar(q.size(), "calculate hbond energies")); for (const auto &[i, j] : q) { auto &ri = inResidues[i]; auto &rj = inResidues[j]; CalculateHBondEnergy(ri, rj); if (j != i + 1) CalculateHBondEnergy(rj, ri); if (progress) progress->consumed(1); } } // -------------------------------------------------------------------- bool NoChainBreak(const residue *a, const residue *b) { bool result = a->mAsymID == b->mAsymID; for (auto r = a; result and r != b; r = r->mNext) { auto next = r->mNext; if (next == nullptr) result = false; else result = next->mNumber == r->mNumber + 1; } return result; } bool NoChainBreak(const residue &a, const residue &b) { return NoChainBreak(&a, &b); } // -------------------------------------------------------------------- bool TestBond(const residue *a, const residue *b) { return (a->mHBondAcceptor[0].res == b and a->mHBondAcceptor[0].energy < kMaxHBondEnergy) or (a->mHBondAcceptor[1].res == b and a->mHBondAcceptor[1].energy < kMaxHBondEnergy); } bool test_bond(dssp::residue_info const &a, dssp::residue_info const &b) { return a and b and TestBond(a.m_impl, b.m_impl); } // -------------------------------------------------------------------- bridge_type TestBridge(const residue &r1, const residue &r2) { // I. a d II. a d parallel auto a = r1.mPrev; // \ / auto b = &r1; // b e b e auto c = r1.mNext; // / \ .. auto d = r2.mPrev; // c f c f auto e = &r2; // auto f = r2.mNext; // III. a <- f IV. a f antiparallel // bridge_type result = bridge_type::None; // b e b <-> e // // c -> d c d if (a and c and NoChainBreak(a, c) and d and f and NoChainBreak(d, f)) { if ((TestBond(c, e) and TestBond(e, a)) or (TestBond(f, b) and TestBond(b, d))) result = bridge_type::Parallel; else if ((TestBond(c, d) and TestBond(f, a)) or (TestBond(e, b) and TestBond(b, e))) result = bridge_type::AntiParallel; } return result; } // -------------------------------------------------------------------- // return true if any of the residues in bridge a is identical to any of the residues in bridge b bool Linked(const bridge &a, const bridge &b) { return find_first_of(a.i.begin(), a.i.end(), b.i.begin(), b.i.end()) != a.i.end() or find_first_of(a.i.begin(), a.i.end(), b.j.begin(), b.j.end()) != a.i.end() or find_first_of(a.j.begin(), a.j.end(), b.i.begin(), b.i.end()) != a.j.end() or find_first_of(a.j.begin(), a.j.end(), b.j.begin(), b.j.end()) != a.j.end(); } // -------------------------------------------------------------------- void CalculateBetaSheets(std::vector &inResidues, statistics &stats, std::vector> &q) { // if (cif::VERBOSE) // std::cerr << "calculating beta sheets" << std::endl; std::unique_ptr progress; if (cif::VERBOSE == 0 or cif::VERBOSE == 1) progress.reset(new cif::progress_bar(q.size(), "calculate beta sheets")); // Calculate Bridges std::vector bridges; for (const auto &[i, j] : q) { if (progress) progress->consumed(1); auto &ri = inResidues[i]; auto &rj = inResidues[j]; bridge_type type = TestBridge(ri, rj); if (type == bridge_type::None) continue; bool found = false; for (bridge &bridge : bridges) { if (type != bridge.type or i != bridge.i.back() + 1) continue; if (type == bridge_type::Parallel and bridge.j.back() + 1 == j) { bridge.i.push_back(i); bridge.j.push_back(j); found = true; break; } if (type == bridge_type::AntiParallel and bridge.j.front() - 1 == j) { bridge.i.push_back(i); bridge.j.push_front(j); found = true; break; } } if (not found) { bridge bridge = {}; bridge.type = type; bridge.i.push_back(i); bridge.chainI = ri.mAsymID; bridge.j.push_back(j); bridge.chainJ = rj.mAsymID; bridges.push_back(bridge); } } // extend ladders std::sort(bridges.begin(), bridges.end()); for (uint32_t i = 0; i < bridges.size(); ++i) { for (uint32_t j = i + 1; j < bridges.size(); ++j) { uint32_t ibi = bridges[i].i.front(); uint32_t iei = bridges[i].i.back(); uint32_t jbi = bridges[i].j.front(); uint32_t jei = bridges[i].j.back(); uint32_t ibj = bridges[j].i.front(); uint32_t iej = bridges[j].i.back(); uint32_t jbj = bridges[j].j.front(); uint32_t jej = bridges[j].j.back(); if (bridges[i].type != bridges[j].type or NoChainBreak(inResidues[std::min(ibi, ibj)], inResidues[std::max(iei, iej)]) == false or NoChainBreak(inResidues[std::min(jbi, jbj)], inResidues[std::max(jei, jej)]) == false or ibj - iei >= 6 or (iei >= ibj and ibi <= iej)) { continue; } bool bulge; if (bridges[i].type == bridge_type::Parallel) bulge = ((jbj - jei < 6 and ibj - iei < 3) or (jbj - jei < 3)); else bulge = ((jbi - jej < 6 and ibj - iei < 3) or (jbi - jej < 3)); if (bulge) { bridges[i].i.insert(bridges[i].i.end(), bridges[j].i.begin(), bridges[j].i.end()); if (bridges[i].type == bridge_type::Parallel) bridges[i].j.insert(bridges[i].j.end(), bridges[j].j.begin(), bridges[j].j.end()); else bridges[i].j.insert(bridges[i].j.begin(), bridges[j].j.begin(), bridges[j].j.end()); bridges.erase(bridges.begin() + j); --j; } } } // Sheet std::set ladderset; for (bridge &bridge : bridges) { ladderset.insert(&bridge); size_t n = bridge.i.size(); if (n > dssp::kHistogramSize) n = dssp::kHistogramSize; if (bridge.type == bridge_type::Parallel) stats.histogram.parallel_bridges_per_ladder[n - 1] += 1; else stats.histogram.antiparallel_bridges_per_ladder[n - 1] += 1; } uint32_t sheet = 1, ladder = 0; while (not ladderset.empty()) { std::set sheetset; sheetset.insert(*ladderset.begin()); ladderset.erase(ladderset.begin()); bool done = false; while (not done) { done = true; for (bridge *a : sheetset) { for (bridge *b : ladderset) { if (Linked(*a, *b)) { sheetset.insert(b); ladderset.erase(b); done = false; break; } } if (not done) break; } } for (bridge *bridge : sheetset) { bridge->ladder = ladder; bridge->sheet = sheet; bridge->link = sheetset; ++ladder; } size_t nrOfLaddersPerSheet = sheetset.size(); if (nrOfLaddersPerSheet > dssp::kHistogramSize) nrOfLaddersPerSheet = dssp::kHistogramSize; if (nrOfLaddersPerSheet == 1 and (*sheetset.begin())->i.size() > 1) stats.histogram.ladders_per_sheet[0] += 1; else if (nrOfLaddersPerSheet > 1) stats.histogram.ladders_per_sheet[nrOfLaddersPerSheet - 1] += 1; ++sheet; } for (bridge &bridge : bridges) { // find out if any of the i and j set members already have // a bridge assigned, if so, we're assigning bridge 2 uint32_t betai = 0, betaj = 0; for (uint32_t l : bridge.i) { if (inResidues[l].GetBetaPartner(0).m_residue != nullptr) { betai = 1; break; } } for (uint32_t l : bridge.j) { if (inResidues[l].GetBetaPartner(0).m_residue != nullptr) { betaj = 1; break; } } structure_type ss = structure_type::Betabridge; if (bridge.i.size() > 1) ss = structure_type::Strand; if (bridge.type == bridge_type::Parallel) { stats.count.H_bonds_in_parallel_bridges += bridge.i.back() - bridge.i.front() + 2; std::deque::iterator j = bridge.j.begin(); for (uint32_t i : bridge.i) inResidues[i].SetBetaPartner(betai, inResidues[*j++], bridge.ladder, true); j = bridge.i.begin(); for (uint32_t i : bridge.j) inResidues[i].SetBetaPartner(betaj, inResidues[*j++], bridge.ladder, true); } else { stats.count.H_bonds_in_antiparallel_bridges += bridge.i.back() - bridge.i.front() + 2; std::deque::reverse_iterator j = bridge.j.rbegin(); for (uint32_t i : bridge.i) inResidues[i].SetBetaPartner(betai, inResidues[*j++], bridge.ladder, false); j = bridge.i.rbegin(); for (uint32_t i : bridge.j) inResidues[i].SetBetaPartner(betaj, inResidues[*j++], bridge.ladder, false); } for (uint32_t i = bridge.i.front(); i <= bridge.i.back(); ++i) { if (inResidues[i].GetSecondaryStructure() != structure_type::Strand) inResidues[i].SetSecondaryStructure(ss); inResidues[i].SetSheet(bridge.sheet); } for (uint32_t i = bridge.j.front(); i <= bridge.j.back(); ++i) { if (inResidues[i].GetSecondaryStructure() != structure_type::Strand) inResidues[i].SetSecondaryStructure(ss); inResidues[i].SetSheet(bridge.sheet); } } // Create 'strands'. A strand is a range of residues without a gap in between // that belong to the same sheet. int strand = 0; for (uint32_t iSheet = 1; iSheet < sheet; ++iSheet) { int lastNr = -1; for (auto &res : inResidues) { if (res.mSheet != iSheet) continue; if (lastNr + 1 < res.mNumber) ++strand; res.mStrand = strand; lastNr = res.mNumber; } } } // -------------------------------------------------------------------- void CalculateAlphaHelices(std::vector &inResidues, statistics &stats, bool inPreferPiHelices = true) { if (cif::VERBOSE) std::cerr << "calculating alpha helices" << std::endl; // Helix and Turn for (helix_type helixType : { helix_type::_3_10, helix_type::alpha, helix_type::pi }) { uint32_t stride = static_cast(helixType) + 3; for (uint32_t i = 0; i + stride < inResidues.size(); ++i) { if (NoChainBreak(inResidues[i], inResidues[i + stride]) and TestBond(&inResidues[i + stride], &inResidues[i])) { inResidues[i + stride].SetHelixFlag(helixType, helix_position_type::End); for (uint32_t j = i + 1; j < i + stride; ++j) { if (inResidues[j].GetHelixFlag(helixType) == helix_position_type::None) inResidues[j].SetHelixFlag(helixType, helix_position_type::Middle); } if (inResidues[i].GetHelixFlag(helixType) == helix_position_type::End) inResidues[i].SetHelixFlag(helixType, helix_position_type::StartAndEnd); else inResidues[i].SetHelixFlag(helixType, helix_position_type::Start); } } } for (auto &r : inResidues) { if (r.mKappa.has_value()) r.SetBend(*r.mKappa > 70); } for (uint32_t i = 1; i + 4 < inResidues.size(); ++i) { if (inResidues[i].IsHelixStart(helix_type::alpha) and inResidues[i - 1].IsHelixStart(helix_type::alpha)) { for (uint32_t j = i; j <= i + 3; ++j) inResidues[j].SetSecondaryStructure(structure_type::Alphahelix); } } for (uint32_t i = 1; i + 3 < inResidues.size(); ++i) { if (inResidues[i].IsHelixStart(helix_type::_3_10) and inResidues[i - 1].IsHelixStart(helix_type::_3_10)) { bool empty = true; for (uint32_t j = i; empty and j <= i + 2; ++j) empty = inResidues[j].GetSecondaryStructure() == structure_type::Loop or inResidues[j].GetSecondaryStructure() == structure_type::Helix_3; if (empty) { for (uint32_t j = i; j <= i + 2; ++j) inResidues[j].SetSecondaryStructure(structure_type::Helix_3); } } } for (uint32_t i = 1; i + 5 < inResidues.size(); ++i) { if (inResidues[i].IsHelixStart(helix_type::pi) and inResidues[i - 1].IsHelixStart(helix_type::pi)) { bool empty = true; for (uint32_t j = i; empty and j <= i + 4; ++j) empty = inResidues[j].GetSecondaryStructure() == structure_type::Loop or inResidues[j].GetSecondaryStructure() == structure_type::Helix_5 or (inPreferPiHelices and inResidues[j].GetSecondaryStructure() == structure_type::Alphahelix); if (empty) { for (uint32_t j = i; j <= i + 4; ++j) inResidues[j].SetSecondaryStructure(structure_type::Helix_5); } } } for (uint32_t i = 1; i + 1 < inResidues.size(); ++i) { if (inResidues[i].GetSecondaryStructure() == structure_type::Loop) { bool isTurn = false; for (helix_type helixType : { helix_type::_3_10, helix_type::alpha, helix_type::pi }) { uint32_t stride = 3 + static_cast(helixType); for (uint32_t k = 1; k < stride and not isTurn; ++k) isTurn = (i >= k) and inResidues[i - k].IsHelixStart(helixType); } if (isTurn) inResidues[i].SetSecondaryStructure(structure_type::Turn); else if (inResidues[i].IsBend()) inResidues[i].SetSecondaryStructure(structure_type::Bend); } } std::string asym; size_t helixLength = 0; for (auto &r : inResidues) { if (r.mAsymID != asym) { helixLength = 0; asym = r.mAsymID; } if (r.GetSecondaryStructure() == structure_type::Alphahelix) ++helixLength; else if (helixLength > 0) { if (helixLength > dssp::kHistogramSize) helixLength = dssp::kHistogramSize; stats.histogram.residues_per_alpha_helix[helixLength - 1] += 1; helixLength = 0; } } } // -------------------------------------------------------------------- void CalculatePPHelices(std::vector &inResidues, statistics &stats, int stretch_length) { if (cif::VERBOSE) std::cerr << "calculating pp helices" << std::endl; size_t N = inResidues.size(); const float epsilon = 29; const float phi_min = -75 - epsilon; const float phi_max = -75 + epsilon; const float psi_min = 145 - epsilon; const float psi_max = 145 + epsilon; std::vector phi(N), psi(N); for (uint32_t i = 1; i + 1 < inResidues.size(); ++i) { phi[i] = static_cast(inResidues[i].mPhi.value_or(360)); psi[i] = static_cast(inResidues[i].mPsi.value_or(360)); } for (uint32_t i = 1; i + 3 < inResidues.size(); ++i) { switch (stretch_length) { case 2: { if (phi_min > phi[i + 0] or phi[i + 0] > phi_max or phi_min > phi[i + 1] or phi[i + 1] > phi_max) continue; if (psi_min > psi[i + 0] or psi[i + 0] > psi_max or psi_min > psi[i + 1] or psi[i + 1] > psi_max) continue; // auto phi_avg = (phi[i + 0] + phi[i + 1]) / 2; // auto phi_sq = (phi[i + 0] - phi_avg) * (phi[i + 0] - phi_avg) + // (phi[i + 1] - phi_avg) * (phi[i + 1] - phi_avg); // if (phi_sq >= 200) // continue; // auto psi_avg = (psi[i + 0] + psi[i + 1]) / 2; // auto psi_sq = (psi[i + 0] - psi_avg) * (psi[i + 0] - psi_avg) + // (psi[i + 1] - psi_avg) * (psi[i + 1] - psi_avg); // if (psi_sq >= 200) // continue; switch (inResidues[i].GetHelixFlag(helix_type::pp)) { case helix_position_type::None: inResidues[i].SetHelixFlag(helix_type::pp, helix_position_type::Start); break; case helix_position_type::End: inResidues[i].SetHelixFlag(helix_type::pp, helix_position_type::Middle); break; default: break; } inResidues[i + 1].SetHelixFlag(helix_type::pp, helix_position_type::End); if (inResidues[i].GetSecondaryStructure() == structure_type::Loop) inResidues[i].SetSecondaryStructure(structure_type::Helix_PPII); if (inResidues[i + 1].GetSecondaryStructure() == structure_type::Loop) inResidues[i + 1].SetSecondaryStructure(structure_type::Helix_PPII); } break; case 3: { if (phi_min > phi[i + 0] or phi[i + 0] > phi_max or phi_min > phi[i + 1] or phi[i + 1] > phi_max or phi_min > phi[i + 2] or phi[i + 2] > phi_max) continue; if (psi_min > psi[i + 0] or psi[i + 0] > psi_max or psi_min > psi[i + 1] or psi[i + 1] > psi_max or psi_min > psi[i + 2] or psi[i + 2] > psi_max) continue; // auto phi_avg = (phi[i + 0] + phi[i + 1] + phi[i + 2]) / 3; // auto phi_sq = (phi[i + 0] - phi_avg) * (phi[i + 0] - phi_avg) + // (phi[i + 1] - phi_avg) * (phi[i + 1] - phi_avg) + // (phi[i + 2] - phi_avg) * (phi[i + 2] - phi_avg); // if (phi_sq >= 300) // continue; // auto psi_avg = (psi[i + 0] + psi[i + 1] + psi[i + 2]) / 3; // auto psi_sq = (psi[i + 0] - psi_avg) * (psi[i + 0] - psi_avg) + // (psi[i + 1] - psi_avg) * (psi[i + 1] - psi_avg) + // (psi[i + 2] - psi_avg) * (psi[i + 2] - psi_avg); // if (psi_sq >= 300) // continue; switch (inResidues[i].GetHelixFlag(helix_type::pp)) { case helix_position_type::None: inResidues[i].SetHelixFlag(helix_type::pp, helix_position_type::Start); break; case helix_position_type::End: inResidues[i].SetHelixFlag(helix_type::pp, helix_position_type::StartAndEnd); break; default: break; } inResidues[i + 1].SetHelixFlag(helix_type::pp, helix_position_type::Middle); inResidues[i + 2].SetHelixFlag(helix_type::pp, helix_position_type::End); if (inResidues[i + 0].GetSecondaryStructure() == structure_type::Loop) inResidues[i + 0].SetSecondaryStructure(structure_type::Helix_PPII); if (inResidues[i + 1].GetSecondaryStructure() == structure_type::Loop) inResidues[i + 1].SetSecondaryStructure(structure_type::Helix_PPII); if (inResidues[i + 2].GetSecondaryStructure() == structure_type::Loop) inResidues[i + 2].SetSecondaryStructure(structure_type::Helix_PPII); break; } default: throw std::runtime_error("Unsupported stretch length"); } } } // -------------------------------------------------------------------- struct DSSP_impl { DSSP_impl(const cif::datablock &db, int model_nr, int min_poly_proline_stretch_length); auto findRes(const std::string &asymID, int seqID) { return std::find_if(mResidues.begin(), mResidues.end(), [&](auto &r) { return r.mAsymID == asymID and r.mSeqID == seqID; }); } void calculateSurface(); void calculateSecondaryStructure(); std::string GetPDBHEADERLine(); std::string GetPDBCOMPNDLine(); std::string GetPDBSOURCELine(); std::string GetPDBAUTHORLine(); const cif::datablock &mDB; std::vector mResidues; std::vector> mSSBonds; int m_min_poly_proline_stretch_length; statistics mStats = {}; }; // -------------------------------------------------------------------- DSSP_impl::DSSP_impl(const cif::datablock &db, int model_nr, int min_poly_proline_stretch_length) : mDB(db) , m_min_poly_proline_stretch_length(min_poly_proline_stretch_length) { using namespace cif::literals; if (cif::VERBOSE) std::cerr << "loading residues" << std::endl; int resNumber = 0; auto &pdbx_poly_seq_scheme = mDB["pdbx_poly_seq_scheme"]; auto &atom_site = mDB["atom_site"]; using key_type = std::tuple; using index_type = std::map; index_type index; mResidues.reserve(pdbx_poly_seq_scheme.size()); for (const auto &[asym_id, seq_id, pdb_strand_id, pdb_seq_num, pdb_ins_code] : pdbx_poly_seq_scheme.rows("asym_id", "seq_id", "pdb_strand_id", "pdb_seq_num", "pdb_ins_code")) { index[{asym_id, seq_id}] = mResidues.size(); mResidues.emplace_back(model_nr, pdb_strand_id, pdb_seq_num, pdb_ins_code); } for (auto atom : atom_site) { std::string asym_id; int seq_id; cif::tie(asym_id, seq_id) = atom.get("label_asym_id", "label_seq_id"); auto i = index.find({asym_id, seq_id}); if (i == index.end()) continue; mResidues[i->second].addAtom(atom); } for (auto &residue : mResidues) residue.finish(); mResidues.erase(std::remove_if(mResidues.begin(), mResidues.end(), [](const dssp::residue &r) { return not r.mComplete; }), mResidues.end()); mStats.count.chains = 1; chain_break_type brk = chain_break_type::NewChain; for (size_t i = 0; i < mResidues.size(); ++i) { auto &residue = mResidues[i]; ++resNumber; if (i > 0) { if (distance(mResidues[i - 1].mC, mResidues[i].mN) > kMaxPeptideBondLength) { ++mStats.count.chains; if (mResidues[i - 1].mAsymID == mResidues[i].mAsymID) brk = chain_break_type::Gap; else brk = chain_break_type::NewChain; ++resNumber; } } residue.mChainBreak = brk; residue.mNumber = resNumber; brk = chain_break_type::None; } mStats.count.residues = static_cast(mResidues.size()); for (size_t i = 0; i + 1 < mResidues.size(); ++i) { auto &cur = mResidues[i]; auto &next = mResidues[i + 1]; next.mPrev = &cur; cur.mNext = &next; } for (size_t i = 0; i < mResidues.size(); ++i) { auto &cur = mResidues[i]; if (i >= 2 and i + 2 < mResidues.size()) { auto &prevPrev = mResidues[i - 2]; auto &nextNext = mResidues[i + 2]; if (NoChainBreak(prevPrev, nextNext) and prevPrev.mSeqID + 4 == nextNext.mSeqID) { float ckap = cosinus_angle( cur.mCAlpha, prevPrev.mCAlpha, nextNext.mCAlpha, cur.mCAlpha); float skap = std::sqrt(1 - ckap * ckap); auto kappa = std::atan2(skap, ckap) * static_cast(180 / kPI); if (not std::isnan(kappa)) cur.mKappa = kappa; } } if (i + 1 < mResidues.size()) { auto &next = mResidues[i + 1]; next.assignHydrogen(); if (NoChainBreak(cur, next)) { cur.mPsi = dihedral_angle(cur.mN, cur.mCAlpha, cur.mC, next.mN); cur.mOmega = dihedral_angle(cur.mCAlpha, cur.mC, next.mN, next.mCAlpha); } } if (i > 0) { auto &prev = mResidues[i - 1]; if (NoChainBreak(prev, cur)) { cur.mTCO = cosinus_angle(cur.mC, cur.mO, prev.mC, prev.mO); cur.mPhi = dihedral_angle(prev.mC, cur.mN, cur.mCAlpha, cur.mC); } } if (i >= 1 and i + 2 < mResidues.size()) { auto &prev = mResidues[i - 1]; auto &next = mResidues[i + 1]; auto &nextNext = mResidues[i + 2]; if (NoChainBreak(prev, nextNext)) cur.mAlpha = dihedral_angle(prev.mCAlpha, cur.mCAlpha, next.mCAlpha, nextNext.mCAlpha); } } } void DSSP_impl::calculateSecondaryStructure() { if (cif::VERBOSE) std::cerr << "calculating secondary structure" << std::endl; using namespace cif::literals; for (auto [asym1, seq1, asym2, seq2] : mDB["struct_conn"].find("conn_type_id"_key == "disulf", "ptnr1_label_asym_id", "ptnr1_label_seq_id", "ptnr2_label_asym_id", "ptnr2_label_seq_id")) { auto r1 = findRes(asym1, seq1); if (r1 == mResidues.end()) { if (cif::VERBOSE > 0) std::cerr << "Missing (incomplete?) residue for SS bond when trying to find " << asym1 << '/' << seq1 << std::endl; continue; // throw std::runtime_error("Invalid file, missing residue for SS bond"); } auto r2 = findRes(asym2, seq2); if (r2 == mResidues.end()) { if (cif::VERBOSE > 0) std::cerr << "Missing (incomplete?) residue for SS bond when trying to find " << asym2 << '/' << seq2 << std::endl; continue; // throw std::runtime_error("Invalid file, missing residue for SS bond"); } mSSBonds.emplace_back(&*r1, &*r2); } // Prefetch the c-alpha positions. No, really, that might be the trick std::vector cAlphas; cAlphas.reserve(mResidues.size()); for (auto &r : mResidues) cAlphas.emplace_back(r.mCAlpha); std::unique_ptr progress; if (cif::VERBOSE == 0 or cif::VERBOSE == 1) progress.reset(new cif::progress_bar((mResidues.size() * (mResidues.size() - 1)) / 2, "calculate distances")); // Calculate the HBond energies std::vector> near; for (uint32_t i = 0; i + 1 < mResidues.size(); ++i) { auto cai = cAlphas[i]; for (uint32_t j = i + 1; j < mResidues.size(); ++j) { auto caj = cAlphas[j]; if (distance_sq(cai, caj) > (kMinimalCADistance * kMinimalCADistance)) continue; near.emplace_back(i, j); } if (progress) progress->consumed(mResidues.size() - i - 1); } if (cif::VERBOSE > 0) std::cerr << "Considering " << near.size() << " pairs of residues" << std::endl; progress.reset(nullptr); CalculateHBondEnergies(mResidues, near); CalculateBetaSheets(mResidues, mStats, near); CalculateAlphaHelices(mResidues, mStats); CalculatePPHelices(mResidues, mStats, m_min_poly_proline_stretch_length); if (cif::VERBOSE > 1) { for (auto &r : mResidues) { char helix[5] = {}; for (helix_type helixType : { helix_type::_3_10, helix_type::alpha, helix_type::pi, helix_type::pp }) { switch (r.GetHelixFlag(helixType)) { case helix_position_type::Start: helix[static_cast(helixType)] = '>'; break; case helix_position_type::Middle: helix[static_cast(helixType)] = helixType == helix_type::pp ? 'P' : '3' + static_cast(helixType); break; case helix_position_type::StartAndEnd: helix[static_cast(helixType)] = 'X'; break; case helix_position_type::End: helix[static_cast(helixType)] = '<'; break; case helix_position_type::None: helix[static_cast(helixType)] = ' '; break; } } auto id = r.mAsymID + ':' + std::to_string(r.mSeqID) + '/' + r.mCompoundID; std::cerr << id << std::string(12 - id.length(), ' ') << char(r.mSecondaryStructure) << ' ' << helix << std::endl; } } // finish statistics mStats.count.SS_bridges = static_cast(mSSBonds.size()); mStats.count.intra_chain_SS_bridges = 0; uint8_t ssBondNr = 0; for (const auto &[a, b] : mSSBonds) { if (a == b) { if (cif::VERBOSE > 0) std::cerr << "In the SS bonds list, the residue " << a->mAsymID << ':' << a->mSeqID << " is bonded to itself" << std::endl; continue; } if (a->mAsymID == b->mAsymID and NoChainBreak(a, b)) ++mStats.count.intra_chain_SS_bridges; a->mSSBridgeNr = b->mSSBridgeNr = ++ssBondNr; } mStats.count.H_bonds = 0; for (auto &r : mResidues) { auto donor = r.mHBondDonor; for (int i = 0; i < 2; ++i) { if (donor[i].res != nullptr and donor[i].energy < kMaxHBondEnergy) { ++mStats.count.H_bonds; auto k = donor[i].res->mNumber - r.mNumber; if (k >= -5 and k <= 5) mStats.count.H_Bonds_per_distance[k + 5] += 1; } } } } void DSSP_impl::calculateSurface() { CalculateAccessibilities(mResidues, mStats); } // -------------------------------------------------------------------- // Truncate lines in pseudo PDB format to this length const int kTruncateAt = 127; std::string FixStringLength(std::string s, std::string::size_type l = kTruncateAt) { if (s.length() > l) s = s.substr(0, l - 4) + "... "; else if (s.length() < l) s.append(l - s.length(), ' '); return s; } std::string cif2pdbDate(const std::string &d) { const std::regex rx(R"((\d{4})-(\d{2})(?:-(\d{2}))?)"); const char *kMonths[12] = { "JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC" }; std::smatch m; std::ostringstream os; if (std::regex_match(d, m, rx)) { int year = std::stoi(m[1].str()); int month = std::stoi(m[2].str()); if (m[3].matched) os << std::setw(2) << std::setfill('0') << stoi(m[3].str()) << '-'; os << kMonths[month - 1] << '-' << std::setw(2) << std::setfill('0') << (year % 100); } return os.str(); } std::string cif2pdbAuth(std::string name) { const std::regex rx(R"(([^,]+), (\S+))"); std::smatch m; if (std::regex_match(name, m, rx)) name = m[2].str() + m[1].str(); return name; } std::string DSSP_impl::GetPDBHEADERLine() { std::string keywords; auto &cat1 = mDB["struct_keywords"]; for (auto r : cat1) { keywords = FixStringLength(r["pdbx_keywords"].as(), 40); break; } std::string date; for (auto r : mDB["pdbx_database_status"]) { date = r["recvd_initial_deposition_date"].as(); if (date.empty()) continue; date = cif2pdbDate(date); break; } if (date.empty()) { for (auto r : mDB["database_PDB_rev"]) { date = r["date_original"].as(); if (date.empty()) continue; date = cif2pdbDate(date); break; } } date = FixStringLength(date, 9); // 0 1 2 3 4 5 6 7 8 // HEADER xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxDDDDDDDDD IIII char header[] = "HEADER xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxDDDDDDDDD IIII"; std::copy(keywords.begin(), keywords.end(), header + 10); std::copy(date.begin(), date.end(), header + 50); std::string id = mDB.name(); if (id.length() < 4) id.insert(id.end(), 4 - id.length(), ' '); else if (id.length() > 4) id.erase(id.begin() + 4, id.end()); std::copy(id.begin(), id.end(), header + 62); return FixStringLength(header); } std::string DSSP_impl::GetPDBCOMPNDLine() { // COMPND using namespace std::placeholders; using namespace cif::literals; int molID = 0; std::vector cmpnd; for (auto r : mDB["entity"].find("type"_key == "polymer")) { std::string entityID = r["id"].as(); ++molID; cmpnd.push_back("MOL_ID: " + std::to_string(molID)); std::string molecule = r["pdbx_description"].as(); cmpnd.push_back("MOLECULE: " + molecule); auto poly = mDB["entity_poly"].find("entity_id"_key == entityID); if (not poly.empty()) { std::string chains = poly.front()["pdbx_strand_id"].as(); cif::replace_all(chains, ",", ", "); cmpnd.push_back("CHAIN: " + chains); } std::string fragment = r["pdbx_fragment"].as(); if (not fragment.empty()) cmpnd.push_back("FRAGMENT: " + fragment); for (auto sr : mDB["entity_name_com"].find("entity_id"_key == entityID)) { std::string syn = sr["name"].as(); if (not syn.empty()) cmpnd.push_back("SYNONYM: " + syn); } std::string mutation = r["pdbx_mutation"].as(); if (not mutation.empty()) cmpnd.push_back("MUTATION: " + mutation); std::string ec = r["pdbx_ec"].as(); if (not ec.empty()) cmpnd.push_back("EC: " + ec); if (r["src_method"] == "man" or r["src_method"] == "syn") cmpnd.push_back("ENGINEERED: YES"); std::string details = r["details"].as(); if (not details.empty()) cmpnd.push_back("OTHER_DETAILS: " + details); } return FixStringLength("COMPND " + cif::join(cmpnd, "; "), kTruncateAt); } std::string DSSP_impl::GetPDBSOURCELine() { // SOURCE using namespace cif::literals; int molID = 0; std::vector source; for (auto r : mDB["entity"]) { if (r["type"] != "polymer") continue; std::string entityID = r["id"].as(); ++molID; source.push_back("MOL_ID: " + std::to_string(molID)); if (r["src_method"] == "syn") source.push_back("SYNTHETIC: YES"); auto &gen = mDB["entity_src_gen"]; const std::pair kGenSourceMapping[] = { { "gene_src_common_name", "ORGANISM_COMMON" }, { "pdbx_gene_src_gene", "GENE" }, { "gene_src_strain", "STRAIN" }, { "pdbx_gene_src_cell_line", "CELL_LINE" }, { "pdbx_gene_src_organelle", "ORGANELLE" }, { "pdbx_gene_src_cellular_location", "CELLULAR_LOCATION" }, { "pdbx_gene_src_scientific_name", "ORGANISM_SCIENTIFIC" }, { "pdbx_gene_src_ncbi_taxonomy_id", "ORGANISM_TAXID" }, { "pdbx_host_org_scientific_name", "EXPRESSION_SYSTEM" }, { "pdbx_host_org_ncbi_taxonomy_id", "EXPRESSION_SYSTEM_TAXID" }, { "pdbx_host_org_strain", "EXPRESSION_SYSTEM_STRAIN" }, { "pdbx_host_org_variant", "EXPRESSION_SYSTEM_VARIANT" }, { "pdbx_host_org_cellular_location", "EXPRESSION_SYSTEM_CELLULAR_LOCATION" }, { "pdbx_host_org_vector_type", "EXPRESSION_SYSTEM_VECTOR_TYPE" }, { "pdbx_host_org_vector", "EXPRESSION_SYSTEM_VECTOR" }, { "pdbx_host_org_gene", "EXPRESSION_SYSTEM_GENE" }, { "plasmid_name", "EXPRESSION_SYSTEM_PLASMID" } }; for (auto gr : gen.find("entity_id"_key == entityID)) { for (auto m : kGenSourceMapping) { std::string cname, sname; tie(cname, sname) = m; std::string s = gr[cname].as(); if (not s.empty()) source.push_back(sname + ": " + s); } } auto &nat = mDB["entity_src_nat"]; const std::pair kNatSourceMapping[] = { { "common_name", "ORGANISM_COMMON" }, { "strain", "STRAIN" }, { "pdbx_organism_scientific", "ORGANISM_SCIENTIFIC" }, { "pdbx_ncbi_taxonomy_id", "ORGANISM_TAXID" }, { "pdbx_cellular_location", "CELLULAR_LOCATION" }, { "pdbx_plasmid_name", "PLASMID" }, { "pdbx_organ", "ORGAN" }, { "details", "OTHER_DETAILS" } }; for (auto nr : nat.find("entity_id"_key == entityID)) { for (auto m : kNatSourceMapping) { std::string cname, sname; tie(cname, sname) = m; std::string s = nr[cname].as(); if (not s.empty()) source.push_back(sname + ": " + s); } } } return FixStringLength("SOURCE " + cif::join(source, "; "), kTruncateAt); } std::string DSSP_impl::GetPDBAUTHORLine() { // AUTHOR std::vector author; for (auto r : mDB["audit_author"]) author.push_back(cif2pdbAuth(r["name"].as())); return FixStringLength("AUTHOR " + cif::join(author, "; "), kTruncateAt); } // -------------------------------------------------------------------- std::string dssp::residue_info::asym_id() const { return m_impl->mAsymID; } std::string dssp::residue_info::compound_id() const { return m_impl->mCompoundID; } char dssp::residue_info::compound_letter() const { return MapResidue(compound_id()); } int dssp::residue_info::seq_id() const { return m_impl->mSeqID; } std::string dssp::residue_info::alt_id() const { return m_impl->mAltID; } std::string dssp::residue_info::auth_asym_id() const { return m_impl->mAuthAsymID; } int dssp::residue_info::auth_seq_id() const { return m_impl->mAuthSeqID; } std::string dssp::residue_info::pdb_strand_id() const { return m_impl->mPDBStrandID; } int dssp::residue_info::pdb_seq_num() const { return m_impl->mPDBSeqNum; } std::string dssp::residue_info::pdb_ins_code() const { return m_impl->mPDBInsCode; } std::optional dssp::residue_info::alpha() const { return m_impl->mAlpha; } std::optional dssp::residue_info::kappa() const { return m_impl->mKappa; } std::optional dssp::residue_info::omega() const { return m_impl->mOmega; } std::optional dssp::residue_info::phi() const { return m_impl->mPhi; } std::optional dssp::residue_info::psi() const { return m_impl->mPsi; } std::optional dssp::residue_info::tco() const { return m_impl->mTCO; } bool dssp::residue_info::is_pre_pro() const { return m_impl->mType != kProline and m_impl->mNext != nullptr and m_impl->mNext->mType == kProline; } float dssp::residue_info::chiral_volume() const { return m_impl->mChiralVolume; } const std::map> kChiAtomsMap = { { MapResidue("ASP"), { "CG", "OD1" } }, { MapResidue("ASN"), { "CG", "OD1" } }, { MapResidue("ARG"), { "CG", "CD", "NE", "CZ" } }, { MapResidue("HIS"), { "CG", "ND1" } }, { MapResidue("GLN"), { "CG", "CD", "OE1" } }, { MapResidue("GLU"), { "CG", "CD", "OE1" } }, { MapResidue("SER"), { "OG" } }, { MapResidue("THR"), { "OG1" } }, { MapResidue("LYS"), { "CG", "CD", "CE", "NZ" } }, { MapResidue("TYR"), { "CG", "CD1" } }, { MapResidue("PHE"), { "CG", "CD1" } }, { MapResidue("LEU"), { "CG", "CD1" } }, { MapResidue("TRP"), { "CG", "CD1" } }, { MapResidue("CYS"), { "SG" } }, { MapResidue("ILE"), { "CG1", "CD1" } }, { MapResidue("MET"), { "CG", "SD", "CE" } }, { MapResidue("MSE"), { "CG", "SE", "CE" } }, { MapResidue("PRO"), { "CG", "CD" } }, { MapResidue("VAL"), { "CG1" } } }; std::size_t dssp::residue_info::nr_of_chis() const { auto i = kChiAtomsMap.find(m_impl->mType); return i != kChiAtomsMap.end() ? i->second.size() : 0; } float dssp::residue_info::chi(std::size_t index) const { float result = 0; auto type = m_impl->mType; auto i = kChiAtomsMap.find(type); if (i != kChiAtomsMap.end() and index < i->second.size()) { std::vector atoms{ "N", "CA", "CB" }; atoms.insert(atoms.end(), i->second.begin(), i->second.end()); // in case we have a positive chiral volume we need to swap atoms if (m_impl->mChiralVolume > 0) { if (type == kLeucine) atoms.back() = "CD2"; if (type == kValine) atoms.back() = "CG2"; } result = static_cast(dihedral_angle( m_impl->get_atom(atoms[index + 0]), m_impl->get_atom(atoms[index + 1]), m_impl->get_atom(atoms[index + 2]), m_impl->get_atom(atoms[index + 3]))); } return result; } std::tuple dssp::residue_info::ca_location() const { return { m_impl->mCAlpha.mX, m_impl->mCAlpha.mY, m_impl->mCAlpha.mZ }; } chain_break_type dssp::residue_info::chain_break() const { return m_impl->mChainBreak; } int dssp::residue_info::nr() const { return m_impl->mNumber; } structure_type dssp::residue_info::type() const { return m_impl->mSecondaryStructure; } int dssp::residue_info::ssBridgeNr() const { return m_impl->mSSBridgeNr; } helix_position_type dssp::residue_info::helix(helix_type helixType) const { return m_impl->GetHelixFlag(helixType); } bool dssp::residue_info::is_alpha_helix_end_before_start() const { bool result = false; if (m_impl->mNext != nullptr) result = m_impl->GetHelixFlag(helix_type::alpha) == helix_position_type::End and m_impl->mNext->GetHelixFlag(helix_type::alpha) == helix_position_type::Start; return result; } bool dssp::residue_info::bend() const { return m_impl->IsBend(); } double dssp::residue_info::accessibility() const { return m_impl->mAccessibility; } std::tuple dssp::residue_info::bridge_partner(int i) const { auto bp = m_impl->GetBetaPartner(i); residue_info ri(bp.m_residue); return std::make_tuple(std::move(ri), bp.ladder, bp.parallel); } int dssp::residue_info::sheet() const { return m_impl->GetSheet(); } int dssp::residue_info::strand() const { return m_impl->GetStrand(); } std::tuple dssp::residue_info::acceptor(int i) const { auto &a = m_impl->mHBondAcceptor[i]; return { residue_info(a.res), a.energy }; } std::tuple dssp::residue_info::donor(int i) const { auto &d = m_impl->mHBondDonor[i]; return { residue_info(d.res), d.energy }; } // -------------------------------------------------------------------- dssp::iterator::iterator(residue *res) : m_current(res) { } dssp::iterator &dssp::iterator::operator++() { ++m_current.m_impl; return *this; } dssp::iterator &dssp::iterator::operator--() { --m_current.m_impl; return *this; } // -------------------------------------------------------------------- dssp::dssp(const cif::mm::structure &s, int min_poly_proline_stretch_length, bool calculateSurfaceAccessibility) : dssp(s.get_datablock(), static_cast(s.get_model_nr()), min_poly_proline_stretch_length, calculateSurfaceAccessibility) { } dssp::dssp(const cif::datablock &db, int model_nr, int min_poly_proline_stretch, bool calculateSurfaceAccessibility) : m_impl(new DSSP_impl(db, model_nr, min_poly_proline_stretch)) { if (calculateSurfaceAccessibility) { std::thread t(std::bind(&DSSP_impl::calculateSurface, m_impl)); m_impl->calculateSecondaryStructure(); t.join(); } else m_impl->calculateSecondaryStructure(); } dssp::~dssp() { delete m_impl; } dssp::iterator dssp::begin() const { return iterator(m_impl->mResidues.empty() ? nullptr : m_impl->mResidues.data()); } dssp::iterator dssp::end() const { // careful now, MSVC is picky when it comes to dereferencing iterators that are at the end. residue *res = nullptr; if (not m_impl->mResidues.empty()) { res = m_impl->mResidues.data(); res += m_impl->mResidues.size(); } return iterator(res); } dssp::residue_info dssp::operator[](const key_type &key) const { auto i = std::find_if(begin(), end(), [key](const residue_info &res) { return res.asym_id() == std::get<0>(key) and res.seq_id() == std::get<1>(key); }); if (i == end()) throw std::out_of_range("Could not find residue with supplied key"); return *i; } dssp::statistics dssp::get_statistics() const { return m_impl->mStats; } std::string dssp::get_pdb_header_line(pdb_record_type pdb_record) const { switch (pdb_record) { case pdb_record_type::HEADER: return m_impl->GetPDBHEADERLine(); case pdb_record_type::COMPND: return m_impl->GetPDBCOMPNDLine(); case pdb_record_type::SOURCE: return m_impl->GetPDBSOURCELine(); case pdb_record_type::AUTHOR: return m_impl->GetPDBAUTHORLine(); default: return {}; } } // -------------------------------------------------------------------- void dssp::write_legacy_output(std::ostream& os) const { writeDSSP(*this, os); } void dssp::annotate(cif::datablock &db, bool writeOther, bool writeDSSPCategories) const { annotateDSSP(db, *this, writeOther, writeDSSPCategories); } dssp-4.4.10/src/000077500000000000000000000000001470365501700133505ustar00rootroot00000000000000dssp-4.4.10/src/mkdssp.cpp000066400000000000000000000147041470365501700153630ustar00rootroot00000000000000/*- * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2020 NKI/AVL, Netherlands Cancer Institute * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #if __has_include("config.hpp") #include "config.hpp" #endif #include #include #include #include #include #include #include "dssp.hpp" #include "revision.hpp" namespace fs = std::filesystem; // -------------------------------------------------------------------- // recursively print exception whats: void print_what(const std::exception &e) { std::cerr << e.what() << std::endl; try { std::rethrow_if_nested(e); } catch (const std::exception &nested) { std::cerr << " >> "; print_what(nested); } } // -------------------------------------------------------------------- int d_main(int argc, const char *argv[]) { using namespace std::literals; auto &config = mcfp::config::instance(); config.init("Usage: mkdssp [options] input-file [output-file]", mcfp::make_option("output-format", "Output format, can be either 'dssp' for classic DSSP or 'mmcif' for annotated mmCIF. The default is chosen based on the extension of the output file, if any."), mcfp::make_option("min-pp-stretch", 3, "Minimal number of residues having PSI/PHI in range for a PP helix, default is 3"), mcfp::make_option("write-other", "If set, write the type OTHER for loops, default is to leave this out"), mcfp::make_option("no-dssp-categories", "If set, will suppress output of new DSSP output in mmCIF format"), mcfp::make_option("calculate-accessibility", "Default is to not calculate the surface accessibility when the output format is mmCIF"), mcfp::make_option("mmcif-dictionary", "Path to the mmcif_pdbx.dic file to use instead of default"), mcfp::make_option("help,h", "Display help message"), mcfp::make_option("version", "Print version"), mcfp::make_option("verbose,v", "verbose output"), mcfp::make_option("quiet", "Reduce verbose output to a minimum"), mcfp::make_hidden_option("debug,d", "Debug level (for even more verbose output)")); config.parse(argc, argv); // -------------------------------------------------------------------- if (config.has("version")) { write_version_string(std::cout, config.has("verbose")); exit(0); } if (config.has("help") or config.operands().empty()) { std::cerr << config << std::endl; exit(config.has("help") ? 0 : 1); } if (config.has("output-format") and config.get("output-format") != "dssp" and config.get("output-format") != "mmcif") { std::cerr << "Output format should be one of 'dssp' or 'mmcif'" << std::endl; exit(1); } if (config.count("quiet")) cif::VERBOSE = -1; else cif::VERBOSE = config.count("verbose"); // -------------------------------------------------------------------- // private mmcif_pdbx dictionary? if (config.has("mmcif-dictionary")) cif::add_file_resource("mmcif_pdbx.dic", config.get("mmcif-dictionary")); cif::gzio::ifstream in(config.operands().front()); if (not in.is_open()) { std::cerr << "Could not open file" << std::endl; exit(1); } cif::file f = cif::pdb::read(in); // -------------------------------------------------------------------- short pp_stretch = 3; if (config.has("min-pp-stretch")) pp_stretch = config.get("min-pp-stretch"); bool writeOther = config.has("write-other"); std::string fmt; if (config.has("output-format")) fmt = config.get("output-format"); fs::path output; if (config.operands().size() > 1) output = config.operands()[1]; if (fmt.empty() and not output.empty()) { if (output.extension() == ".gz" or output.extension() == ".xz") { if (output.stem().extension() == ".dssp") fmt = "dssp"; else fmt = "cif"; } else if (output.extension() == ".dssp") fmt = "dssp"; else fmt = "cif"; } if (fmt == "dssp") { // See if the data will fit at all auto &db = f.front(); for (const auto &[chain_id, seq_nr] : db["pdbx_poly_seq_scheme"].rows("pdb_strand_id", "pdb_seq_num")) { if (chain_id.length() > 1 or seq_nr > 99999) { std::cerr << "The data in this file won't fit in the old DSSP format, please use the mmCIF format instead." << std::endl; exit(2); } } } dssp dssp(f.front(), 1, pp_stretch, fmt == "dssp" or config.has("calculate-accessibility")); if (not output.empty()) { cif::gzio::ofstream out(output); if (not out.is_open()) { std::cerr << "Could not open output file" << std::endl; exit(1); } if (fmt == "dssp") dssp.write_legacy_output(out); else { dssp.annotate(f.front(), writeOther, not config.has("no-dssp-categories")); out << f.front(); } } else { if (fmt == "dssp") dssp.write_legacy_output(std::cout); else { dssp.annotate(f.front(), writeOther, not config.has("no-dssp-categories")); std::cout << f.front(); } } return 0; } // -------------------------------------------------------------------- int main(int argc, const char *argv[]) { int result = 0; try { #if defined(DATA_DIR) cif::add_data_directory(DATA_DIR); #endif result = d_main(argc, argv); } catch (const std::exception &ex) { print_what(ex); exit(1); } return result; } dssp-4.4.10/test/000077500000000000000000000000001470365501700135405ustar00rootroot00000000000000dssp-4.4.10/test/1cbs-dssp-test.tsv000066400000000000000000000017341470365501700170570ustar00rootroot000000000000001 A _ 2 A _ 3 A _ 4 A _ 5 A E 6 A E 7 A E 8 A E 9 A E 10 A E 11 A E 12 A E 13 A E 14 A S 15 A H 16 A H 17 A H 18 A H 19 A H 20 A H 21 A H 22 A T 23 A T 24 A _ 25 A _ 26 A H 27 A H 28 A H 29 A H 30 A H 31 A H 32 A H 33 A H 34 A H 35 A H 36 A H 37 A T 38 A S 39 A _ 40 A E 41 A E 42 A E 43 A E 44 A E 45 A E 46 A E 47 A T 48 A T 49 A E 50 A E 51 A E 52 A E 53 A E 54 A E 55 A E 56 A _ 57 A S 58 A S 59 A _ 60 A E 61 A E 62 A E 63 A E 64 A E 65 A E 66 A E 67 A T 68 A T 69 A S 70 A _ 71 A E 72 A E 73 A E 74 A E 75 A _ 76 A T 77 A T 78 A S 79 A _ 80 A E 81 A E 82 A E 83 A E 84 A E 85 A E 86 A E 87 A E 88 A E 89 A E 90 A T 91 A T 92 A E 93 A E 94 A E 95 A E 96 A E 97 A E 98 A E 99 A E 100 A S 101 A S 102 A S 103 A _ 104 A _ 105 A _ 106 A _ 107 A E 108 A E 109 A E 110 A E 111 A E 112 A E 113 A E 114 A _ 115 A T 116 A T 117 A S 118 A _ 119 A E 120 A E 121 A E 122 A E 123 A E 124 A E 125 A E 126 A T 127 A T 128 A E 129 A E 130 A E 131 A E 132 A E 133 A E 134 A E 135 A E 136 A E 137 A _ dssp-4.4.10/test/1cbs-dssp.cif000066400000000000000000004354371470365501700160420ustar00rootroot00000000000000data_1CBS # _entry.id 1CBS # _audit_conform.dict_name mmcif_pdbx.dic _audit_conform.dict_version 5.279 _audit_conform.dict_location http://mmcif.pdb.org/dictionaries/ascii/mmcif_pdbx.dic # loop_ _database_2.database_id _database_2.database_code PDB 1CBS WWPDB D_1000172215 # _pdbx_database_status.status_code REL _pdbx_database_status.entry_id 1CBS _pdbx_database_status.recvd_initial_deposition_date 1994-09-28 _pdbx_database_status.deposit_site ? _pdbx_database_status.process_site ? _pdbx_database_status.status_code_sf REL _pdbx_database_status.status_code_mr ? _pdbx_database_status.SG_entry ? _pdbx_database_status.pdb_format_compatible Y _pdbx_database_status.status_code_cs ? # loop_ _audit_author.name _audit_author.pdbx_ordinal 'Kleywegt, G.J.' 1 'Bergfors, T.' 2 'Jones, T.A.' 3 # loop_ _citation.id _citation.title _citation.journal_abbrev _citation.journal_volume _citation.page_first _citation.page_last _citation.year _citation.journal_id_ASTM _citation.country _citation.journal_id_ISSN _citation.journal_id_CSD _citation.book_publisher _citation.pdbx_database_id_PubMed _citation.pdbx_database_id_DOI primary ;Crystal structures of cellular retinoic acid binding proteins I and II in complex with all-trans-retinoic acid and a synthetic retinoid. ; Structure 2 1241 1258 1994 STRUE6 UK 0969-2126 2005 ? 7704533 10.1016/S0969-2126(94)00125-1 1 'Lipid-Binding Proteins: A Family of Fatty Acid and Retinoid Transport Proteins' 'Adv.Protein Chem.' 45 89 ? 1994 APCHA2 US 0065-3233 0433 ? ? ? 2 'Crystallisation and Preliminary X-Ray Analysis of Recombinant Bovine Cellular Retinoic Acid-Binding Protein' 'Acta Crystallogr.,Sect.D' 50 370 ? 1994 ABCRE6 DK 0907-4449 0766 ? ? ? 3 ;Crystallographic Studies on a Family of Lipophilic Transport Proteins. Refinement of P2 Myelin Protein and the Structure Determination and Refinement of Cellular Retinol-Binding Protein in Complex with All-Trans-Retinol ; J.Mol.Biol. 230 1225 ? 1993 JMOBAK UK 0022-2836 0070 ? ? ? 4 'The Three-Dimensional Structure of P2 Myelin Protein' 'Embo J.' 7 1597 ? 1988 EMJODG UK 0261-4189 0897 ? ? ? # loop_ _citation_author.citation_id _citation_author.name _citation_author.ordinal primary 'Kleywegt, G.J.' 1 primary 'Bergfors, T.' 2 primary 'Senn, H.' 3 primary 'Le Motte, P.' 4 primary 'Gsell, B.' 5 primary 'Shudo, K.' 6 primary 'Jones, T.A.' 7 1 'Banaszak, L.' 8 1 'Winter, N.' 9 1 'Xu, Z.' 10 1 'Bernlohr, D.A.' 11 1 'Cowan, S.W.' 12 1 'Jones, T.A.' 13 2 'Bergfors, T.' 14 2 'Kleywegt, G.J.' 15 2 'Jones, T.A.' 16 3 'Cowan, S.W.' 17 3 'Newcomer, M.E.' 18 3 'Jones, T.A.' 19 4 'Jones, T.A.' 20 4 'Bergfors, T.' 21 4 'Sedzik, J.' 22 4 'Unge, T.' 23 # _cell.entry_id 1CBS _cell.length_a 45.650 _cell.length_b 47.560 _cell.length_c 77.610 _cell.angle_alpha 90.00 _cell.angle_beta 90.00 _cell.angle_gamma 90.00 _cell.Z_PDB 4 _cell.pdbx_unique_axis ? # _symmetry.entry_id 1CBS _symmetry.space_group_name_H-M 'P 21 21 21' _symmetry.pdbx_full_space_group_name_H-M ? _symmetry.cell_setting ? _symmetry.Int_Tables_number 19 # loop_ _entity.id _entity.type _entity.src_method _entity.pdbx_description _entity.formula_weight _entity.pdbx_number_of_molecules _entity.pdbx_ec _entity.pdbx_mutation _entity.pdbx_fragment _entity.details 1 polymer man 'CELLULAR RETINOIC ACID BINDING PROTEIN TYPE II' 15581.802 1 ? ? ? ? 2 non-polymer syn 'RETINOIC ACID' 300.435 1 ? ? ? ? 3 water nat water 18.015 100 ? ? ? ? # _entity_poly.entity_id 1 _entity_poly.type polypeptide(L) _entity_poly.nstd_linkage no _entity_poly.nstd_monomer no _entity_poly.pdbx_seq_one_letter_code ;PNFSGNWKIIRSENFEELLKVLGVNVMLRKIAVAAASKPAVEIKQEGDTFYIKTSTTVRTTEINFKVGEEFEEQTVDGRP CKSLVKWESENKMVCEQKLLKGEGPKTSWTRELTNDGELILTMTADDVVCTRVYVRE ; _entity_poly.pdbx_seq_one_letter_code_can ;PNFSGNWKIIRSENFEELLKVLGVNVMLRKIAVAAASKPAVEIKQEGDTFYIKTSTTVRTTEINFKVGEEFEEQTVDGRP CKSLVKWESENKMVCEQKLLKGEGPKTSWTRELTNDGELILTMTADDVVCTRVYVRE ; _entity_poly.pdbx_strand_id A _entity_poly.pdbx_target_identifier ? # loop_ _entity_poly_seq.entity_id _entity_poly_seq.num _entity_poly_seq.mon_id _entity_poly_seq.hetero 1 1 PRO n 1 2 ASN n 1 3 PHE n 1 4 SER n 1 5 GLY n 1 6 ASN n 1 7 TRP n 1 8 LYS n 1 9 ILE n 1 10 ILE n 1 11 ARG n 1 12 SER n 1 13 GLU n 1 14 ASN n 1 15 PHE n 1 16 GLU n 1 17 GLU n 1 18 LEU n 1 19 LEU n 1 20 LYS n 1 21 VAL n 1 22 LEU n 1 23 GLY n 1 24 VAL n 1 25 ASN n 1 26 VAL n 1 27 MET n 1 28 LEU n 1 29 ARG n 1 30 LYS n 1 31 ILE n 1 32 ALA n 1 33 VAL n 1 34 ALA n 1 35 ALA n 1 36 ALA n 1 37 SER n 1 38 LYS n 1 39 PRO n 1 40 ALA n 1 41 VAL n 1 42 GLU n 1 43 ILE n 1 44 LYS n 1 45 GLN n 1 46 GLU n 1 47 GLY n 1 48 ASP n 1 49 THR n 1 50 PHE n 1 51 TYR n 1 52 ILE n 1 53 LYS n 1 54 THR n 1 55 SER n 1 56 THR n 1 57 THR n 1 58 VAL n 1 59 ARG n 1 60 THR n 1 61 THR n 1 62 GLU n 1 63 ILE n 1 64 ASN n 1 65 PHE n 1 66 LYS n 1 67 VAL n 1 68 GLY n 1 69 GLU n 1 70 GLU n 1 71 PHE n 1 72 GLU n 1 73 GLU n 1 74 GLN n 1 75 THR n 1 76 VAL n 1 77 ASP n 1 78 GLY n 1 79 ARG n 1 80 PRO n 1 81 CYS n 1 82 LYS n 1 83 SER n 1 84 LEU n 1 85 VAL n 1 86 LYS n 1 87 TRP n 1 88 GLU n 1 89 SER n 1 90 GLU n 1 91 ASN n 1 92 LYS n 1 93 MET n 1 94 VAL n 1 95 CYS n 1 96 GLU n 1 97 GLN n 1 98 LYS n 1 99 LEU n 1 100 LEU n 1 101 LYS n 1 102 GLY n 1 103 GLU n 1 104 GLY n 1 105 PRO n 1 106 LYS n 1 107 THR n 1 108 SER n 1 109 TRP n 1 110 THR n 1 111 ARG n 1 112 GLU n 1 113 LEU n 1 114 THR n 1 115 ASN n 1 116 ASP n 1 117 GLY n 1 118 GLU n 1 119 LEU n 1 120 ILE n 1 121 LEU n 1 122 THR n 1 123 MET n 1 124 THR n 1 125 ALA n 1 126 ASP n 1 127 ASP n 1 128 VAL n 1 129 VAL n 1 130 CYS n 1 131 THR n 1 132 ARG n 1 133 VAL n 1 134 TYR n 1 135 VAL n 1 136 ARG n 1 137 GLU n # _entity_src_gen.entity_id 1 _entity_src_gen.pdbx_src_id 1 _entity_src_gen.pdbx_alt_source_flag sample _entity_src_gen.pdbx_seq_type ? _entity_src_gen.pdbx_beg_seq_num ? _entity_src_gen.pdbx_end_seq_num ? _entity_src_gen.gene_src_common_name human _entity_src_gen.gene_src_genus Homo _entity_src_gen.pdbx_gene_src_gene 'HUMAN CRABP-II' _entity_src_gen.gene_src_species ? _entity_src_gen.gene_src_strain ? _entity_src_gen.gene_src_tissue ? _entity_src_gen.gene_src_tissue_fraction ? _entity_src_gen.gene_src_details ? _entity_src_gen.pdbx_gene_src_fragment ? _entity_src_gen.pdbx_gene_src_scientific_name 'Homo sapiens' _entity_src_gen.pdbx_gene_src_ncbi_taxonomy_id 9606 _entity_src_gen.pdbx_gene_src_variant ? _entity_src_gen.pdbx_gene_src_cell_line BL21 _entity_src_gen.pdbx_gene_src_atcc ? _entity_src_gen.pdbx_gene_src_organ ? _entity_src_gen.pdbx_gene_src_organelle ? _entity_src_gen.pdbx_gene_src_cell ? _entity_src_gen.pdbx_gene_src_cellular_location ? _entity_src_gen.host_org_common_name ? _entity_src_gen.pdbx_host_org_scientific_name 'Escherichia coli BL21(DE3)' _entity_src_gen.pdbx_host_org_ncbi_taxonomy_id 469008 _entity_src_gen.host_org_genus Escherichia _entity_src_gen.pdbx_host_org_gene ? _entity_src_gen.pdbx_host_org_organ ? _entity_src_gen.host_org_species 'Escherichia coli' _entity_src_gen.pdbx_host_org_tissue ? _entity_src_gen.pdbx_host_org_tissue_fraction ? _entity_src_gen.pdbx_host_org_strain 'BL21 (DE3)' _entity_src_gen.pdbx_host_org_variant ? _entity_src_gen.pdbx_host_org_cell_line ? _entity_src_gen.pdbx_host_org_atcc ? _entity_src_gen.pdbx_host_org_culture_collection ? _entity_src_gen.pdbx_host_org_cell ? _entity_src_gen.pdbx_host_org_organelle ? _entity_src_gen.pdbx_host_org_cellular_location ? _entity_src_gen.pdbx_host_org_vector_type ? _entity_src_gen.pdbx_host_org_vector ? _entity_src_gen.host_org_details ? _entity_src_gen.expression_system_id ? _entity_src_gen.plasmid_name PET-3A _entity_src_gen.plasmid_details ? _entity_src_gen.pdbx_description ? # _struct_ref.id 1 _struct_ref.db_name UNP _struct_ref.db_code RABP2_HUMAN _struct_ref.entity_id 1 _struct_ref.pdbx_db_accession P29373 _struct_ref.pdbx_align_begin 1 _struct_ref.pdbx_seq_one_letter_code ;PNFSGNWKIIRSENFEELLKVLGVNVMLRKIAVAAASKPAVEIKQEGDTFYIKTSTTVRTTEINFKVGEEFEEQTVDGRP CKSLVKWESENKMVCEQKLLKGEGPKTSWTRELTNDGELILTMTADDVVCTRVYVRE ; _struct_ref.pdbx_db_isoform ? # _struct_ref_seq.align_id 1 _struct_ref_seq.ref_id 1 _struct_ref_seq.pdbx_PDB_id_code 1CBS _struct_ref_seq.pdbx_strand_id A _struct_ref_seq.seq_align_beg 1 _struct_ref_seq.pdbx_seq_align_beg_ins_code ? _struct_ref_seq.seq_align_end 137 _struct_ref_seq.pdbx_seq_align_end_ins_code ? _struct_ref_seq.pdbx_db_accession P29373 _struct_ref_seq.db_align_beg 1 _struct_ref_seq.pdbx_db_align_beg_ins_code ? _struct_ref_seq.db_align_end 137 _struct_ref_seq.pdbx_db_align_end_ins_code ? _struct_ref_seq.pdbx_auth_seq_align_beg 1 _struct_ref_seq.pdbx_auth_seq_align_end 137 # loop_ _chem_comp.id _chem_comp.type _chem_comp.mon_nstd_flag _chem_comp.name _chem_comp.pdbx_synonyms _chem_comp.formula _chem_comp.formula_weight ALA 'L-peptide linking' y ALANINE ? 'C3 H7 N O2' 89.093 ARG 'L-peptide linking' y ARGININE ? 'C6 H15 N4 O2 1' 175.209 ASN 'L-peptide linking' y ASPARAGINE ? 'C4 H8 N2 O3' 132.118 ASP 'L-peptide linking' y 'ASPARTIC ACID' ? 'C4 H7 N O4' 133.103 CYS 'L-peptide linking' y CYSTEINE ? 'C3 H7 N O2 S' 121.158 GLN 'L-peptide linking' y GLUTAMINE ? 'C5 H10 N2 O3' 146.144 GLU 'L-peptide linking' y 'GLUTAMIC ACID' ? 'C5 H9 N O4' 147.129 GLY 'peptide linking' y GLYCINE ? 'C2 H5 N O2' 75.067 HOH non-polymer . WATER ? 'H2 O' 18.015 ILE 'L-peptide linking' y ISOLEUCINE ? 'C6 H13 N O2' 131.173 LEU 'L-peptide linking' y LEUCINE ? 'C6 H13 N O2' 131.173 LYS 'L-peptide linking' y LYSINE ? 'C6 H15 N2 O2 1' 147.195 MET 'L-peptide linking' y METHIONINE ? 'C5 H11 N O2 S' 149.211 PHE 'L-peptide linking' y PHENYLALANINE ? 'C9 H11 N O2' 165.189 PRO 'L-peptide linking' y PROLINE ? 'C5 H9 N O2' 115.130 REA non-polymer . 'RETINOIC ACID' ? 'C20 H28 O2' 300.435 SER 'L-peptide linking' y SERINE ? 'C3 H7 N O3' 105.093 THR 'L-peptide linking' y THREONINE ? 'C4 H9 N O3' 119.119 TRP 'L-peptide linking' y TRYPTOPHAN ? 'C11 H12 N2 O2' 204.225 TYR 'L-peptide linking' y TYROSINE ? 'C9 H11 N O3' 181.189 VAL 'L-peptide linking' y VALINE ? 'C5 H11 N O2' 117.146 # _exptl.entry_id 1CBS _exptl.method 'X-RAY DIFFRACTION' _exptl.crystals_number ? # _exptl_crystal.id 1 _exptl_crystal.density_meas ? _exptl_crystal.density_Matthews 2.70 _exptl_crystal.density_percent_sol 54.49 _exptl_crystal.description ? # _diffrn.id 1 _diffrn.ambient_temp ? _diffrn.ambient_temp_details ? _diffrn.crystal_id 1 # _diffrn_radiation.diffrn_id 1 _diffrn_radiation.wavelength_id 1 _diffrn_radiation.pdbx_monochromatic_or_laue_m_l ? _diffrn_radiation.monochromator ? _diffrn_radiation.pdbx_diffrn_protocol ? _diffrn_radiation.pdbx_scattering_type x-ray # _diffrn_radiation_wavelength.id 1 _diffrn_radiation_wavelength.wavelength . _diffrn_radiation_wavelength.wt 1.0 # _reflns.entry_id 1CBS _reflns.observed_criterion_sigma_I 3. _reflns.observed_criterion_sigma_F ? _reflns.d_resolution_low ? _reflns.d_resolution_high ? _reflns.number_obs 14678 _reflns.number_all ? _reflns.percent_possible_obs 90.3 _reflns.pdbx_Rmerge_I_obs ? _reflns.pdbx_Rsym_value ? _reflns.pdbx_netI_over_sigmaI ? _reflns.B_iso_Wilson_estimate ? _reflns.pdbx_redundancy ? _reflns.pdbx_diffrn_id 1 _reflns.pdbx_ordinal 1 # _refine.entry_id 1CBS _refine.ls_number_reflns_obs 14312 _refine.ls_number_reflns_all ? _refine.pdbx_ls_sigma_I ? _refine.pdbx_ls_sigma_F 2. _refine.pdbx_data_cutoff_high_absF ? _refine.pdbx_data_cutoff_low_absF ? _refine.pdbx_data_cutoff_high_rms_absF ? _refine.ls_d_res_low 8.0 _refine.ls_d_res_high 1.8 _refine.ls_percent_reflns_obs 90.3 _refine.ls_R_factor_obs 0.2000000 _refine.ls_R_factor_all ? _refine.ls_R_factor_R_work 0.2000000 _refine.ls_R_factor_R_free 0.2370000 _refine.ls_R_factor_R_free_error ? _refine.ls_R_factor_R_free_error_details ? _refine.ls_percent_reflns_R_free ? _refine.ls_number_reflns_R_free ? _refine.ls_number_parameters ? _refine.ls_number_restraints ? _refine.occupancy_min ? _refine.occupancy_max ? _refine.B_iso_mean 16.6 _refine.aniso_B[1][1] ? _refine.aniso_B[2][2] ? _refine.aniso_B[3][3] ? _refine.aniso_B[1][2] ? _refine.aniso_B[1][3] ? _refine.aniso_B[2][3] ? _refine.solvent_model_details ? _refine.solvent_model_param_ksol ? _refine.solvent_model_param_bsol ? _refine.pdbx_ls_cross_valid_method ? _refine.details ? _refine.pdbx_starting_model ? _refine.pdbx_method_to_determine_struct ? _refine.pdbx_isotropic_thermal_model ? _refine.pdbx_stereochemistry_target_values ? _refine.pdbx_stereochem_target_val_spec_case ? _refine.pdbx_R_Free_selection_details ? _refine.pdbx_overall_ESU_R ? _refine.pdbx_overall_ESU_R_Free ? _refine.overall_SU_ML ? _refine.overall_SU_B ? _refine.pdbx_refine_id 'X-RAY DIFFRACTION' _refine.pdbx_diffrn_id 1 _refine.pdbx_TLS_residual_ADP_flag ? _refine.correlation_coeff_Fo_to_Fc ? _refine.correlation_coeff_Fo_to_Fc_free ? _refine.pdbx_solvent_vdw_probe_radii ? _refine.pdbx_solvent_ion_probe_radii ? _refine.pdbx_solvent_shrinkage_radii ? _refine.pdbx_overall_phase_error ? _refine.overall_SU_R_Cruickshank_DPI ? _refine.pdbx_overall_SU_R_free_Cruickshank_DPI ? _refine.pdbx_overall_SU_R_Blow_DPI ? _refine.pdbx_overall_SU_R_free_Blow_DPI ? # _refine_analyze.entry_id 1CBS _refine_analyze.Luzzati_coordinate_error_obs 0.2 _refine_analyze.Luzzati_sigma_a_obs ? _refine_analyze.Luzzati_d_res_low_obs ? _refine_analyze.Luzzati_coordinate_error_free ? _refine_analyze.Luzzati_sigma_a_free ? _refine_analyze.Luzzati_d_res_low_free ? _refine_analyze.number_disordered_residues ? _refine_analyze.occupancy_sum_hydrogen ? _refine_analyze.occupancy_sum_non_hydrogen ? _refine_analyze.pdbx_refine_id 'X-RAY DIFFRACTION' # _refine_hist.pdbx_refine_id 'X-RAY DIFFRACTION' _refine_hist.cycle_id LAST _refine_hist.pdbx_number_atoms_protein 1091 _refine_hist.pdbx_number_atoms_nucleic_acid 0 _refine_hist.pdbx_number_atoms_ligand 22 _refine_hist.number_atoms_solvent 100 _refine_hist.number_atoms_total 1213 _refine_hist.d_res_high 1.8 _refine_hist.d_res_low 8.0 # loop_ _refine_ls_restr.type _refine_ls_restr.dev_ideal _refine_ls_restr.dev_ideal_target _refine_ls_restr.weight _refine_ls_restr.number _refine_ls_restr.pdbx_refine_id _refine_ls_restr.pdbx_restraint_function x_bond_d 0.010 ? ? ? 'X-RAY DIFFRACTION' ? x_bond_d_na ? ? ? ? 'X-RAY DIFFRACTION' ? x_bond_d_prot ? ? ? ? 'X-RAY DIFFRACTION' ? x_angle_d ? ? ? ? 'X-RAY DIFFRACTION' ? x_angle_d_na ? ? ? ? 'X-RAY DIFFRACTION' ? x_angle_d_prot ? ? ? ? 'X-RAY DIFFRACTION' ? x_angle_deg 1.51 ? ? ? 'X-RAY DIFFRACTION' ? x_angle_deg_na ? ? ? ? 'X-RAY DIFFRACTION' ? x_angle_deg_prot ? ? ? ? 'X-RAY DIFFRACTION' ? x_dihedral_angle_d 27.4 ? ? ? 'X-RAY DIFFRACTION' ? x_dihedral_angle_d_na ? ? ? ? 'X-RAY DIFFRACTION' ? x_dihedral_angle_d_prot ? ? ? ? 'X-RAY DIFFRACTION' ? x_improper_angle_d 1.32 ? ? ? 'X-RAY DIFFRACTION' ? x_improper_angle_d_na ? ? ? ? 'X-RAY DIFFRACTION' ? x_improper_angle_d_prot ? ? ? ? 'X-RAY DIFFRACTION' ? x_mcbond_it ? ? ? ? 'X-RAY DIFFRACTION' ? x_mcangle_it ? ? ? ? 'X-RAY DIFFRACTION' ? x_scbond_it ? ? ? ? 'X-RAY DIFFRACTION' ? x_scangle_it ? ? ? ? 'X-RAY DIFFRACTION' ? # _struct.entry_id 1CBS _struct.title ;CRYSTAL STRUCTURE OF CELLULAR RETINOIC-ACID-BINDING PROTEINS I AND II IN COMPLEX WITH ALL-TRANS-RETINOIC ACID AND A SYNTHETIC RETINOID ; _struct.pdbx_descriptor 'CELLULAR RETINOIC-ACID-BINDING PROTEIN TYPE II COMPLEXED WITH ALL-TRANS-RETINOIC ACID (THE PRESUMED PHYSIOLOGICAL LIGAND)' _struct.pdbx_model_details ? _struct.pdbx_CASP_flag ? _struct.pdbx_model_type_details ? # _struct_keywords.entry_id 1CBS _struct_keywords.pdbx_keywords 'RETINOIC-ACID TRANSPORT' _struct_keywords.text 'RETINOIC-ACID TRANSPORT' # loop_ _struct_asym.id _struct_asym.pdbx_blank_PDB_chainid_flag _struct_asym.pdbx_modified _struct_asym.entity_id _struct_asym.details A N N 1 ? B N N 2 ? C N N 3 ? # _struct_biol.id 1 # loop_ _struct_conf.conf_type_id _struct_conf.id _struct_conf.pdbx_PDB_helix_id _struct_conf.beg_label_comp_id _struct_conf.beg_label_asym_id _struct_conf.beg_label_seq_id _struct_conf.pdbx_beg_PDB_ins_code _struct_conf.end_label_comp_id _struct_conf.end_label_asym_id _struct_conf.end_label_seq_id _struct_conf.pdbx_end_PDB_ins_code _struct_conf.beg_auth_comp_id _struct_conf.beg_auth_asym_id _struct_conf.beg_auth_seq_id _struct_conf.end_auth_comp_id _struct_conf.end_auth_asym_id _struct_conf.end_auth_seq_id _struct_conf.pdbx_PDB_helix_class _struct_conf.details _struct_conf.pdbx_PDB_helix_length OTHER OTHER1 ? PRO A 1 ? SER A 4 ? PRO A 1 SER A 4 ? ? ? STRN STRN1 ? GLY A 5 ? GLU A 13 ? GLY A 5 GLU A 13 ? ? ? BEND BEND1 ? ASN A 14 ? ASN A 14 ? ASN A 14 ASN A 14 ? ? ? HELX_RH_AL_P HELX_RH_AL_P1 ? PHE A 15 ? VAL A 21 ? PHE A 15 VAL A 21 ? ? ? TURN_TY1_P TURN_TY1_P1 ? LEU A 22 ? GLY A 23 ? LEU A 22 GLY A 23 ? ? ? OTHER OTHER2 ? VAL A 24 ? ASN A 25 ? VAL A 24 ASN A 25 ? ? ? HELX_RH_AL_P HELX_RH_AL_P2 ? VAL A 26 ? ALA A 36 ? VAL A 26 ALA A 36 ? ? ? TURN_TY1_P TURN_TY1_P2 ? SER A 37 ? SER A 37 ? SER A 37 SER A 37 ? ? ? BEND BEND2 ? LYS A 38 ? LYS A 38 ? LYS A 38 LYS A 38 ? ? ? OTHER OTHER3 ? PRO A 39 ? PRO A 39 ? PRO A 39 PRO A 39 ? ? ? STRN STRN2 ? ALA A 40 ? GLU A 46 ? ALA A 40 GLU A 46 ? ? ? TURN_TY1_P TURN_TY1_P3 ? GLY A 47 ? ASP A 48 ? GLY A 47 ASP A 48 ? ? ? STRN STRN3 ? THR A 49 ? SER A 55 ? THR A 49 SER A 55 ? ? ? OTHER OTHER4 ? THR A 56 ? THR A 56 ? THR A 56 THR A 56 ? ? ? BEND BEND3 ? THR A 57 ? VAL A 58 ? THR A 57 VAL A 58 ? ? ? OTHER OTHER5 ? ARG A 59 ? ARG A 59 ? ARG A 59 ARG A 59 ? ? ? STRN STRN4 ? THR A 60 ? LYS A 66 ? THR A 60 LYS A 66 ? ? ? TURN_TY1_P TURN_TY1_P4 ? VAL A 67 ? GLY A 68 ? VAL A 67 GLY A 68 ? ? ? BEND BEND4 ? GLU A 69 ? GLU A 69 ? GLU A 69 GLU A 69 ? ? ? OTHER OTHER6 ? GLU A 70 ? GLU A 70 ? GLU A 70 GLU A 70 ? ? ? STRN STRN5 ? PHE A 71 ? GLN A 74 ? PHE A 71 GLN A 74 ? ? ? OTHER OTHER7 ? THR A 75 ? THR A 75 ? THR A 75 THR A 75 ? ? ? TURN_TY1_P TURN_TY1_P5 ? VAL A 76 ? ASP A 77 ? VAL A 76 ASP A 77 ? ? ? BEND BEND5 ? GLY A 78 ? GLY A 78 ? GLY A 78 GLY A 78 ? ? ? OTHER OTHER8 ? ARG A 79 ? ARG A 79 ? ARG A 79 ARG A 79 ? ? ? STRN STRN6 ? PRO A 80 ? SER A 89 ? PRO A 80 SER A 89 ? ? ? TURN_TY1_P TURN_TY1_P6 ? GLU A 90 ? ASN A 91 ? GLU A 90 ASN A 91 ? ? ? STRN STRN7 ? LYS A 92 ? LEU A 99 ? LYS A 92 LEU A 99 ? ? ? BEND BEND6 ? LEU A 100 ? GLY A 102 ? LEU A 100 GLY A 102 ? ? ? OTHER OTHER9 ? GLU A 103 ? LYS A 106 ? GLU A 103 LYS A 106 ? ? ? STRN STRN8 ? THR A 107 ? LEU A 113 ? THR A 107 LEU A 113 ? ? ? OTHER OTHER10 ? THR A 114 ? THR A 114 ? THR A 114 THR A 114 ? ? ? TURN_TY1_P TURN_TY1_P7 ? ASN A 115 ? ASP A 116 ? ASN A 115 ASP A 116 ? ? ? BEND BEND7 ? GLY A 117 ? GLY A 117 ? GLY A 117 GLY A 117 ? ? ? OTHER OTHER11 ? GLU A 118 ? GLU A 118 ? GLU A 118 GLU A 118 ? ? ? STRN STRN9 ? LEU A 119 ? ALA A 125 ? LEU A 119 ALA A 125 ? ? ? TURN_TY1_P TURN_TY1_P8 ? ASP A 126 ? ASP A 127 ? ASP A 126 ASP A 127 ? ? ? STRN STRN10 ? VAL A 128 ? ARG A 136 ? VAL A 128 ARG A 136 ? ? ? OTHER OTHER12 ? GLU A 137 ? GLU A 137 ? GLU A 137 GLU A 137 ? ? ? # loop_ _struct_conf_type.id _struct_conf_type.criteria _struct_conf_type.reference OTHER DSSP ? STRN DSSP ? BEND DSSP ? HELX_RH_AL_P DSSP ? TURN_TY1_P DSSP ? # _struct_sheet.id A _struct_sheet.type ? _struct_sheet.number_strands 10 _struct_sheet.details ? # loop_ _struct_sheet_order.sheet_id _struct_sheet_order.range_id_1 _struct_sheet_order.range_id_2 _struct_sheet_order.offset _struct_sheet_order.sense A 1 2 ? anti-parallel A 2 3 ? anti-parallel A 3 4 ? anti-parallel A 4 5 ? anti-parallel A 5 6 ? anti-parallel A 6 7 ? anti-parallel A 7 8 ? anti-parallel A 8 9 ? anti-parallel A 9 10 ? anti-parallel # loop_ _struct_sheet_range.sheet_id _struct_sheet_range.id _struct_sheet_range.beg_label_comp_id _struct_sheet_range.beg_label_asym_id _struct_sheet_range.beg_label_seq_id _struct_sheet_range.pdbx_beg_PDB_ins_code _struct_sheet_range.end_label_comp_id _struct_sheet_range.end_label_asym_id _struct_sheet_range.end_label_seq_id _struct_sheet_range.pdbx_end_PDB_ins_code _struct_sheet_range.beg_auth_comp_id _struct_sheet_range.beg_auth_asym_id _struct_sheet_range.beg_auth_seq_id _struct_sheet_range.end_auth_comp_id _struct_sheet_range.end_auth_asym_id _struct_sheet_range.end_auth_seq_id A 1 THR A 60 ? LYS A 66 ? THR A 60 LYS A 66 A 2 THR A 49 ? SER A 55 ? THR A 49 SER A 55 A 3 ALA A 40 ? GLU A 46 ? ALA A 40 GLU A 46 A 4 GLY A 5 ? GLU A 13 ? GLY A 5 GLU A 13 A 5 VAL A 128 ? ARG A 136 ? VAL A 128 ARG A 136 A 6 LEU A 119 ? ALA A 125 ? LEU A 119 ALA A 125 A 7 THR A 107 ? LEU A 113 ? THR A 107 LEU A 113 A 8 LYS A 92 ? LEU A 99 ? LYS A 92 LEU A 99 A 9 PRO A 80 ? SER A 89 ? PRO A 80 SER A 89 A 10 PHE A 71 ? GLN A 74 ? PHE A 71 GLN A 74 # loop_ _pdbx_struct_sheet_hbond.sheet_id _pdbx_struct_sheet_hbond.range_id_1 _pdbx_struct_sheet_hbond.range_id_2 _pdbx_struct_sheet_hbond.range_1_label_atom_id _pdbx_struct_sheet_hbond.range_1_label_comp_id _pdbx_struct_sheet_hbond.range_1_label_asym_id _pdbx_struct_sheet_hbond.range_1_label_seq_id _pdbx_struct_sheet_hbond.range_1_PDB_ins_code _pdbx_struct_sheet_hbond.range_1_auth_atom_id _pdbx_struct_sheet_hbond.range_1_auth_comp_id _pdbx_struct_sheet_hbond.range_1_auth_asym_id _pdbx_struct_sheet_hbond.range_1_auth_seq_id _pdbx_struct_sheet_hbond.range_2_label_atom_id _pdbx_struct_sheet_hbond.range_2_label_comp_id _pdbx_struct_sheet_hbond.range_2_label_asym_id _pdbx_struct_sheet_hbond.range_2_label_seq_id _pdbx_struct_sheet_hbond.range_2_PDB_ins_code _pdbx_struct_sheet_hbond.range_2_auth_atom_id _pdbx_struct_sheet_hbond.range_2_auth_comp_id _pdbx_struct_sheet_hbond.range_2_auth_asym_id _pdbx_struct_sheet_hbond.range_2_auth_seq_id A 1 2 O PHE A 65 ? O PHE A 65 N PHE A 50 ? N PHE A 50 A 2 3 N SER A 55 ? N SER A 55 O ALA A 40 ? O ALA A 40 A 3 4 N ILE A 43 ? N ILE A 43 O GLY A 5 ? O GLY A 5 A 4 5 N GLU A 13 ? N GLU A 13 O THR A 131 ? O THR A 131 A 5 6 N TYR A 134 ? N TYR A 134 O LEU A 119 ? O LEU A 119 A 6 7 N THR A 124 ? N THR A 124 O SER A 108 ? O SER A 108 A 7 8 O ARG A 111 ? O ARG A 111 N MET A 93 ? N MET A 93 A 8 9 O LYS A 98 ? O LYS A 98 N LYS A 82 ? N LYS A 82 A 9 10 N SER A 83 ? N SER A 83 O PHE A 71 ? O PHE A 71 # _struct_site.id AC1 _struct_site.pdbx_evidence_code Software _struct_site.pdbx_auth_asym_id ? _struct_site.pdbx_auth_comp_id ? _struct_site.pdbx_auth_seq_id ? _struct_site.pdbx_auth_ins_code ? _struct_site.pdbx_num_residues 10 _struct_site.details 'BINDING SITE FOR RESIDUE REA A 200' # loop_ _struct_site_gen.id _struct_site_gen.site_id _struct_site_gen.pdbx_num_res _struct_site_gen.label_comp_id _struct_site_gen.label_asym_id _struct_site_gen.label_seq_id _struct_site_gen.pdbx_auth_ins_code _struct_site_gen.auth_comp_id _struct_site_gen.auth_asym_id _struct_site_gen.auth_seq_id _struct_site_gen.label_atom_id _struct_site_gen.label_alt_id _struct_site_gen.symmetry _struct_site_gen.details 1 AC1 10 GLU A 13 ? GLU A 13 . ? 3_655 ? 2 AC1 10 ALA A 32 ? ALA A 32 . ? 1_555 ? 3 AC1 10 THR A 54 ? THR A 54 . ? 1_555 ? 4 AC1 10 VAL A 58 ? VAL A 58 . ? 1_555 ? 5 AC1 10 VAL A 76 ? VAL A 76 . ? 1_555 ? 6 AC1 10 LEU A 121 ? LEU A 121 . ? 1_555 ? 7 AC1 10 ARG A 132 ? ARG A 132 . ? 1_555 ? 8 AC1 10 TYR A 134 ? TYR A 134 . ? 1_555 ? 9 AC1 10 HOH C . ? HOH A 309 . ? 1_555 ? 10 AC1 10 HOH C . ? HOH A 343 . ? 1_555 ? # _database_PDB_matrix.entry_id 1CBS _database_PDB_matrix.origx[1][1] 1.000000 _database_PDB_matrix.origx[1][2] 0.000000 _database_PDB_matrix.origx[1][3] 0.000000 _database_PDB_matrix.origx[2][1] 0.000000 _database_PDB_matrix.origx[2][2] 1.000000 _database_PDB_matrix.origx[2][3] 0.000000 _database_PDB_matrix.origx[3][1] 0.000000 _database_PDB_matrix.origx[3][2] 0.000000 _database_PDB_matrix.origx[3][3] 1.000000 _database_PDB_matrix.origx_vector[1] 0.00000 _database_PDB_matrix.origx_vector[2] 0.00000 _database_PDB_matrix.origx_vector[3] 0.00000 # _atom_sites.entry_id 1CBS _atom_sites.fract_transf_matrix[1][1] 0.021906 _atom_sites.fract_transf_matrix[1][2] 0.000000 _atom_sites.fract_transf_matrix[1][3] 0.000000 _atom_sites.fract_transf_matrix[2][1] 0.000000 _atom_sites.fract_transf_matrix[2][2] 0.021026 _atom_sites.fract_transf_matrix[2][3] 0.000000 _atom_sites.fract_transf_matrix[3][1] 0.000000 _atom_sites.fract_transf_matrix[3][2] 0.000000 _atom_sites.fract_transf_matrix[3][3] 0.012885 _atom_sites.fract_transf_vector[1] 0.00000 _atom_sites.fract_transf_vector[2] 0.00000 _atom_sites.fract_transf_vector[3] 0.00000 # loop_ _atom_type.symbol C N O S # loop_ _atom_site.group_PDB _atom_site.id _atom_site.type_symbol _atom_site.label_atom_id _atom_site.label_alt_id _atom_site.label_comp_id _atom_site.label_asym_id _atom_site.label_entity_id _atom_site.label_seq_id _atom_site.pdbx_PDB_ins_code _atom_site.Cartn_x _atom_site.Cartn_y _atom_site.Cartn_z _atom_site.occupancy _atom_site.B_iso_or_equiv _atom_site.pdbx_formal_charge _atom_site.auth_seq_id _atom_site.auth_comp_id _atom_site.auth_asym_id _atom_site.auth_atom_id _atom_site.pdbx_PDB_model_num ATOM 1 N N . PRO A 1 1 ? 16.979 13.301 44.555 1.00 30.05 ? 1 PRO A N 1 ATOM 2 C CA . PRO A 1 1 ? 18.150 13.525 43.680 1.00 28.82 ? 1 PRO A CA 1 ATOM 3 C C . PRO A 1 1 ? 18.656 14.966 43.784 1.00 26.59 ? 1 PRO A C 1 ATOM 4 O O . PRO A 1 1 ? 17.890 15.889 44.078 1.00 26.84 ? 1 PRO A O 1 ATOM 5 C CB . PRO A 1 1 ? 17.678 13.270 42.255 1.00 29.24 ? 1 PRO A CB 1 ATOM 6 C CG . PRO A 1 1 ? 16.248 13.734 42.347 1.00 29.29 ? 1 PRO A CG 1 ATOM 7 C CD . PRO A 1 1 ? 15.762 13.216 43.724 1.00 30.71 ? 1 PRO A CD 1 ATOM 8 N N . ASN A 1 2 ? 19.957 15.139 43.558 1.00 24.04 ? 2 ASN A N 1 ATOM 9 C CA . ASN A 1 2 ? 20.576 16.457 43.578 1.00 20.79 ? 2 ASN A CA 1 ATOM 10 C C . ASN A 1 2 ? 21.301 16.714 42.262 1.00 16.75 ? 2 ASN A C 1 ATOM 11 O O . ASN A 1 2 ? 22.402 16.215 42.028 1.00 15.23 ? 2 ASN A O 1 ATOM 12 C CB . ASN A 1 2 ? 21.559 16.620 44.724 1.00 22.81 ? 2 ASN A CB 1 ATOM 13 C CG . ASN A 1 2 ? 22.240 17.968 44.685 1.00 24.29 ? 2 ASN A CG 1 ATOM 14 O OD1 . ASN A 1 2 ? 21.612 18.984 44.358 1.00 21.87 ? 2 ASN A OD1 1 ATOM 15 N ND2 . ASN A 1 2 ? 23.537 17.983 44.966 1.00 27.94 ? 2 ASN A ND2 1 ATOM 16 N N . PHE A 1 3 ? 20.637 17.477 41.402 1.00 14.69 ? 3 PHE A N 1 ATOM 17 C CA . PHE A 1 3 ? 21.144 17.838 40.087 1.00 12.62 ? 3 PHE A CA 1 ATOM 18 C C . PHE A 1 3 ? 22.152 18.987 40.140 1.00 12.43 ? 3 PHE A C 1 ATOM 19 O O . PHE A 1 3 ? 22.796 19.289 39.136 1.00 12.12 ? 3 PHE A O 1 ATOM 20 C CB . PHE A 1 3 ? 19.970 18.262 39.188 1.00 10.74 ? 3 PHE A CB 1 ATOM 21 C CG . PHE A 1 3 ? 19.073 17.128 38.750 1.00 11.85 ? 3 PHE A CG 1 ATOM 22 C CD1 . PHE A 1 3 ? 18.066 16.646 39.581 1.00 10.90 ? 3 PHE A CD1 1 ATOM 23 C CD2 . PHE A 1 3 ? 19.189 16.588 37.475 1.00 13.26 ? 3 PHE A CD2 1 ATOM 24 C CE1 . PHE A 1 3 ? 17.200 15.662 39.149 1.00 9.12 ? 3 PHE A CE1 1 ATOM 25 C CE2 . PHE A 1 3 ? 18.312 15.594 37.041 1.00 11.76 ? 3 PHE A CE2 1 ATOM 26 C CZ . PHE A 1 3 ? 17.324 15.137 37.878 1.00 10.30 ? 3 PHE A CZ 1 ATOM 27 N N . SER A 1 4 ? 22.282 19.630 41.299 1.00 11.24 ? 4 SER A N 1 ATOM 28 C CA . SER A 1 4 ? 23.170 20.780 41.464 1.00 11.30 ? 4 SER A CA 1 ATOM 29 C C . SER A 1 4 ? 24.627 20.568 41.091 1.00 10.39 ? 4 SER A C 1 ATOM 30 O O . SER A 1 4 ? 25.201 19.532 41.384 1.00 10.24 ? 4 SER A O 1 ATOM 31 C CB . SER A 1 4 ? 23.112 21.301 42.906 1.00 13.53 ? 4 SER A CB 1 ATOM 32 O OG . SER A 1 4 ? 21.821 21.787 43.240 1.00 16.76 ? 4 SER A OG 1 ATOM 33 N N . GLY A 1 5 ? 25.224 21.572 40.460 1.00 9.87 ? 5 GLY A N 1 ATOM 34 C CA . GLY A 1 5 ? 26.628 21.486 40.103 1.00 10.86 ? 5 GLY A CA 1 ATOM 35 C C . GLY A 1 5 ? 26.985 22.158 38.794 1.00 11.21 ? 5 GLY A C 1 ATOM 36 O O . GLY A 1 5 ? 26.123 22.761 38.142 1.00 9.91 ? 5 GLY A O 1 ATOM 37 N N . ASN A 1 6 ? 28.277 22.142 38.475 1.00 10.41 ? 6 ASN A N 1 ATOM 38 C CA . ASN A 1 6 ? 28.796 22.676 37.211 1.00 11.06 ? 6 ASN A CA 1 ATOM 39 C C . ASN A 1 6 ? 29.117 21.435 36.378 1.00 10.33 ? 6 ASN A C 1 ATOM 40 O O . ASN A 1 6 ? 29.947 20.603 36.754 1.00 11.28 ? 6 ASN A O 1 ATOM 41 C CB . ASN A 1 6 ? 30.023 23.548 37.445 1.00 12.95 ? 6 ASN A CB 1 ATOM 42 C CG . ASN A 1 6 ? 29.675 24.816 38.200 1.00 18.08 ? 6 ASN A CG 1 ATOM 43 O OD1 . ASN A 1 6 ? 29.022 25.708 37.665 1.00 19.52 ? 6 ASN A OD1 1 ATOM 44 N ND2 . ASN A 1 6 ? 30.047 24.872 39.467 1.00 21.23 ? 6 ASN A ND2 1 ATOM 45 N N . TRP A 1 7 ? 28.399 21.289 35.272 1.00 8.66 ? 7 TRP A N 1 ATOM 46 C CA . TRP A 1 7 ? 28.518 20.119 34.424 1.00 8.74 ? 7 TRP A CA 1 ATOM 47 C C . TRP A 1 7 ? 29.246 20.352 33.092 1.00 9.63 ? 7 TRP A C 1 ATOM 48 O O . TRP A 1 7 ? 29.064 21.389 32.440 1.00 9.45 ? 7 TRP A O 1 ATOM 49 C CB . TRP A 1 7 ? 27.115 19.563 34.152 1.00 8.00 ? 7 TRP A CB 1 ATOM 50 C CG . TRP A 1 7 ? 26.325 19.198 35.391 1.00 8.01 ? 7 TRP A CG 1 ATOM 51 C CD1 . TRP A 1 7 ? 25.556 20.031 36.159 1.00 8.29 ? 7 TRP A CD1 1 ATOM 52 C CD2 . TRP A 1 7 ? 26.174 17.885 35.947 1.00 7.60 ? 7 TRP A CD2 1 ATOM 53 N NE1 . TRP A 1 7 ? 24.922 19.308 37.156 1.00 9.20 ? 7 TRP A NE1 1 ATOM 54 C CE2 . TRP A 1 7 ? 25.286 17.987 37.046 1.00 8.73 ? 7 TRP A CE2 1 ATOM 55 C CE3 . TRP A 1 7 ? 26.694 16.625 35.618 1.00 6.99 ? 7 TRP A CE3 1 ATOM 56 C CZ2 . TRP A 1 7 ? 24.909 16.876 37.815 1.00 7.67 ? 7 TRP A CZ2 1 ATOM 57 C CZ3 . TRP A 1 7 ? 26.320 15.527 36.380 1.00 7.58 ? 7 TRP A CZ3 1 ATOM 58 C CH2 . TRP A 1 7 ? 25.433 15.663 37.468 1.00 5.92 ? 7 TRP A CH2 1 ATOM 59 N N . LYS A 1 8 ? 30.052 19.368 32.702 1.00 9.39 ? 8 LYS A N 1 ATOM 60 C CA . LYS A 1 8 ? 30.802 19.424 31.450 1.00 11.56 ? 8 LYS A CA 1 ATOM 61 C C . LYS A 1 8 ? 30.342 18.243 30.611 1.00 10.56 ? 8 LYS A C 1 ATOM 62 O O . LYS A 1 8 ? 30.091 17.158 31.138 1.00 10.14 ? 8 LYS A O 1 ATOM 63 C CB . LYS A 1 8 ? 32.308 19.360 31.710 1.00 15.20 ? 8 LYS A CB 1 ATOM 64 C CG . LYS A 1 8 ? 32.785 18.080 32.313 1.00 18.52 ? 8 LYS A CG 1 ATOM 65 C CD . LYS A 1 8 ? 34.263 18.182 32.618 1.00 26.26 ? 8 LYS A CD 1 ATOM 66 C CE . LYS A 1 8 ? 35.091 18.499 31.378 1.00 29.22 ? 8 LYS A CE 1 ATOM 67 N NZ . LYS A 1 8 ? 35.067 17.393 30.369 1.00 32.48 ? 8 LYS A NZ 1 ATOM 68 N N . ILE A 1 9 ? 30.222 18.447 29.308 1.00 8.21 ? 9 ILE A N 1 ATOM 69 C CA . ILE A 1 9 ? 29.739 17.384 28.441 1.00 8.08 ? 9 ILE A CA 1 ATOM 70 C C . ILE A 1 9 ? 30.798 16.325 28.117 1.00 7.86 ? 9 ILE A C 1 ATOM 71 O O . ILE A 1 9 ? 31.990 16.635 28.028 1.00 8.38 ? 9 ILE A O 1 ATOM 72 C CB . ILE A 1 9 ? 29.148 17.997 27.144 1.00 10.70 ? 9 ILE A CB 1 ATOM 73 C CG1 . ILE A 1 9 ? 28.285 16.981 26.401 1.00 10.95 ? 9 ILE A CG1 1 ATOM 74 C CG2 . ILE A 1 9 ? 30.261 18.500 26.243 1.00 10.70 ? 9 ILE A CG2 1 ATOM 75 C CD1 . ILE A 1 9 ? 27.586 17.597 25.207 1.00 13.23 ? 9 ILE A CD1 1 ATOM 76 N N . ILE A 1 10 ? 30.373 15.067 27.995 1.00 7.08 ? 10 ILE A N 1 ATOM 77 C CA . ILE A 1 10 ? 31.288 13.988 27.656 1.00 7.45 ? 10 ILE A CA 1 ATOM 78 C C . ILE A 1 10 ? 30.812 13.201 26.441 1.00 8.49 ? 10 ILE A C 1 ATOM 79 O O . ILE A 1 10 ? 31.561 12.397 25.892 1.00 9.49 ? 10 ILE A O 1 ATOM 80 C CB . ILE A 1 10 ? 31.586 13.023 28.847 1.00 10.28 ? 10 ILE A CB 1 ATOM 81 C CG1 . ILE A 1 10 ? 30.304 12.393 29.382 1.00 10.51 ? 10 ILE A CG1 1 ATOM 82 C CG2 . ILE A 1 10 ? 32.349 13.756 29.963 1.00 10.10 ? 10 ILE A CG2 1 ATOM 83 C CD1 . ILE A 1 10 ? 30.578 11.242 30.325 1.00 12.18 ? 10 ILE A CD1 1 ATOM 84 N N . ARG A 1 11 ? 29.566 13.419 26.030 1.00 7.59 ? 11 ARG A N 1 ATOM 85 C CA . ARG A 1 11 ? 29.015 12.742 24.851 1.00 8.70 ? 11 ARG A CA 1 ATOM 86 C C . ARG A 1 11 ? 27.821 13.500 24.290 1.00 9.41 ? 11 ARG A C 1 ATOM 87 O O . ARG A 1 11 ? 26.990 14.004 25.043 1.00 9.84 ? 11 ARG A O 1 ATOM 88 C CB . ARG A 1 11 ? 28.563 11.316 25.184 1.00 8.07 ? 11 ARG A CB 1 ATOM 89 C CG . ARG A 1 11 ? 27.912 10.616 23.998 1.00 12.26 ? 11 ARG A CG 1 ATOM 90 C CD . ARG A 1 11 ? 27.234 9.340 24.394 1.00 13.46 ? 11 ARG A CD 1 ATOM 91 N NE . ARG A 1 11 ? 28.157 8.304 24.847 1.00 15.44 ? 11 ARG A NE 1 ATOM 92 C CZ . ARG A 1 11 ? 28.815 7.470 24.037 1.00 19.59 ? 11 ARG A CZ 1 ATOM 93 N NH1 . ARG A 1 11 ? 28.677 7.559 22.714 1.00 19.40 ? 11 ARG A NH1 1 ATOM 94 N NH2 . ARG A 1 11 ? 29.521 6.467 24.547 1.00 17.50 ? 11 ARG A NH2 1 ATOM 95 N N . SER A 1 12 ? 27.748 13.594 22.965 1.00 8.84 ? 12 SER A N 1 ATOM 96 C CA . SER A 1 12 ? 26.621 14.245 22.310 1.00 8.61 ? 12 SER A CA 1 ATOM 97 C C . SER A 1 12 ? 26.278 13.431 21.063 1.00 9.48 ? 12 SER A C 1 ATOM 98 O O . SER A 1 12 ? 27.159 13.147 20.250 1.00 9.84 ? 12 SER A O 1 ATOM 99 C CB . SER A 1 12 ? 26.966 15.676 21.925 1.00 9.02 ? 12 SER A CB 1 ATOM 100 O OG . SER A 1 12 ? 25.863 16.285 21.273 1.00 11.97 ? 12 SER A OG 1 ATOM 101 N N . GLU A 1 13 ? 25.016 13.038 20.924 1.00 7.59 ? 13 GLU A N 1 ATOM 102 C CA . GLU A 1 13 ? 24.586 12.258 19.768 1.00 9.67 ? 13 GLU A CA 1 ATOM 103 C C . GLU A 1 13 ? 23.368 12.887 19.118 1.00 9.06 ? 13 GLU A C 1 ATOM 104 O O . GLU A 1 13 ? 22.457 13.343 19.815 1.00 7.34 ? 13 GLU A O 1 ATOM 105 C CB . GLU A 1 13 ? 24.185 10.833 20.184 1.00 9.72 ? 13 GLU A CB 1 ATOM 106 C CG . GLU A 1 13 ? 25.257 10.018 20.895 1.00 15.17 ? 13 GLU A CG 1 ATOM 107 C CD . GLU A 1 13 ? 26.262 9.340 19.954 1.00 18.75 ? 13 GLU A CD 1 ATOM 108 O OE1 . GLU A 1 13 ? 26.031 9.310 18.726 1.00 18.53 ? 13 GLU A OE1 1 ATOM 109 O OE2 . GLU A 1 13 ? 27.286 8.822 20.457 1.00 19.23 ? 13 GLU A OE2 1 ATOM 110 N N . ASN A 1 14 ? 23.363 12.919 17.786 1.00 8.79 ? 14 ASN A N 1 ATOM 111 C CA . ASN A 1 14 ? 22.202 13.408 17.025 1.00 8.29 ? 14 ASN A CA 1 ATOM 112 C C . ASN A 1 14 ? 21.813 14.896 17.153 1.00 7.35 ? 14 ASN A C 1 ATOM 113 O O . ASN A 1 14 ? 20.681 15.245 16.860 1.00 7.00 ? 14 ASN A O 1 ATOM 114 C CB . ASN A 1 14 ? 20.989 12.522 17.383 1.00 7.23 ? 14 ASN A CB 1 ATOM 115 C CG . ASN A 1 14 ? 20.358 11.833 16.172 1.00 9.38 ? 14 ASN A CG 1 ATOM 116 O OD1 . ASN A 1 14 ? 20.996 11.670 15.128 1.00 10.37 ? 14 ASN A OD1 1 ATOM 117 N ND2 . ASN A 1 14 ? 19.106 11.436 16.310 1.00 6.35 ? 14 ASN A ND2 1 ATOM 118 N N . PHE A 1 15 ? 22.734 15.777 17.536 1.00 7.26 ? 15 PHE A N 1 ATOM 119 C CA . PHE A 1 15 ? 22.385 17.198 17.681 1.00 9.06 ? 15 PHE A CA 1 ATOM 120 C C . PHE A 1 15 ? 22.041 17.878 16.358 1.00 9.15 ? 15 PHE A C 1 ATOM 121 O O . PHE A 1 15 ? 21.041 18.578 16.265 1.00 8.64 ? 15 PHE A O 1 ATOM 122 C CB . PHE A 1 15 ? 23.497 17.990 18.379 1.00 10.05 ? 15 PHE A CB 1 ATOM 123 C CG . PHE A 1 15 ? 23.102 19.397 18.746 1.00 10.57 ? 15 PHE A CG 1 ATOM 124 C CD1 . PHE A 1 15 ? 22.032 19.633 19.605 1.00 13.39 ? 15 PHE A CD1 1 ATOM 125 C CD2 . PHE A 1 15 ? 23.813 20.485 18.254 1.00 11.47 ? 15 PHE A CD2 1 ATOM 126 C CE1 . PHE A 1 15 ? 21.678 20.929 19.968 1.00 13.52 ? 15 PHE A CE1 1 ATOM 127 C CE2 . PHE A 1 15 ? 23.467 21.784 18.609 1.00 11.60 ? 15 PHE A CE2 1 ATOM 128 C CZ . PHE A 1 15 ? 22.399 22.006 19.469 1.00 13.52 ? 15 PHE A CZ 1 ATOM 129 N N . GLU A 1 16 ? 22.878 17.699 15.342 1.00 11.17 ? 16 GLU A N 1 ATOM 130 C CA . GLU A 1 16 ? 22.583 18.313 14.053 1.00 12.58 ? 16 GLU A CA 1 ATOM 131 C C . GLU A 1 16 ? 21.271 17.797 13.468 1.00 11.71 ? 16 GLU A C 1 ATOM 132 O O . GLU A 1 16 ? 20.503 18.567 12.888 1.00 12.66 ? 16 GLU A O 1 ATOM 133 C CB . GLU A 1 16 ? 23.711 18.081 13.060 1.00 15.91 ? 16 GLU A CB 1 ATOM 134 C CG . GLU A 1 16 ? 23.274 18.337 11.626 1.00 21.31 ? 16 GLU A CG 1 ATOM 135 C CD . GLU A 1 16 ? 24.376 18.878 10.757 1.00 25.39 ? 16 GLU A CD 1 ATOM 136 O OE1 . GLU A 1 16 ? 25.526 18.984 11.240 1.00 27.92 ? 16 GLU A OE1 1 ATOM 137 O OE2 . GLU A 1 16 ? 24.084 19.213 9.588 1.00 28.60 ? 16 GLU A OE2 1 ATOM 138 N N . GLU A 1 17 ? 21.018 16.497 13.619 1.00 11.67 ? 17 GLU A N 1 ATOM 139 C CA . GLU A 1 17 ? 19.785 15.878 13.116 1.00 13.65 ? 17 GLU A CA 1 ATOM 140 C C . GLU A 1 17 ? 18.529 16.490 13.767 1.00 13.48 ? 17 GLU A C 1 ATOM 141 O O . GLU A 1 17 ? 17.490 16.662 13.115 1.00 11.68 ? 17 GLU A O 1 ATOM 142 C CB . GLU A 1 17 ? 19.811 14.361 13.325 1.00 17.06 ? 17 GLU A CB 1 ATOM 143 C CG . GLU A 1 17 ? 20.806 13.602 12.430 1.00 23.45 ? 17 GLU A CG 1 ATOM 144 C CD . GLU A 1 17 ? 22.279 13.624 12.909 1.00 27.80 ? 17 GLU A CD 1 ATOM 145 O OE1 . GLU A 1 17 ? 22.637 14.338 13.881 1.00 26.52 ? 17 GLU A OE1 1 ATOM 146 O OE2 . GLU A 1 17 ? 23.097 12.897 12.291 1.00 31.80 ? 17 GLU A OE2 1 ATOM 147 N N . LEU A 1 18 ? 18.640 16.834 15.048 1.00 10.82 ? 18 LEU A N 1 ATOM 148 C CA . LEU A 1 18 ? 17.547 17.468 15.777 1.00 9.45 ? 18 LEU A CA 1 ATOM 149 C C . LEU A 1 18 ? 17.302 18.849 15.155 1.00 9.27 ? 18 LEU A C 1 ATOM 150 O O . LEU A 1 18 ? 16.153 19.246 14.927 1.00 9.04 ? 18 LEU A O 1 ATOM 151 C CB . LEU A 1 18 ? 17.931 17.644 17.253 1.00 9.77 ? 18 LEU A CB 1 ATOM 152 C CG . LEU A 1 18 ? 16.921 18.358 18.163 1.00 11.36 ? 18 LEU A CG 1 ATOM 153 C CD1 . LEU A 1 18 ? 15.817 17.402 18.554 1.00 13.85 ? 18 LEU A CD1 1 ATOM 154 C CD2 . LEU A 1 18 ? 17.616 18.876 19.409 1.00 12.69 ? 18 LEU A CD2 1 ATOM 155 N N . LEU A 1 19 ? 18.387 19.568 14.864 1.00 10.75 ? 19 LEU A N 1 ATOM 156 C CA . LEU A 1 19 ? 18.275 20.906 14.276 1.00 11.15 ? 19 LEU A CA 1 ATOM 157 C C . LEU A 1 19 ? 17.671 20.873 12.874 1.00 12.52 ? 19 LEU A C 1 ATOM 158 O O . LEU A 1 19 ? 16.932 21.777 12.485 1.00 10.05 ? 19 LEU A O 1 ATOM 159 C CB . LEU A 1 19 ? 19.631 21.616 14.263 1.00 12.01 ? 19 LEU A CB 1 ATOM 160 C CG . LEU A 1 19 ? 20.282 21.963 15.614 1.00 10.42 ? 19 LEU A CG 1 ATOM 161 C CD1 . LEU A 1 19 ? 21.560 22.763 15.369 1.00 13.01 ? 19 LEU A CD1 1 ATOM 162 C CD2 . LEU A 1 19 ? 19.312 22.742 16.513 1.00 11.45 ? 19 LEU A CD2 1 ATOM 163 N N . LYS A 1 20 ? 17.944 19.795 12.150 1.00 14.41 ? 20 LYS A N 1 ATOM 164 C CA . LYS A 1 20 ? 17.427 19.628 10.800 1.00 16.54 ? 20 LYS A CA 1 ATOM 165 C C . LYS A 1 20 ? 15.902 19.512 10.832 1.00 16.17 ? 20 LYS A C 1 ATOM 166 O O . LYS A 1 20 ? 15.201 20.164 10.053 1.00 15.90 ? 20 LYS A O 1 ATOM 167 C CB . LYS A 1 20 ? 18.048 18.390 10.157 1.00 20.07 ? 20 LYS A CB 1 ATOM 168 C CG . LYS A 1 20 ? 18.592 18.643 8.765 1.00 26.61 ? 20 LYS A CG 1 ATOM 169 C CD . LYS A 1 20 ? 18.960 17.349 8.027 1.00 30.95 ? 20 LYS A CD 1 ATOM 170 C CE . LYS A 1 20 ? 20.226 16.690 8.579 1.00 35.68 ? 20 LYS A CE 1 ATOM 171 N NZ . LYS A 1 20 ? 21.485 17.466 8.342 1.00 39.27 ? 20 LYS A NZ 1 ATOM 172 N N . VAL A 1 21 ? 15.395 18.700 11.759 1.00 15.31 ? 21 VAL A N 1 ATOM 173 C CA . VAL A 1 21 ? 13.958 18.508 11.927 1.00 14.41 ? 21 VAL A CA 1 ATOM 174 C C . VAL A 1 21 ? 13.275 19.831 12.316 1.00 15.02 ? 21 VAL A C 1 ATOM 175 O O . VAL A 1 21 ? 12.150 20.119 11.878 1.00 13.59 ? 21 VAL A O 1 ATOM 176 C CB . VAL A 1 21 ? 13.674 17.422 12.998 1.00 14.93 ? 21 VAL A CB 1 ATOM 177 C CG1 . VAL A 1 21 ? 12.194 17.383 13.364 1.00 17.29 ? 21 VAL A CG1 1 ATOM 178 C CG2 . VAL A 1 21 ? 14.115 16.082 12.482 1.00 15.09 ? 21 VAL A CG2 1 ATOM 179 N N . LEU A 1 22 ? 13.966 20.643 13.119 1.00 14.52 ? 22 LEU A N 1 ATOM 180 C CA . LEU A 1 22 ? 13.432 21.938 13.569 1.00 14.42 ? 22 LEU A CA 1 ATOM 181 C C . LEU A 1 22 ? 13.478 22.984 12.467 1.00 15.49 ? 22 LEU A C 1 ATOM 182 O O . LEU A 1 22 ? 13.038 24.115 12.666 1.00 16.81 ? 22 LEU A O 1 ATOM 183 C CB . LEU A 1 22 ? 14.180 22.440 14.818 1.00 13.61 ? 22 LEU A CB 1 ATOM 184 C CG . LEU A 1 22 ? 13.986 21.565 16.069 1.00 13.97 ? 22 LEU A CG 1 ATOM 185 C CD1 . LEU A 1 22 ? 14.852 22.047 17.225 1.00 13.25 ? 22 LEU A CD1 1 ATOM 186 C CD2 . LEU A 1 22 ? 12.525 21.580 16.467 1.00 14.62 ? 22 LEU A CD2 1 ATOM 187 N N . GLY A 1 23 ? 14.062 22.618 11.328 1.00 16.41 ? 23 GLY A N 1 ATOM 188 C CA . GLY A 1 23 ? 14.123 23.516 10.183 1.00 17.05 ? 23 GLY A CA 1 ATOM 189 C C . GLY A 1 23 ? 15.241 24.539 10.125 1.00 18.00 ? 23 GLY A C 1 ATOM 190 O O . GLY A 1 23 ? 15.112 25.545 9.425 1.00 19.45 ? 23 GLY A O 1 ATOM 191 N N . VAL A 1 24 ? 16.320 24.315 10.869 1.00 14.78 ? 24 VAL A N 1 ATOM 192 C CA . VAL A 1 24 ? 17.440 25.241 10.860 1.00 13.71 ? 24 VAL A CA 1 ATOM 193 C C . VAL A 1 24 ? 18.289 24.983 9.607 1.00 15.09 ? 24 VAL A C 1 ATOM 194 O O . VAL A 1 24 ? 18.679 23.840 9.334 1.00 14.12 ? 24 VAL A O 1 ATOM 195 C CB . VAL A 1 24 ? 18.297 25.081 12.139 1.00 12.19 ? 24 VAL A CB 1 ATOM 196 C CG1 . VAL A 1 24 ? 19.465 26.054 12.109 1.00 8.69 ? 24 VAL A CG1 1 ATOM 197 C CG2 . VAL A 1 24 ? 17.416 25.294 13.388 1.00 11.37 ? 24 VAL A CG2 1 ATOM 198 N N . ASN A 1 25 ? 18.595 26.047 8.866 1.00 15.37 ? 25 ASN A N 1 ATOM 199 C CA . ASN A 1 25 ? 19.360 25.914 7.635 1.00 17.74 ? 25 ASN A CA 1 ATOM 200 C C . ASN A 1 25 ? 20.808 25.466 7.819 1.00 18.29 ? 25 ASN A C 1 ATOM 201 O O . ASN A 1 25 ? 21.377 25.592 8.903 1.00 18.05 ? 25 ASN A O 1 ATOM 202 C CB . ASN A 1 25 ? 19.230 27.172 6.742 1.00 19.41 ? 25 ASN A CB 1 ATOM 203 C CG . ASN A 1 25 ? 20.090 28.351 7.200 1.00 22.35 ? 25 ASN A CG 1 ATOM 204 O OD1 . ASN A 1 25 ? 21.207 28.189 7.698 1.00 22.64 ? 25 ASN A OD1 1 ATOM 205 N ND2 . ASN A 1 25 ? 19.602 29.558 6.933 1.00 24.15 ? 25 ASN A ND2 1 ATOM 206 N N . VAL A 1 26 ? 21.398 24.971 6.733 1.00 18.67 ? 26 VAL A N 1 ATOM 207 C CA . VAL A 1 26 ? 22.755 24.444 6.742 1.00 19.24 ? 26 VAL A CA 1 ATOM 208 C C . VAL A 1 26 ? 23.825 25.280 7.421 1.00 18.39 ? 26 VAL A C 1 ATOM 209 O O . VAL A 1 26 ? 24.558 24.764 8.261 1.00 18.50 ? 26 VAL A O 1 ATOM 210 C CB . VAL A 1 26 ? 23.223 24.088 5.320 1.00 20.77 ? 26 VAL A CB 1 ATOM 211 C CG1 . VAL A 1 26 ? 24.624 23.523 5.378 1.00 22.39 ? 26 VAL A CG1 1 ATOM 212 C CG2 . VAL A 1 26 ? 22.276 23.084 4.698 1.00 21.28 ? 26 VAL A CG2 1 ATOM 213 N N . MET A 1 27 ? 23.932 26.556 7.052 1.00 19.00 ? 27 MET A N 1 ATOM 214 C CA . MET A 1 27 ? 24.948 27.433 7.628 1.00 19.54 ? 27 MET A CA 1 ATOM 215 C C . MET A 1 27 ? 24.734 27.741 9.099 1.00 19.04 ? 27 MET A C 1 ATOM 216 O O . MET A 1 27 ? 25.702 27.820 9.849 1.00 18.28 ? 27 MET A O 1 ATOM 217 C CB . MET A 1 27 ? 25.104 28.736 6.830 1.00 23.31 ? 27 MET A CB 1 ATOM 218 C CG . MET A 1 27 ? 25.955 28.602 5.552 1.00 29.99 ? 27 MET A CG 1 ATOM 219 S SD . MET A 1 27 ? 24.975 28.527 4.010 1.00 37.48 ? 27 MET A SD 1 ATOM 220 C CE . MET A 1 27 ? 26.198 29.150 2.776 1.00 35.24 ? 27 MET A CE 1 ATOM 221 N N . LEU A 1 28 ? 23.480 27.932 9.507 1.00 16.74 ? 28 LEU A N 1 ATOM 222 C CA . LEU A 1 28 ? 23.190 28.209 10.912 1.00 16.39 ? 28 LEU A CA 1 ATOM 223 C C . LEU A 1 28 ? 23.477 26.954 11.722 1.00 16.86 ? 28 LEU A C 1 ATOM 224 O O . LEU A 1 28 ? 23.954 27.038 12.852 1.00 15.09 ? 28 LEU A O 1 ATOM 225 C CB . LEU A 1 28 ? 21.739 28.679 11.111 1.00 15.94 ? 28 LEU A CB 1 ATOM 226 C CG . LEU A 1 28 ? 21.490 30.154 10.741 1.00 16.72 ? 28 LEU A CG 1 ATOM 227 C CD1 . LEU A 1 28 ? 20.008 30.496 10.780 1.00 14.38 ? 28 LEU A CD1 1 ATOM 228 C CD2 . LEU A 1 28 ? 22.302 31.074 11.665 1.00 12.81 ? 28 LEU A CD2 1 ATOM 229 N N . ARG A 1 29 ? 23.228 25.791 11.121 1.00 16.05 ? 29 ARG A N 1 ATOM 230 C CA . ARG A 1 29 ? 23.498 24.524 11.798 1.00 18.43 ? 29 ARG A CA 1 ATOM 231 C C . ARG A 1 29 ? 24.980 24.377 12.076 1.00 19.22 ? 29 ARG A C 1 ATOM 232 O O . ARG A 1 29 ? 25.383 23.987 13.171 1.00 17.97 ? 29 ARG A O 1 ATOM 233 C CB . ARG A 1 29 ? 23.030 23.334 10.969 1.00 18.63 ? 29 ARG A CB 1 ATOM 234 C CG . ARG A 1 29 ? 21.596 22.983 11.189 1.00 21.26 ? 29 ARG A CG 1 ATOM 235 C CD . ARG A 1 29 ? 21.339 21.572 10.739 1.00 24.71 ? 29 ARG A CD 1 ATOM 236 N NE . ARG A 1 29 ? 20.571 21.564 9.513 1.00 29.88 ? 29 ARG A NE 1 ATOM 237 C CZ . ARG A 1 29 ? 21.019 21.147 8.340 1.00 29.19 ? 29 ARG A CZ 1 ATOM 238 N NH1 . ARG A 1 29 ? 22.248 20.682 8.205 1.00 30.52 ? 29 ARG A NH1 1 ATOM 239 N NH2 . ARG A 1 29 ? 20.232 21.233 7.295 1.00 31.61 ? 29 ARG A NH2 1 ATOM 240 N N . LYS A 1 30 ? 25.790 24.709 11.078 1.00 19.76 ? 30 LYS A N 1 ATOM 241 C CA . LYS A 1 30 ? 27.235 24.619 11.198 1.00 21.96 ? 30 LYS A CA 1 ATOM 242 C C . LYS A 1 30 ? 27.706 25.418 12.417 1.00 20.91 ? 30 LYS A C 1 ATOM 243 O O . LYS A 1 30 ? 28.470 24.916 13.239 1.00 22.15 ? 30 LYS A O 1 ATOM 244 C CB . LYS A 1 30 ? 27.894 25.143 9.915 1.00 25.07 ? 30 LYS A CB 1 ATOM 245 C CG . LYS A 1 30 ? 29.404 25.031 9.905 1.00 30.48 ? 30 LYS A CG 1 ATOM 246 C CD . LYS A 1 30 ? 30.013 25.631 8.639 1.00 35.43 ? 30 LYS A CD 1 ATOM 247 C CE . LYS A 1 30 ? 31.533 25.759 8.778 1.00 37.96 ? 30 LYS A CE 1 ATOM 248 N NZ . LYS A 1 30 ? 32.180 26.388 7.584 1.00 41.61 ? 30 LYS A NZ 1 ATOM 249 N N . ILE A 1 31 ? 27.208 26.643 12.544 1.00 18.38 ? 31 ILE A N 1 ATOM 250 C CA . ILE A 1 31 ? 27.557 27.527 13.652 1.00 16.41 ? 31 ILE A CA 1 ATOM 251 C C . ILE A 1 31 ? 27.105 26.932 14.989 1.00 15.39 ? 31 ILE A C 1 ATOM 252 O O . ILE A 1 31 ? 27.888 26.855 15.930 1.00 14.90 ? 31 ILE A O 1 ATOM 253 C CB . ILE A 1 31 ? 26.881 28.920 13.471 1.00 16.63 ? 31 ILE A CB 1 ATOM 254 C CG1 . ILE A 1 31 ? 27.419 29.606 12.208 1.00 18.74 ? 31 ILE A CG1 1 ATOM 255 C CG2 . ILE A 1 31 ? 27.071 29.791 14.713 1.00 15.71 ? 31 ILE A CG2 1 ATOM 256 C CD1 . ILE A 1 31 ? 26.735 30.946 11.858 1.00 17.27 ? 31 ILE A CD1 1 ATOM 257 N N . ALA A 1 32 ? 25.853 26.487 15.048 1.00 13.39 ? 32 ALA A N 1 ATOM 258 C CA . ALA A 1 32 ? 25.271 25.930 16.267 1.00 12.76 ? 32 ALA A CA 1 ATOM 259 C C . ALA A 1 32 ? 25.994 24.685 16.775 1.00 12.11 ? 32 ALA A C 1 ATOM 260 O O . ALA A 1 32 ? 26.325 24.598 17.946 1.00 10.54 ? 32 ALA A O 1 ATOM 261 C CB . ALA A 1 32 ? 23.790 25.638 16.040 1.00 12.45 ? 32 ALA A CB 1 ATOM 262 N N . VAL A 1 33 ? 26.252 23.731 15.886 1.00 11.95 ? 33 VAL A N 1 ATOM 263 C CA . VAL A 1 33 ? 26.932 22.490 16.256 1.00 13.80 ? 33 VAL A CA 1 ATOM 264 C C . VAL A 1 33 ? 28.328 22.701 16.855 1.00 14.00 ? 33 VAL A C 1 ATOM 265 O O . VAL A 1 33 ? 28.693 22.048 17.832 1.00 14.07 ? 33 VAL A O 1 ATOM 266 C CB . VAL A 1 33 ? 27.016 21.504 15.044 1.00 13.56 ? 33 VAL A CB 1 ATOM 267 C CG1 . VAL A 1 33 ? 27.909 20.318 15.375 1.00 16.07 ? 33 VAL A CG1 1 ATOM 268 C CG2 . VAL A 1 33 ? 25.621 21.006 14.684 1.00 14.96 ? 33 VAL A CG2 1 ATOM 269 N N . ALA A 1 34 ? 29.101 23.620 16.281 1.00 14.73 ? 34 ALA A N 1 ATOM 270 C CA . ALA A 1 34 ? 30.443 23.898 16.780 1.00 14.95 ? 34 ALA A CA 1 ATOM 271 C C . ALA A 1 34 ? 30.381 24.505 18.178 1.00 15.59 ? 34 ALA A C 1 ATOM 272 O O . ALA A 1 34 ? 31.120 24.085 19.065 1.00 16.65 ? 34 ALA A O 1 ATOM 273 C CB . ALA A 1 34 ? 31.191 24.844 15.833 1.00 16.10 ? 34 ALA A CB 1 ATOM 274 N N . ALA A 1 35 ? 29.495 25.480 18.375 1.00 13.20 ? 35 ALA A N 1 ATOM 275 C CA . ALA A 1 35 ? 29.371 26.134 19.671 1.00 13.04 ? 35 ALA A CA 1 ATOM 276 C C . ALA A 1 35 ? 28.807 25.200 20.749 1.00 12.91 ? 35 ALA A C 1 ATOM 277 O O . ALA A 1 35 ? 29.245 25.239 21.895 1.00 12.32 ? 35 ALA A O 1 ATOM 278 C CB . ALA A 1 35 ? 28.517 27.387 19.552 1.00 12.14 ? 35 ALA A CB 1 ATOM 279 N N . ALA A 1 36 ? 27.878 24.332 20.362 1.00 11.40 ? 36 ALA A N 1 ATOM 280 C CA . ALA A 1 36 ? 27.253 23.416 21.312 1.00 12.63 ? 36 ALA A CA 1 ATOM 281 C C . ALA A 1 36 ? 28.128 22.256 21.770 1.00 13.40 ? 36 ALA A C 1 ATOM 282 O O . ALA A 1 36 ? 27.743 21.512 22.668 1.00 13.47 ? 36 ALA A O 1 ATOM 283 C CB . ALA A 1 36 ? 25.952 22.883 20.744 1.00 11.79 ? 36 ALA A CB 1 ATOM 284 N N . SER A 1 37 ? 29.286 22.080 21.148 1.00 13.86 ? 37 SER A N 1 ATOM 285 C CA . SER A 1 37 ? 30.169 20.983 21.520 1.00 15.95 ? 37 SER A CA 1 ATOM 286 C C . SER A 1 37 ? 30.938 21.245 22.818 1.00 16.46 ? 37 SER A C 1 ATOM 287 O O . SER A 1 37 ? 31.488 20.320 23.406 1.00 18.23 ? 37 SER A O 1 ATOM 288 C CB . SER A 1 37 ? 31.145 20.689 20.388 1.00 16.93 ? 37 SER A CB 1 ATOM 289 O OG . SER A 1 37 ? 32.100 21.729 20.293 1.00 21.65 ? 37 SER A OG 1 ATOM 290 N N . LYS A 1 38 ? 30.957 22.496 23.272 1.00 16.91 ? 38 LYS A N 1 ATOM 291 C CA . LYS A 1 38 ? 31.657 22.869 24.502 1.00 18.36 ? 38 LYS A CA 1 ATOM 292 C C . LYS A 1 38 ? 30.817 23.809 25.382 1.00 15.90 ? 38 LYS A C 1 ATOM 293 O O . LYS A 1 38 ? 31.175 24.975 25.591 1.00 16.72 ? 38 LYS A O 1 ATOM 294 C CB . LYS A 1 38 ? 33.004 23.539 24.156 1.00 23.99 ? 38 LYS A CB 1 ATOM 295 C CG . LYS A 1 38 ? 32.907 24.607 23.046 1.00 30.97 ? 38 LYS A CG 1 ATOM 296 C CD . LYS A 1 38 ? 34.250 25.320 22.792 1.00 36.44 ? 38 LYS A CD 1 ATOM 297 C CE . LYS A 1 38 ? 34.266 26.098 21.456 1.00 38.70 ? 38 LYS A CE 1 ATOM 298 N NZ . LYS A 1 38 ? 33.193 27.131 21.321 1.00 39.37 ? 38 LYS A NZ 1 ATOM 299 N N . PRO A 1 39 ? 29.669 23.321 25.906 1.00 13.53 ? 39 PRO A N 1 ATOM 300 C CA . PRO A 1 39 ? 28.851 24.201 26.747 1.00 11.87 ? 39 PRO A CA 1 ATOM 301 C C . PRO A 1 39 ? 29.292 24.248 28.211 1.00 12.05 ? 39 PRO A C 1 ATOM 302 O O . PRO A 1 39 ? 30.027 23.380 28.676 1.00 12.12 ? 39 PRO A O 1 ATOM 303 C CB . PRO A 1 39 ? 27.469 23.560 26.649 1.00 9.34 ? 39 PRO A CB 1 ATOM 304 C CG . PRO A 1 39 ? 27.779 22.131 26.593 1.00 10.32 ? 39 PRO A CG 1 ATOM 305 C CD . PRO A 1 39 ? 29.009 22.020 25.703 1.00 10.86 ? 39 PRO A CD 1 ATOM 306 N N . ALA A 1 40 ? 28.921 25.316 28.898 1.00 11.52 ? 40 ALA A N 1 ATOM 307 C CA . ALA A 1 40 ? 29.192 25.423 30.329 1.00 11.84 ? 40 ALA A CA 1 ATOM 308 C C . ALA A 1 40 ? 27.773 25.329 30.894 1.00 10.23 ? 40 ALA A C 1 ATOM 309 O O . ALA A 1 40 ? 26.894 26.080 30.478 1.00 10.42 ? 40 ALA A O 1 ATOM 310 C CB . ALA A 1 40 ? 29.830 26.767 30.673 1.00 11.40 ? 40 ALA A CB 1 ATOM 311 N N . VAL A 1 41 ? 27.518 24.345 31.750 1.00 10.73 ? 41 VAL A N 1 ATOM 312 C CA . VAL A 1 41 ? 26.185 24.169 32.333 1.00 9.92 ? 41 VAL A CA 1 ATOM 313 C C . VAL A 1 41 ? 26.226 24.295 33.854 1.00 11.64 ? 41 VAL A C 1 ATOM 314 O O . VAL A 1 41 ? 27.026 23.627 34.514 1.00 11.40 ? 41 VAL A O 1 ATOM 315 C CB . VAL A 1 41 ? 25.594 22.772 31.987 1.00 10.67 ? 41 VAL A CB 1 ATOM 316 C CG1 . VAL A 1 41 ? 24.204 22.596 32.612 1.00 11.34 ? 41 VAL A CG1 1 ATOM 317 C CG2 . VAL A 1 41 ? 25.507 22.583 30.475 1.00 11.31 ? 41 VAL A CG2 1 ATOM 318 N N . GLU A 1 42 ? 25.364 25.147 34.399 1.00 10.94 ? 42 GLU A N 1 ATOM 319 C CA . GLU A 1 42 ? 25.271 25.327 35.845 1.00 12.40 ? 42 GLU A CA 1 ATOM 320 C C . GLU A 1 42 ? 23.837 25.095 36.316 1.00 11.42 ? 42 GLU A C 1 ATOM 321 O O . GLU A 1 42 ? 22.898 25.720 35.825 1.00 10.46 ? 42 GLU A O 1 ATOM 322 C CB . GLU A 1 42 ? 25.711 26.721 36.270 1.00 16.26 ? 42 GLU A CB 1 ATOM 323 C CG . GLU A 1 42 ? 25.495 26.947 37.768 1.00 23.78 ? 42 GLU A CG 1 ATOM 324 C CD . GLU A 1 42 ? 25.944 28.311 38.242 1.00 27.94 ? 42 GLU A CD 1 ATOM 325 O OE1 . GLU A 1 42 ? 25.308 29.329 37.872 1.00 29.92 ? 42 GLU A OE1 1 ATOM 326 O OE2 . GLU A 1 42 ? 26.935 28.351 39.002 1.00 32.64 ? 42 GLU A OE2 1 ATOM 327 N N . ILE A 1 43 ? 23.673 24.176 37.261 1.00 10.55 ? 43 ILE A N 1 ATOM 328 C CA . ILE A 1 43 ? 22.362 23.864 37.794 1.00 10.69 ? 43 ILE A CA 1 ATOM 329 C C . ILE A 1 43 ? 22.360 24.120 39.300 1.00 11.07 ? 43 ILE A C 1 ATOM 330 O O . ILE A 1 43 ? 23.307 23.764 39.992 1.00 10.83 ? 43 ILE A O 1 ATOM 331 C CB . ILE A 1 43 ? 21.996 22.374 37.552 1.00 10.47 ? 43 ILE A CB 1 ATOM 332 C CG1 . ILE A 1 43 ? 21.974 22.072 36.056 1.00 10.46 ? 43 ILE A CG1 1 ATOM 333 C CG2 . ILE A 1 43 ? 20.636 22.031 38.186 1.00 10.34 ? 43 ILE A CG2 1 ATOM 334 C CD1 . ILE A 1 43 ? 21.607 20.639 35.726 1.00 9.00 ? 43 ILE A CD1 1 ATOM 335 N N . LYS A 1 44 ? 21.315 24.784 39.778 1.00 12.26 ? 44 LYS A N 1 ATOM 336 C CA . LYS A 1 44 ? 21.127 25.051 41.201 1.00 13.96 ? 44 LYS A CA 1 ATOM 337 C C . LYS A 1 44 ? 19.729 24.528 41.516 1.00 14.16 ? 44 LYS A C 1 ATOM 338 O O . LYS A 1 44 ? 18.749 24.920 40.873 1.00 14.12 ? 44 LYS A O 1 ATOM 339 C CB . LYS A 1 44 ? 21.220 26.545 41.503 1.00 16.58 ? 44 LYS A CB 1 ATOM 340 C CG . LYS A 1 44 ? 22.580 27.150 41.170 1.00 22.90 ? 44 LYS A CG 1 ATOM 341 C CD . LYS A 1 44 ? 22.571 28.654 41.385 1.00 29.01 ? 44 LYS A CD 1 ATOM 342 C CE . LYS A 1 44 ? 23.890 29.293 40.982 1.00 31.56 ? 44 LYS A CE 1 ATOM 343 N NZ . LYS A 1 44 ? 23.818 30.781 41.111 1.00 34.70 ? 44 LYS A NZ 1 ATOM 344 N N . GLN A 1 45 ? 19.649 23.594 42.460 1.00 15.66 ? 45 GLN A N 1 ATOM 345 C CA . GLN A 1 45 ? 18.377 22.993 42.852 1.00 16.03 ? 45 GLN A CA 1 ATOM 346 C C . GLN A 1 45 ? 18.098 23.182 44.342 1.00 17.60 ? 45 GLN A C 1 ATOM 347 O O . GLN A 1 45 ? 18.989 23.024 45.164 1.00 17.17 ? 45 GLN A O 1 ATOM 348 C CB . GLN A 1 45 ? 18.397 21.498 42.544 1.00 15.51 ? 45 GLN A CB 1 ATOM 349 C CG . GLN A 1 45 ? 17.168 20.744 43.015 1.00 13.62 ? 45 GLN A CG 1 ATOM 350 C CD . GLN A 1 45 ? 17.312 19.256 42.838 1.00 15.68 ? 45 GLN A CD 1 ATOM 351 O OE1 . GLN A 1 45 ? 18.348 18.769 42.397 1.00 18.84 ? 45 GLN A OE1 1 ATOM 352 N NE2 . GLN A 1 45 ? 16.276 18.521 43.177 1.00 16.73 ? 45 GLN A NE2 1 ATOM 353 N N . GLU A 1 46 ? 16.868 23.551 44.670 1.00 18.48 ? 46 GLU A N 1 ATOM 354 C CA . GLU A 1 46 ? 16.441 23.718 46.062 1.00 21.26 ? 46 GLU A CA 1 ATOM 355 C C . GLU A 1 46 ? 15.108 23.004 46.105 1.00 19.06 ? 46 GLU A C 1 ATOM 356 O O . GLU A 1 46 ? 14.080 23.589 45.784 1.00 20.08 ? 46 GLU A O 1 ATOM 357 C CB . GLU A 1 46 ? 16.239 25.194 46.408 1.00 26.45 ? 46 GLU A CB 1 ATOM 358 C CG . GLU A 1 46 ? 17.284 25.787 47.361 1.00 37.46 ? 46 GLU A CG 1 ATOM 359 C CD . GLU A 1 46 ? 17.093 25.374 48.832 1.00 42.24 ? 46 GLU A CD 1 ATOM 360 O OE1 . GLU A 1 46 ? 16.192 25.944 49.501 1.00 44.05 ? 46 GLU A OE1 1 ATOM 361 O OE2 . GLU A 1 46 ? 17.867 24.507 49.320 1.00 44.14 ? 46 GLU A OE2 1 ATOM 362 N N . GLY A 1 47 ? 15.131 21.720 46.429 1.00 18.35 ? 47 GLY A N 1 ATOM 363 C CA . GLY A 1 47 ? 13.893 20.970 46.463 1.00 18.96 ? 47 GLY A CA 1 ATOM 364 C C . GLY A 1 47 ? 13.382 20.755 45.053 1.00 18.27 ? 47 GLY A C 1 ATOM 365 O O . GLY A 1 47 ? 14.067 20.157 44.238 1.00 18.05 ? 47 GLY A O 1 ATOM 366 N N . ASP A 1 48 ? 12.194 21.262 44.755 1.00 16.66 ? 48 ASP A N 1 ATOM 367 C CA . ASP A 1 48 ? 11.617 21.107 43.420 1.00 16.86 ? 48 ASP A CA 1 ATOM 368 C C . ASP A 1 48 ? 11.771 22.378 42.566 1.00 15.92 ? 48 ASP A C 1 ATOM 369 O O . ASP A 1 48 ? 11.139 22.511 41.504 1.00 14.50 ? 48 ASP A O 1 ATOM 370 C CB . ASP A 1 48 ? 10.136 20.694 43.513 1.00 19.00 ? 48 ASP A CB 1 ATOM 371 C CG . ASP A 1 48 ? 9.943 19.221 43.897 1.00 21.49 ? 48 ASP A CG 1 ATOM 372 O OD1 . ASP A 1 48 ? 10.901 18.406 43.840 1.00 23.51 ? 48 ASP A OD1 1 ATOM 373 O OD2 . ASP A 1 48 ? 8.802 18.868 44.243 1.00 25.04 ? 48 ASP A OD2 1 ATOM 374 N N . THR A 1 49 ? 12.610 23.299 43.042 1.00 13.75 ? 49 THR A N 1 ATOM 375 C CA . THR A 1 49 ? 12.870 24.551 42.348 1.00 13.82 ? 49 THR A CA 1 ATOM 376 C C . THR A 1 49 ? 14.231 24.460 41.678 1.00 13.22 ? 49 THR A C 1 ATOM 377 O O . THR A 1 49 ? 15.235 24.152 42.322 1.00 12.56 ? 49 THR A O 1 ATOM 378 C CB . THR A 1 49 ? 12.847 25.741 43.316 1.00 16.10 ? 49 THR A CB 1 ATOM 379 O OG1 . THR A 1 49 ? 11.556 25.815 43.941 1.00 17.94 ? 49 THR A OG1 1 ATOM 380 C CG2 . THR A 1 49 ? 13.100 27.037 42.571 1.00 16.15 ? 49 THR A CG2 1 ATOM 381 N N . PHE A 1 50 ? 14.266 24.794 40.392 1.00 12.20 ? 50 PHE A N 1 ATOM 382 C CA . PHE A 1 50 ? 15.485 24.704 39.602 1.00 10.82 ? 50 PHE A CA 1 ATOM 383 C C . PHE A 1 50 ? 15.842 25.979 38.855 1.00 10.40 ? 50 PHE A C 1 ATOM 384 O O . PHE A 1 50 ? 14.968 26.758 38.460 1.00 9.90 ? 50 PHE A O 1 ATOM 385 C CB . PHE A 1 50 ? 15.338 23.591 38.547 1.00 10.78 ? 50 PHE A CB 1 ATOM 386 C CG . PHE A 1 50 ? 15.316 22.192 39.107 1.00 13.13 ? 50 PHE A CG 1 ATOM 387 C CD1 . PHE A 1 50 ? 14.146 21.653 39.634 1.00 11.97 ? 50 PHE A CD1 1 ATOM 388 C CD2 . PHE A 1 50 ? 16.464 21.401 39.079 1.00 14.34 ? 50 PHE A CD2 1 ATOM 389 C CE1 . PHE A 1 50 ? 14.113 20.367 40.120 1.00 12.69 ? 50 PHE A CE1 1 ATOM 390 C CE2 . PHE A 1 50 ? 16.439 20.098 39.569 1.00 14.64 ? 50 PHE A CE2 1 ATOM 391 C CZ . PHE A 1 50 ? 15.258 19.582 40.092 1.00 13.15 ? 50 PHE A CZ 1 ATOM 392 N N . TYR A 1 51 ? 17.147 26.165 38.678 1.00 10.37 ? 51 TYR A N 1 ATOM 393 C CA . TYR A 1 51 ? 17.709 27.258 37.910 1.00 10.95 ? 51 TYR A CA 1 ATOM 394 C C . TYR A 1 51 ? 18.714 26.513 37.039 1.00 9.84 ? 51 TYR A C 1 ATOM 395 O O . TYR A 1 51 ? 19.540 25.761 37.547 1.00 9.78 ? 51 TYR A O 1 ATOM 396 C CB . TYR A 1 51 ? 18.436 28.284 38.790 1.00 12.57 ? 51 TYR A CB 1 ATOM 397 C CG . TYR A 1 51 ? 19.396 29.178 38.014 1.00 12.91 ? 51 TYR A CG 1 ATOM 398 C CD1 . TYR A 1 51 ? 18.939 30.302 37.327 1.00 15.83 ? 51 TYR A CD1 1 ATOM 399 C CD2 . TYR A 1 51 ? 20.762 28.896 37.974 1.00 14.05 ? 51 TYR A CD2 1 ATOM 400 C CE1 . TYR A 1 51 ? 19.822 31.126 36.621 1.00 16.52 ? 51 TYR A CE1 1 ATOM 401 C CE2 . TYR A 1 51 ? 21.655 29.705 37.275 1.00 14.62 ? 51 TYR A CE2 1 ATOM 402 C CZ . TYR A 1 51 ? 21.179 30.818 36.604 1.00 16.59 ? 51 TYR A CZ 1 ATOM 403 O OH . TYR A 1 51 ? 22.060 31.633 35.932 1.00 17.52 ? 51 TYR A OH 1 ATOM 404 N N . ILE A 1 52 ? 18.610 26.676 35.726 1.00 10.57 ? 52 ILE A N 1 ATOM 405 C CA . ILE A 1 52 ? 19.520 26.004 34.801 1.00 9.09 ? 52 ILE A CA 1 ATOM 406 C C . ILE A 1 52 ? 20.066 27.020 33.801 1.00 8.55 ? 52 ILE A C 1 ATOM 407 O O . ILE A 1 52 ? 19.296 27.652 33.086 1.00 10.49 ? 52 ILE A O 1 ATOM 408 C CB . ILE A 1 52 ? 18.807 24.859 34.026 1.00 8.96 ? 52 ILE A CB 1 ATOM 409 C CG1 . ILE A 1 52 ? 18.242 23.814 35.013 1.00 9.15 ? 52 ILE A CG1 1 ATOM 410 C CG2 . ILE A 1 52 ? 19.792 24.189 33.070 1.00 10.39 ? 52 ILE A CG2 1 ATOM 411 C CD1 . ILE A 1 52 ? 17.585 22.616 34.366 1.00 8.10 ? 52 ILE A CD1 1 ATOM 412 N N . LYS A 1 53 ? 21.388 27.197 33.791 1.00 8.61 ? 53 LYS A N 1 ATOM 413 C CA . LYS A 1 53 ? 22.049 28.115 32.868 1.00 9.66 ? 53 LYS A CA 1 ATOM 414 C C . LYS A 1 53 ? 22.939 27.319 31.924 1.00 8.71 ? 53 LYS A C 1 ATOM 415 O O . LYS A 1 53 ? 23.815 26.583 32.362 1.00 7.58 ? 53 LYS A O 1 ATOM 416 C CB . LYS A 1 53 ? 22.909 29.120 33.611 1.00 10.60 ? 53 LYS A CB 1 ATOM 417 C CG . LYS A 1 53 ? 23.580 30.135 32.688 1.00 14.21 ? 53 LYS A CG 1 ATOM 418 C CD . LYS A 1 53 ? 24.496 31.006 33.505 1.00 20.27 ? 53 LYS A CD 1 ATOM 419 C CE . LYS A 1 53 ? 24.831 32.319 32.828 1.00 26.91 ? 53 LYS A CE 1 ATOM 420 N NZ . LYS A 1 53 ? 25.878 33.009 33.659 1.00 29.12 ? 53 LYS A NZ 1 ATOM 421 N N . THR A 1 54 ? 22.686 27.445 30.625 1.00 8.49 ? 54 THR A N 1 ATOM 422 C CA . THR A 1 54 ? 23.478 26.747 29.628 1.00 7.98 ? 54 THR A CA 1 ATOM 423 C C . THR A 1 54 ? 24.118 27.820 28.764 1.00 8.23 ? 54 THR A C 1 ATOM 424 O O . THR A 1 54 ? 23.433 28.584 28.087 1.00 8.40 ? 54 THR A O 1 ATOM 425 C CB . THR A 1 54 ? 22.621 25.817 28.789 1.00 8.33 ? 54 THR A CB 1 ATOM 426 O OG1 . THR A 1 54 ? 21.896 24.946 29.660 1.00 9.95 ? 54 THR A OG1 1 ATOM 427 C CG2 . THR A 1 54 ? 23.505 24.976 27.873 1.00 4.95 ? 54 THR A CG2 1 ATOM 428 N N . SER A 1 55 ? 25.444 27.840 28.758 1.00 8.75 ? 55 SER A N 1 ATOM 429 C CA . SER A 1 55 ? 26.171 28.865 28.047 1.00 10.50 ? 55 SER A CA 1 ATOM 430 C C . SER A 1 55 ? 27.116 28.382 26.950 1.00 9.24 ? 55 SER A C 1 ATOM 431 O O . SER A 1 55 ? 27.802 27.370 27.101 1.00 8.98 ? 55 SER A O 1 ATOM 432 C CB . SER A 1 55 ? 26.934 29.694 29.082 1.00 13.09 ? 55 SER A CB 1 ATOM 433 O OG . SER A 1 55 ? 27.781 30.646 28.473 1.00 23.11 ? 55 SER A OG 1 ATOM 434 N N . THR A 1 56 ? 27.091 29.094 25.825 1.00 8.86 ? 56 THR A N 1 ATOM 435 C CA . THR A 1 56 ? 27.978 28.831 24.684 1.00 8.05 ? 56 THR A CA 1 ATOM 436 C C . THR A 1 56 ? 28.393 30.215 24.138 1.00 8.09 ? 56 THR A C 1 ATOM 437 O O . THR A 1 56 ? 27.834 31.237 24.525 1.00 7.17 ? 56 THR A O 1 ATOM 438 C CB . THR A 1 56 ? 27.296 28.024 23.534 1.00 6.70 ? 56 THR A CB 1 ATOM 439 O OG1 . THR A 1 56 ? 26.294 28.829 22.909 1.00 9.76 ? 56 THR A OG1 1 ATOM 440 C CG2 . THR A 1 56 ? 26.653 26.751 24.049 1.00 7.76 ? 56 THR A CG2 1 ATOM 441 N N . THR A 1 57 ? 29.381 30.242 23.249 1.00 9.17 ? 57 THR A N 1 ATOM 442 C CA . THR A 1 57 ? 29.871 31.485 22.644 1.00 8.49 ? 57 THR A CA 1 ATOM 443 C C . THR A 1 57 ? 28.820 32.222 21.802 1.00 7.50 ? 57 THR A C 1 ATOM 444 O O . THR A 1 57 ? 28.952 33.412 21.565 1.00 9.40 ? 57 THR A O 1 ATOM 445 C CB . THR A 1 57 ? 31.091 31.205 21.716 1.00 9.12 ? 57 THR A CB 1 ATOM 446 O OG1 . THR A 1 57 ? 30.758 30.171 20.786 1.00 9.41 ? 57 THR A OG1 1 ATOM 447 C CG2 . THR A 1 57 ? 32.297 30.775 22.516 1.00 11.48 ? 57 THR A CG2 1 ATOM 448 N N . VAL A 1 58 ? 27.786 31.510 21.356 1.00 8.04 ? 58 VAL A N 1 ATOM 449 C CA . VAL A 1 58 ? 26.733 32.090 20.500 1.00 9.09 ? 58 VAL A CA 1 ATOM 450 C C . VAL A 1 58 ? 25.328 32.224 21.102 1.00 8.67 ? 58 VAL A C 1 ATOM 451 O O . VAL A 1 58 ? 24.466 32.892 20.531 1.00 6.97 ? 58 VAL A O 1 ATOM 452 C CB . VAL A 1 58 ? 26.602 31.287 19.155 1.00 9.96 ? 58 VAL A CB 1 ATOM 453 C CG1 . VAL A 1 58 ? 27.976 31.161 18.454 1.00 11.08 ? 58 VAL A CG1 1 ATOM 454 C CG2 . VAL A 1 58 ? 26.010 29.890 19.404 1.00 9.41 ? 58 VAL A CG2 1 ATOM 455 N N . ARG A 1 59 ? 25.100 31.620 22.266 1.00 8.88 ? 59 ARG A N 1 ATOM 456 C CA . ARG A 1 59 ? 23.783 31.655 22.882 1.00 9.95 ? 59 ARG A CA 1 ATOM 457 C C . ARG A 1 59 ? 23.843 31.140 24.303 1.00 10.14 ? 59 ARG A C 1 ATOM 458 O O . ARG A 1 59 ? 24.440 30.108 24.556 1.00 10.10 ? 59 ARG A O 1 ATOM 459 C CB . ARG A 1 59 ? 22.837 30.751 22.074 1.00 13.11 ? 59 ARG A CB 1 ATOM 460 C CG . ARG A 1 59 ? 21.417 30.569 22.623 1.00 16.80 ? 59 ARG A CG 1 ATOM 461 C CD . ARG A 1 59 ? 20.521 29.961 21.535 1.00 18.74 ? 59 ARG A CD 1 ATOM 462 N NE . ARG A 1 59 ? 19.250 29.440 22.032 1.00 20.63 ? 59 ARG A NE 1 ATOM 463 C CZ . ARG A 1 59 ? 18.147 30.165 22.193 1.00 22.94 ? 59 ARG A CZ 1 ATOM 464 N NH1 . ARG A 1 59 ? 18.138 31.462 21.894 1.00 22.55 ? 59 ARG A NH1 1 ATOM 465 N NH2 . ARG A 1 59 ? 17.051 29.594 22.686 1.00 23.68 ? 59 ARG A NH2 1 ATOM 466 N N . THR A 1 60 ? 23.183 31.849 25.211 1.00 11.23 ? 60 THR A N 1 ATOM 467 C CA . THR A 1 60 ? 23.120 31.458 26.611 1.00 11.84 ? 60 THR A CA 1 ATOM 468 C C . THR A 1 60 ? 21.650 31.500 27.005 1.00 11.73 ? 60 THR A C 1 ATOM 469 O O . THR A 1 60 ? 20.934 32.423 26.620 1.00 13.69 ? 60 THR A O 1 ATOM 470 C CB . THR A 1 60 ? 23.916 32.451 27.519 1.00 10.13 ? 60 THR A CB 1 ATOM 471 O OG1 . THR A 1 60 ? 25.320 32.302 27.276 1.00 10.55 ? 60 THR A OG1 1 ATOM 472 C CG2 . THR A 1 60 ? 23.632 32.181 29.003 1.00 11.01 ? 60 THR A CG2 1 ATOM 473 N N . THR A 1 61 ? 21.183 30.470 27.706 1.00 11.78 ? 61 THR A N 1 ATOM 474 C CA . THR A 1 61 ? 19.797 30.413 28.175 1.00 11.54 ? 61 THR A CA 1 ATOM 475 C C . THR A 1 61 ? 19.831 30.214 29.686 1.00 10.88 ? 61 THR A C 1 ATOM 476 O O . THR A 1 61 ? 20.734 29.570 30.205 1.00 9.63 ? 61 THR A O 1 ATOM 477 C CB . THR A 1 61 ? 18.965 29.229 27.539 1.00 12.65 ? 61 THR A CB 1 ATOM 478 O OG1 . THR A 1 61 ? 19.563 27.976 27.874 1.00 14.13 ? 61 THR A OG1 1 ATOM 479 C CG2 . THR A 1 61 ? 18.889 29.336 26.012 1.00 14.15 ? 61 THR A CG2 1 ATOM 480 N N . GLU A 1 62 ? 18.878 30.828 30.382 1.00 12.14 ? 62 GLU A N 1 ATOM 481 C CA . GLU A 1 62 ? 18.749 30.698 31.833 1.00 12.88 ? 62 GLU A CA 1 ATOM 482 C C . GLU A 1 62 ? 17.283 30.444 32.100 1.00 12.21 ? 62 GLU A C 1 ATOM 483 O O . GLU A 1 62 ? 16.450 31.270 31.745 1.00 13.95 ? 62 GLU A O 1 ATOM 484 C CB . GLU A 1 62 ? 19.151 31.990 32.538 1.00 16.15 ? 62 GLU A CB 1 ATOM 485 C CG . GLU A 1 62 ? 20.585 32.344 32.326 1.00 23.65 ? 62 GLU A CG 1 ATOM 486 C CD . GLU A 1 62 ? 20.961 33.649 32.979 1.00 29.90 ? 62 GLU A CD 1 ATOM 487 O OE1 . GLU A 1 62 ? 20.969 33.703 34.229 1.00 31.84 ? 62 GLU A OE1 1 ATOM 488 O OE2 . GLU A 1 62 ? 21.258 34.616 32.236 1.00 33.89 ? 62 GLU A OE2 1 ATOM 489 N N . ILE A 1 63 ? 16.943 29.292 32.657 1.00 10.43 ? 63 ILE A N 1 ATOM 490 C CA . ILE A 1 63 ? 15.548 29.021 32.946 1.00 11.02 ? 63 ILE A CA 1 ATOM 491 C C . ILE A 1 63 ? 15.352 28.816 34.446 1.00 11.60 ? 63 ILE A C 1 ATOM 492 O O . ILE A 1 63 ? 16.286 28.434 35.144 1.00 9.20 ? 63 ILE A O 1 ATOM 493 C CB . ILE A 1 63 ? 14.976 27.816 32.125 1.00 11.28 ? 63 ILE A CB 1 ATOM 494 C CG1 . ILE A 1 63 ? 15.717 26.519 32.431 1.00 10.60 ? 63 ILE A CG1 1 ATOM 495 C CG2 . ILE A 1 63 ? 15.020 28.129 30.638 1.00 11.62 ? 63 ILE A CG2 1 ATOM 496 C CD1 . ILE A 1 63 ? 15.126 25.293 31.720 1.00 13.40 ? 63 ILE A CD1 1 ATOM 497 N N . ASN A 1 64 ? 14.184 29.219 34.933 1.00 12.13 ? 64 ASN A N 1 ATOM 498 C CA . ASN A 1 64 ? 13.824 29.083 36.343 1.00 14.79 ? 64 ASN A CA 1 ATOM 499 C C . ASN A 1 64 ? 12.451 28.441 36.375 1.00 13.29 ? 64 ASN A C 1 ATOM 500 O O . ASN A 1 64 ? 11.490 28.976 35.802 1.00 13.29 ? 64 ASN A O 1 ATOM 501 C CB . ASN A 1 64 ? 13.732 30.450 37.054 1.00 16.87 ? 64 ASN A CB 1 ATOM 502 C CG . ASN A 1 64 ? 15.079 31.089 37.279 1.00 20.91 ? 64 ASN A CG 1 ATOM 503 O OD1 . ASN A 1 64 ? 15.775 30.764 38.238 1.00 22.91 ? 64 ASN A OD1 1 ATOM 504 N ND2 . ASN A 1 64 ? 15.459 32.007 36.393 1.00 22.20 ? 64 ASN A ND2 1 ATOM 505 N N . PHE A 1 65 ? 12.347 27.301 37.044 1.00 12.90 ? 65 PHE A N 1 ATOM 506 C CA . PHE A 1 65 ? 11.058 26.641 37.132 1.00 12.63 ? 65 PHE A CA 1 ATOM 507 C C . PHE A 1 65 ? 10.858 25.841 38.410 1.00 13.07 ? 65 PHE A C 1 ATOM 508 O O . PHE A 1 65 ? 11.811 25.531 39.121 1.00 12.50 ? 65 PHE A O 1 ATOM 509 C CB . PHE A 1 65 ? 10.829 25.731 35.922 1.00 11.31 ? 65 PHE A CB 1 ATOM 510 C CG . PHE A 1 65 ? 11.794 24.586 35.825 1.00 12.32 ? 65 PHE A CG 1 ATOM 511 C CD1 . PHE A 1 65 ? 11.549 23.386 36.494 1.00 10.31 ? 65 PHE A CD1 1 ATOM 512 C CD2 . PHE A 1 65 ? 12.947 24.706 35.070 1.00 11.23 ? 65 PHE A CD2 1 ATOM 513 C CE1 . PHE A 1 65 ? 12.441 22.329 36.413 1.00 11.00 ? 65 PHE A CE1 1 ATOM 514 C CE2 . PHE A 1 65 ? 13.847 23.645 34.984 1.00 11.69 ? 65 PHE A CE2 1 ATOM 515 C CZ . PHE A 1 65 ? 13.593 22.461 35.655 1.00 12.20 ? 65 PHE A CZ 1 ATOM 516 N N . LYS A 1 66 ? 9.599 25.560 38.713 1.00 13.15 ? 66 LYS A N 1 ATOM 517 C CA . LYS A 1 66 ? 9.251 24.735 39.849 1.00 13.41 ? 66 LYS A CA 1 ATOM 518 C C . LYS A 1 66 ? 8.555 23.552 39.178 1.00 12.17 ? 66 LYS A C 1 ATOM 519 O O . LYS A 1 66 ? 7.763 23.747 38.251 1.00 12.93 ? 66 LYS A O 1 ATOM 520 C CB . LYS A 1 66 ? 8.313 25.498 40.800 1.00 16.68 ? 66 LYS A CB 1 ATOM 521 C CG . LYS A 1 66 ? 7.722 24.639 41.907 1.00 24.60 ? 66 LYS A CG 1 ATOM 522 C CD . LYS A 1 66 ? 7.391 25.453 43.165 1.00 28.53 ? 66 LYS A CD 1 ATOM 523 C CE . LYS A 1 66 ? 6.664 24.585 44.213 1.00 32.17 ? 66 LYS A CE 1 ATOM 524 N NZ . LYS A 1 66 ? 7.393 23.332 44.604 1.00 32.54 ? 66 LYS A NZ 1 ATOM 525 N N . VAL A 1 67 ? 8.918 22.329 39.562 1.00 11.82 ? 67 VAL A N 1 ATOM 526 C CA . VAL A 1 67 ? 8.295 21.141 38.975 1.00 10.93 ? 67 VAL A CA 1 ATOM 527 C C . VAL A 1 67 ? 6.783 21.174 39.226 1.00 11.97 ? 67 VAL A C 1 ATOM 528 O O . VAL A 1 67 ? 6.343 21.480 40.342 1.00 13.54 ? 67 VAL A O 1 ATOM 529 C CB . VAL A 1 67 ? 8.908 19.827 39.541 1.00 10.09 ? 67 VAL A CB 1 ATOM 530 C CG1 . VAL A 1 67 ? 8.271 18.617 38.883 1.00 10.96 ? 67 VAL A CG1 1 ATOM 531 C CG2 . VAL A 1 67 ? 10.410 19.808 39.320 1.00 10.21 ? 67 VAL A CG2 1 ATOM 532 N N . GLY A 1 68 ? 6.006 20.965 38.160 1.00 9.80 ? 68 GLY A N 1 ATOM 533 C CA . GLY A 1 68 ? 4.557 20.962 38.265 1.00 9.33 ? 68 GLY A CA 1 ATOM 534 C C . GLY A 1 68 ? 3.887 22.298 38.031 1.00 10.60 ? 68 GLY A C 1 ATOM 535 O O . GLY A 1 68 ? 2.653 22.389 38.039 1.00 11.93 ? 68 GLY A O 1 ATOM 536 N N . GLU A 1 69 ? 4.688 23.337 37.809 1.00 11.12 ? 69 GLU A N 1 ATOM 537 C CA . GLU A 1 69 ? 4.165 24.682 37.553 1.00 12.64 ? 69 GLU A CA 1 ATOM 538 C C . GLU A 1 69 ? 4.604 25.185 36.184 1.00 13.09 ? 69 GLU A C 1 ATOM 539 O O . GLU A 1 69 ? 5.774 25.107 35.820 1.00 12.17 ? 69 GLU A O 1 ATOM 540 C CB . GLU A 1 69 ? 4.578 25.642 38.668 1.00 12.20 ? 69 GLU A CB 1 ATOM 541 C CG . GLU A 1 69 ? 3.857 25.282 39.964 1.00 17.44 ? 69 GLU A CG 1 ATOM 542 C CD . GLU A 1 69 ? 4.116 26.211 41.138 1.00 21.02 ? 69 GLU A CD 1 ATOM 543 O OE1 . GLU A 1 69 ? 4.496 27.384 40.945 1.00 21.43 ? 69 GLU A OE1 1 ATOM 544 O OE2 . GLU A 1 69 ? 3.902 25.753 42.282 1.00 23.44 ? 69 GLU A OE2 1 ATOM 545 N N . GLU A 1 70 ? 3.633 25.622 35.397 1.00 14.53 ? 70 GLU A N 1 ATOM 546 C CA . GLU A 1 70 ? 3.912 26.102 34.059 1.00 15.80 ? 70 GLU A CA 1 ATOM 547 C C . GLU A 1 70 ? 4.816 27.329 34.007 1.00 13.72 ? 70 GLU A C 1 ATOM 548 O O . GLU A 1 70 ? 4.761 28.208 34.863 1.00 13.66 ? 70 GLU A O 1 ATOM 549 C CB . GLU A 1 70 ? 2.606 26.359 33.320 1.00 19.99 ? 70 GLU A CB 1 ATOM 550 C CG . GLU A 1 70 ? 2.814 26.634 31.851 1.00 28.23 ? 70 GLU A CG 1 ATOM 551 C CD . GLU A 1 70 ? 1.518 26.678 31.097 1.00 32.73 ? 70 GLU A CD 1 ATOM 552 O OE1 . GLU A 1 70 ? 0.975 25.589 30.789 1.00 35.76 ? 70 GLU A OE1 1 ATOM 553 O OE2 . GLU A 1 70 ? 1.045 27.802 30.823 1.00 35.75 ? 70 GLU A OE2 1 ATOM 554 N N . PHE A 1 71 ? 5.713 27.340 33.028 1.00 12.80 ? 71 PHE A N 1 ATOM 555 C CA . PHE A 1 71 ? 6.638 28.448 32.837 1.00 12.36 ? 71 PHE A CA 1 ATOM 556 C C . PHE A 1 71 ? 6.856 28.678 31.350 1.00 12.97 ? 71 PHE A C 1 ATOM 557 O O . PHE A 1 71 ? 6.382 27.917 30.516 1.00 12.54 ? 71 PHE A O 1 ATOM 558 C CB . PHE A 1 71 ? 7.975 28.243 33.589 1.00 10.02 ? 71 PHE A CB 1 ATOM 559 C CG . PHE A 1 71 ? 8.851 27.148 33.033 1.00 10.48 ? 71 PHE A CG 1 ATOM 560 C CD1 . PHE A 1 71 ? 8.549 25.815 33.256 1.00 9.95 ? 71 PHE A CD1 1 ATOM 561 C CD2 . PHE A 1 71 ? 10.006 27.459 32.331 1.00 9.29 ? 71 PHE A CD2 1 ATOM 562 C CE1 . PHE A 1 71 ? 9.380 24.811 32.793 1.00 9.74 ? 71 PHE A CE1 1 ATOM 563 C CE2 . PHE A 1 71 ? 10.832 26.464 31.868 1.00 9.51 ? 71 PHE A CE2 1 ATOM 564 C CZ . PHE A 1 71 ? 10.518 25.136 32.102 1.00 8.47 ? 71 PHE A CZ 1 ATOM 565 N N . GLU A 1 72 ? 7.581 29.733 31.028 1.00 15.04 ? 72 GLU A N 1 ATOM 566 C CA . GLU A 1 72 ? 7.826 30.063 29.644 1.00 17.19 ? 72 GLU A CA 1 ATOM 567 C C . GLU A 1 72 ? 9.323 30.036 29.357 1.00 15.53 ? 72 GLU A C 1 ATOM 568 O O . GLU A 1 72 ? 10.130 30.511 30.158 1.00 16.16 ? 72 GLU A O 1 ATOM 569 C CB . GLU A 1 72 ? 7.248 31.448 29.379 1.00 22.03 ? 72 GLU A CB 1 ATOM 570 C CG . GLU A 1 72 ? 6.700 31.658 28.002 1.00 30.80 ? 72 GLU A CG 1 ATOM 571 C CD . GLU A 1 72 ? 6.157 33.060 27.827 1.00 34.75 ? 72 GLU A CD 1 ATOM 572 O OE1 . GLU A 1 72 ? 5.014 33.309 28.276 1.00 35.88 ? 72 GLU A OE1 1 ATOM 573 O OE2 . GLU A 1 72 ? 6.885 33.912 27.255 1.00 38.91 ? 72 GLU A OE2 1 ATOM 574 N N . GLU A 1 73 ? 9.691 29.378 28.263 1.00 13.46 ? 73 GLU A N 1 ATOM 575 C CA . GLU A 1 73 ? 11.088 29.302 27.836 1.00 13.89 ? 73 GLU A CA 1 ATOM 576 C C . GLU A 1 73 ? 11.083 29.318 26.301 1.00 13.70 ? 73 GLU A C 1 ATOM 577 O O . GLU A 1 73 ? 10.159 29.859 25.690 1.00 13.63 ? 73 GLU A O 1 ATOM 578 C CB . GLU A 1 73 ? 11.780 28.032 28.379 1.00 12.63 ? 73 GLU A CB 1 ATOM 579 C CG . GLU A 1 73 ? 11.145 26.706 27.986 1.00 10.55 ? 73 GLU A CG 1 ATOM 580 C CD . GLU A 1 73 ? 11.997 25.499 28.366 1.00 8.94 ? 73 GLU A CD 1 ATOM 581 O OE1 . GLU A 1 73 ? 13.191 25.650 28.642 1.00 12.29 ? 73 GLU A OE1 1 ATOM 582 O OE2 . GLU A 1 73 ? 11.485 24.374 28.363 1.00 10.37 ? 73 GLU A OE2 1 ATOM 583 N N . GLN A 1 74 ? 12.115 28.751 25.685 1.00 13.09 ? 74 GLN A N 1 ATOM 584 C CA . GLN A 1 74 ? 12.187 28.691 24.239 1.00 13.16 ? 74 GLN A CA 1 ATOM 585 C C . GLN A 1 74 ? 12.618 27.315 23.806 1.00 12.86 ? 74 GLN A C 1 ATOM 586 O O . GLN A 1 74 ? 13.290 26.596 24.552 1.00 13.17 ? 74 GLN A O 1 ATOM 587 C CB . GLN A 1 74 ? 13.218 29.685 23.706 1.00 15.91 ? 74 GLN A CB 1 ATOM 588 C CG . GLN A 1 74 ? 12.803 31.133 23.779 1.00 19.68 ? 74 GLN A CG 1 ATOM 589 C CD . GLN A 1 74 ? 13.827 32.066 23.159 1.00 21.00 ? 74 GLN A CD 1 ATOM 590 O OE1 . GLN A 1 74 ? 15.010 31.730 23.024 1.00 22.37 ? 74 GLN A OE1 1 ATOM 591 N NE2 . GLN A 1 74 ? 13.373 33.247 22.774 1.00 24.07 ? 74 GLN A NE2 1 ATOM 592 N N . THR A 1 75 ? 12.229 26.935 22.600 1.00 10.98 ? 75 THR A N 1 ATOM 593 C CA . THR A 1 75 ? 12.664 25.656 22.056 1.00 11.83 ? 75 THR A CA 1 ATOM 594 C C . THR A 1 75 ? 14.162 25.828 21.729 1.00 11.24 ? 75 THR A C 1 ATOM 595 O O . THR A 1 75 ? 14.681 26.951 21.764 1.00 9.95 ? 75 THR A O 1 ATOM 596 C CB . THR A 1 75 ? 11.895 25.325 20.757 1.00 11.93 ? 75 THR A CB 1 ATOM 597 O OG1 . THR A 1 75 ? 12.123 26.366 19.795 1.00 13.31 ? 75 THR A OG1 1 ATOM 598 C CG2 . THR A 1 75 ? 10.396 25.202 21.042 1.00 13.29 ? 75 THR A CG2 1 ATOM 599 N N . VAL A 1 76 ? 14.841 24.731 21.377 1.00 13.77 ? 76 VAL A N 1 ATOM 600 C CA . VAL A 1 76 ? 16.278 24.762 21.049 1.00 14.39 ? 76 VAL A CA 1 ATOM 601 C C . VAL A 1 76 ? 16.612 25.734 19.914 1.00 12.97 ? 76 VAL A C 1 ATOM 602 O O . VAL A 1 76 ? 17.639 26.407 19.956 1.00 13.75 ? 76 VAL A O 1 ATOM 603 C CB . VAL A 1 76 ? 16.827 23.351 20.680 1.00 15.44 ? 76 VAL A CB 1 ATOM 604 C CG1 . VAL A 1 76 ? 18.332 23.314 20.844 1.00 17.74 ? 76 VAL A CG1 1 ATOM 605 C CG2 . VAL A 1 76 ? 16.218 22.293 21.548 1.00 19.99 ? 76 VAL A CG2 1 ATOM 606 N N . ASP A 1 77 ? 15.730 25.824 18.921 1.00 13.67 ? 77 ASP A N 1 ATOM 607 C CA . ASP A 1 77 ? 15.933 26.727 17.789 1.00 14.47 ? 77 ASP A CA 1 ATOM 608 C C . ASP A 1 77 ? 15.486 28.172 18.061 1.00 15.23 ? 77 ASP A C 1 ATOM 609 O O . ASP A 1 77 ? 15.461 29.002 17.153 1.00 14.90 ? 77 ASP A O 1 ATOM 610 C CB . ASP A 1 77 ? 15.301 26.158 16.503 1.00 15.63 ? 77 ASP A CB 1 ATOM 611 C CG . ASP A 1 77 ? 13.790 26.007 16.585 1.00 15.92 ? 77 ASP A CG 1 ATOM 612 O OD1 . ASP A 1 77 ? 13.260 25.470 17.586 1.00 14.64 ? 77 ASP A OD1 1 ATOM 613 O OD2 . ASP A 1 77 ? 13.123 26.409 15.613 1.00 17.79 ? 77 ASP A OD2 1 ATOM 614 N N . GLY A 1 78 ? 15.095 28.445 19.312 1.00 15.17 ? 78 GLY A N 1 ATOM 615 C CA . GLY A 1 78 ? 14.709 29.790 19.726 1.00 15.90 ? 78 GLY A CA 1 ATOM 616 C C . GLY A 1 78 ? 13.268 30.281 19.701 1.00 16.89 ? 78 GLY A C 1 ATOM 617 O O . GLY A 1 78 ? 13.038 31.489 19.790 1.00 19.37 ? 78 GLY A O 1 ATOM 618 N N . ARG A 1 79 ? 12.292 29.389 19.620 1.00 16.76 ? 79 ARG A N 1 ATOM 619 C CA . ARG A 1 79 ? 10.896 29.822 19.587 1.00 18.08 ? 79 ARG A CA 1 ATOM 620 C C . ARG A 1 79 ? 10.229 29.768 20.961 1.00 16.55 ? 79 ARG A C 1 ATOM 621 O O . ARG A 1 79 ? 10.379 28.787 21.680 1.00 16.57 ? 79 ARG A O 1 ATOM 622 C CB . ARG A 1 79 ? 10.112 28.961 18.604 1.00 20.74 ? 79 ARG A CB 1 ATOM 623 C CG . ARG A 1 79 ? 10.667 28.997 17.194 1.00 25.89 ? 79 ARG A CG 1 ATOM 624 C CD . ARG A 1 79 ? 9.986 27.976 16.310 1.00 29.77 ? 79 ARG A CD 1 ATOM 625 N NE . ARG A 1 79 ? 10.144 26.626 16.842 1.00 34.52 ? 79 ARG A NE 1 ATOM 626 C CZ . ARG A 1 79 ? 10.128 25.516 16.109 1.00 35.90 ? 79 ARG A CZ 1 ATOM 627 N NH1 . ARG A 1 79 ? 9.971 25.580 14.789 1.00 37.70 ? 79 ARG A NH1 1 ATOM 628 N NH2 . ARG A 1 79 ? 10.266 24.337 16.702 1.00 35.58 ? 79 ARG A NH2 1 ATOM 629 N N . PRO A 1 80 ? 9.501 30.830 21.352 1.00 15.98 ? 80 PRO A N 1 ATOM 630 C CA . PRO A 1 80 ? 8.819 30.867 22.651 1.00 15.47 ? 80 PRO A CA 1 ATOM 631 C C . PRO A 1 80 ? 7.825 29.725 22.833 1.00 14.23 ? 80 PRO A C 1 ATOM 632 O O . PRO A 1 80 ? 7.058 29.393 21.926 1.00 14.56 ? 80 PRO A O 1 ATOM 633 C CB . PRO A 1 80 ? 8.100 32.220 22.628 1.00 15.48 ? 80 PRO A CB 1 ATOM 634 C CG . PRO A 1 80 ? 9.010 33.057 21.846 1.00 18.18 ? 80 PRO A CG 1 ATOM 635 C CD . PRO A 1 80 ? 9.418 32.145 20.696 1.00 17.08 ? 80 PRO A CD 1 ATOM 636 N N . CYS A 1 81 ? 7.817 29.148 24.028 1.00 13.52 ? 81 CYS A N 1 ATOM 637 C CA . CYS A 1 81 ? 6.914 28.055 24.331 1.00 12.41 ? 81 CYS A CA 1 ATOM 638 C C . CYS A 1 81 ? 6.548 28.054 25.811 1.00 12.52 ? 81 CYS A C 1 ATOM 639 O O . CYS A 1 81 ? 7.202 28.718 26.624 1.00 11.74 ? 81 CYS A O 1 ATOM 640 C CB . CYS A 1 81 ? 7.563 26.705 23.950 1.00 11.59 ? 81 CYS A CB 1 ATOM 641 S SG . CYS A 1 81 ? 9.063 26.255 24.894 1.00 12.86 ? 81 CYS A SG 1 ATOM 642 N N . LYS A 1 82 ? 5.448 27.379 26.121 1.00 13.86 ? 82 LYS A N 1 ATOM 643 C CA . LYS A 1 82 ? 4.988 27.197 27.492 1.00 14.38 ? 82 LYS A CA 1 ATOM 644 C C . LYS A 1 82 ? 5.436 25.779 27.839 1.00 13.51 ? 82 LYS A C 1 ATOM 645 O O . LYS A 1 82 ? 5.227 24.842 27.063 1.00 12.69 ? 82 LYS A O 1 ATOM 646 C CB . LYS A 1 82 ? 3.473 27.299 27.589 1.00 18.36 ? 82 LYS A CB 1 ATOM 647 C CG . LYS A 1 82 ? 2.940 28.716 27.584 1.00 26.02 ? 82 LYS A CG 1 ATOM 648 C CD . LYS A 1 82 ? 3.353 29.506 28.826 1.00 31.13 ? 82 LYS A CD 1 ATOM 649 C CE . LYS A 1 82 ? 2.686 30.894 28.832 1.00 35.39 ? 82 LYS A CE 1 ATOM 650 N NZ . LYS A 1 82 ? 2.868 31.652 30.120 1.00 37.63 ? 82 LYS A NZ 1 ATOM 651 N N . SER A 1 83 ? 6.110 25.638 28.974 1.00 11.15 ? 83 SER A N 1 ATOM 652 C CA . SER A 1 83 ? 6.624 24.352 29.397 1.00 10.10 ? 83 SER A CA 1 ATOM 653 C C . SER A 1 83 ? 6.083 23.931 30.752 1.00 11.16 ? 83 SER A C 1 ATOM 654 O O . SER A 1 83 ? 5.721 24.769 31.575 1.00 10.21 ? 83 SER A O 1 ATOM 655 C CB . SER A 1 83 ? 8.149 24.418 29.446 1.00 10.30 ? 83 SER A CB 1 ATOM 656 O OG . SER A 1 83 ? 8.686 24.518 28.132 1.00 11.50 ? 83 SER A OG 1 ATOM 657 N N . LEU A 1 84 ? 6.028 22.620 30.954 1.00 11.17 ? 84 LEU A N 1 ATOM 658 C CA . LEU A 1 84 ? 5.557 22.016 32.192 1.00 11.84 ? 84 LEU A CA 1 ATOM 659 C C . LEU A 1 84 ? 6.427 20.793 32.470 1.00 10.42 ? 84 LEU A C 1 ATOM 660 O O . LEU A 1 84 ? 6.444 19.846 31.684 1.00 11.20 ? 84 LEU A O 1 ATOM 661 C CB . LEU A 1 84 ? 4.091 21.576 32.067 1.00 13.44 ? 84 LEU A CB 1 ATOM 662 C CG . LEU A 1 84 ? 3.552 20.784 33.270 1.00 15.74 ? 84 LEU A CG 1 ATOM 663 C CD1 . LEU A 1 84 ? 3.515 21.683 34.484 1.00 16.96 ? 84 LEU A CD1 1 ATOM 664 C CD2 . LEU A 1 84 ? 2.178 20.231 32.982 1.00 18.76 ? 84 LEU A CD2 1 ATOM 665 N N . VAL A 1 85 ? 7.146 20.828 33.589 1.00 9.60 ? 85 VAL A N 1 ATOM 666 C CA . VAL A 1 85 ? 8.028 19.738 34.006 1.00 9.50 ? 85 VAL A CA 1 ATOM 667 C C . VAL A 1 85 ? 7.344 18.878 35.082 1.00 9.74 ? 85 VAL A C 1 ATOM 668 O O . VAL A 1 85 ? 6.680 19.404 35.985 1.00 9.28 ? 85 VAL A O 1 ATOM 669 C CB . VAL A 1 85 ? 9.384 20.291 34.598 1.00 8.89 ? 85 VAL A CB 1 ATOM 670 C CG1 . VAL A 1 85 ? 10.327 19.140 34.970 1.00 8.20 ? 85 VAL A CG1 1 ATOM 671 C CG2 . VAL A 1 85 ? 10.062 21.227 33.612 1.00 8.48 ? 85 VAL A CG2 1 ATOM 672 N N . LYS A 1 86 ? 7.504 17.563 34.971 1.00 9.96 ? 86 LYS A N 1 ATOM 673 C CA . LYS A 1 86 ? 6.946 16.621 35.945 1.00 11.92 ? 86 LYS A CA 1 ATOM 674 C C . LYS A 1 86 ? 8.003 15.558 36.247 1.00 11.88 ? 86 LYS A C 1 ATOM 675 O O . LYS A 1 86 ? 8.917 15.340 35.453 1.00 11.00 ? 86 LYS A O 1 ATOM 676 C CB . LYS A 1 86 ? 5.700 15.911 35.385 1.00 12.40 ? 86 LYS A CB 1 ATOM 677 C CG . LYS A 1 86 ? 4.538 16.819 35.058 1.00 16.01 ? 86 LYS A CG 1 ATOM 678 C CD . LYS A 1 86 ? 3.333 16.017 34.559 1.00 21.36 ? 86 LYS A CD 1 ATOM 679 C CE . LYS A 1 86 ? 2.140 16.939 34.345 1.00 23.23 ? 86 LYS A CE 1 ATOM 680 N NZ . LYS A 1 86 ? 0.919 16.212 33.929 1.00 28.41 ? 86 LYS A NZ 1 ATOM 681 N N . TRP A 1 87 ? 7.868 14.889 37.386 1.00 10.75 ? 87 TRP A N 1 ATOM 682 C CA . TRP A 1 87 ? 8.775 13.811 37.738 1.00 9.53 ? 87 TRP A CA 1 ATOM 683 C C . TRP A 1 87 ? 8.238 12.559 37.052 1.00 9.89 ? 87 TRP A C 1 ATOM 684 O O . TRP A 1 87 ? 7.144 12.107 37.370 1.00 11.80 ? 87 TRP A O 1 ATOM 685 C CB . TRP A 1 87 ? 8.791 13.569 39.268 1.00 8.76 ? 87 TRP A CB 1 ATOM 686 C CG . TRP A 1 87 ? 9.494 14.641 40.062 1.00 8.86 ? 87 TRP A CG 1 ATOM 687 C CD1 . TRP A 1 87 ? 8.923 15.525 40.939 1.00 8.80 ? 87 TRP A CD1 1 ATOM 688 C CD2 . TRP A 1 87 ? 10.889 14.990 39.992 1.00 9.42 ? 87 TRP A CD2 1 ATOM 689 N NE1 . TRP A 1 87 ? 9.872 16.410 41.400 1.00 8.01 ? 87 TRP A NE1 1 ATOM 690 C CE2 . TRP A 1 87 ? 11.086 16.103 40.835 1.00 10.85 ? 87 TRP A CE2 1 ATOM 691 C CE3 . TRP A 1 87 ? 11.985 14.475 39.283 1.00 9.60 ? 87 TRP A CE3 1 ATOM 692 C CZ2 . TRP A 1 87 ? 12.340 16.716 40.994 1.00 11.45 ? 87 TRP A CZ2 1 ATOM 693 C CZ3 . TRP A 1 87 ? 13.230 15.084 39.438 1.00 10.72 ? 87 TRP A CZ3 1 ATOM 694 C CH2 . TRP A 1 87 ? 13.395 16.192 40.289 1.00 11.78 ? 87 TRP A CH2 1 ATOM 695 N N . GLU A 1 88 ? 8.954 12.040 36.064 1.00 9.93 ? 88 GLU A N 1 ATOM 696 C CA . GLU A 1 88 ? 8.526 10.807 35.416 1.00 11.30 ? 88 GLU A CA 1 ATOM 697 C C . GLU A 1 88 ? 8.826 9.726 36.448 1.00 11.75 ? 88 GLU A C 1 ATOM 698 O O . GLU A 1 88 ? 8.068 8.784 36.623 1.00 12.78 ? 88 GLU A O 1 ATOM 699 C CB . GLU A 1 88 ? 9.337 10.541 34.156 1.00 13.50 ? 88 GLU A CB 1 ATOM 700 C CG . GLU A 1 88 ? 8.917 9.261 33.454 1.00 18.67 ? 88 GLU A CG 1 ATOM 701 C CD . GLU A 1 88 ? 9.756 8.958 32.226 1.00 23.49 ? 88 GLU A CD 1 ATOM 702 O OE1 . GLU A 1 88 ? 9.581 9.650 31.205 1.00 26.53 ? 88 GLU A OE1 1 ATOM 703 O OE2 . GLU A 1 88 ? 10.587 8.025 32.276 1.00 26.54 ? 88 GLU A OE2 1 ATOM 704 N N . SER A 1 89 ? 9.972 9.870 37.103 1.00 11.49 ? 89 SER A N 1 ATOM 705 C CA . SER A 1 89 ? 10.402 8.954 38.158 1.00 11.10 ? 89 SER A CA 1 ATOM 706 C C . SER A 1 89 ? 11.206 9.776 39.163 1.00 11.14 ? 89 SER A C 1 ATOM 707 O O . SER A 1 89 ? 11.397 10.983 38.979 1.00 9.92 ? 89 SER A O 1 ATOM 708 C CB . SER A 1 89 ? 11.221 7.778 37.604 1.00 12.43 ? 89 SER A CB 1 ATOM 709 O OG . SER A 1 89 ? 12.396 8.215 36.947 1.00 14.39 ? 89 SER A OG 1 ATOM 710 N N . GLU A 1 90 ? 11.674 9.130 40.227 1.00 10.17 ? 90 GLU A N 1 ATOM 711 C CA . GLU A 1 90 ? 12.433 9.826 41.254 1.00 10.83 ? 90 GLU A CA 1 ATOM 712 C C . GLU A 1 90 ? 13.657 10.629 40.772 1.00 9.86 ? 90 GLU A C 1 ATOM 713 O O . GLU A 1 90 ? 13.932 11.715 41.289 1.00 10.30 ? 90 GLU A O 1 ATOM 714 C CB . GLU A 1 90 ? 12.858 8.846 42.348 1.00 11.92 ? 90 GLU A CB 1 ATOM 715 C CG . GLU A 1 90 ? 13.536 9.572 43.487 1.00 16.53 ? 90 GLU A CG 1 ATOM 716 C CD . GLU A 1 90 ? 13.912 8.671 44.644 1.00 19.80 ? 90 GLU A CD 1 ATOM 717 O OE1 . GLU A 1 90 ? 14.122 7.464 44.426 1.00 21.18 ? 90 GLU A OE1 1 ATOM 718 O OE2 . GLU A 1 90 ? 14.012 9.187 45.774 1.00 22.91 ? 90 GLU A OE2 1 ATOM 719 N N . ASN A 1 91 ? 14.376 10.102 39.783 1.00 8.79 ? 91 ASN A N 1 ATOM 720 C CA . ASN A 1 91 ? 15.578 10.767 39.274 1.00 10.50 ? 91 ASN A CA 1 ATOM 721 C C . ASN A 1 91 ? 15.455 11.289 37.855 1.00 9.69 ? 91 ASN A C 1 ATOM 722 O O . ASN A 1 91 ? 16.467 11.627 37.246 1.00 7.10 ? 91 ASN A O 1 ATOM 723 C CB . ASN A 1 91 ? 16.760 9.798 39.305 1.00 14.33 ? 91 ASN A CB 1 ATOM 724 C CG . ASN A 1 91 ? 17.064 9.307 40.693 1.00 17.71 ? 91 ASN A CG 1 ATOM 725 O OD1 . ASN A 1 91 ? 17.445 10.087 41.560 1.00 20.87 ? 91 ASN A OD1 1 ATOM 726 N ND2 . ASN A 1 91 ? 16.855 8.016 40.928 1.00 19.39 ? 91 ASN A ND2 1 ATOM 727 N N . LYS A 1 92 ? 14.230 11.387 37.352 1.00 8.60 ? 92 LYS A N 1 ATOM 728 C CA . LYS A 1 92 ? 14.016 11.835 35.981 1.00 8.88 ? 92 LYS A CA 1 ATOM 729 C C . LYS A 1 92 ? 12.861 12.812 35.807 1.00 8.61 ? 92 LYS A C 1 ATOM 730 O O . LYS A 1 92 ? 11.721 12.511 36.168 1.00 8.95 ? 92 LYS A O 1 ATOM 731 C CB . LYS A 1 92 ? 13.781 10.626 35.078 1.00 9.10 ? 92 LYS A CB 1 ATOM 732 C CG . LYS A 1 92 ? 13.566 10.996 33.618 1.00 11.95 ? 92 LYS A CG 1 ATOM 733 C CD . LYS A 1 92 ? 13.467 9.762 32.759 1.00 14.04 ? 92 LYS A CD 1 ATOM 734 C CE . LYS A 1 92 ? 13.333 10.124 31.299 1.00 16.33 ? 92 LYS A CE 1 ATOM 735 N NZ . LYS A 1 92 ? 13.129 8.884 30.506 1.00 17.37 ? 92 LYS A NZ 1 ATOM 736 N N . MET A 1 93 ? 13.172 13.988 35.268 1.00 7.58 ? 93 MET A N 1 ATOM 737 C CA . MET A 1 93 ? 12.159 14.985 34.995 1.00 8.21 ? 93 MET A CA 1 ATOM 738 C C . MET A 1 93 ? 11.915 15.038 33.496 1.00 9.18 ? 93 MET A C 1 ATOM 739 O O . MET A 1 93 ? 12.833 14.838 32.690 1.00 7.74 ? 93 MET A O 1 ATOM 740 C CB . MET A 1 93 ? 12.565 16.359 35.523 1.00 9.68 ? 93 MET A CB 1 ATOM 741 C CG . MET A 1 93 ? 13.826 16.925 34.937 1.00 13.16 ? 93 MET A CG 1 ATOM 742 S SD . MET A 1 93 ? 14.238 18.543 35.628 1.00 17.49 ? 93 MET A SD 1 ATOM 743 C CE . MET A 1 93 ? 15.009 18.106 37.076 1.00 18.53 ? 93 MET A CE 1 ATOM 744 N N . VAL A 1 94 ? 10.658 15.239 33.128 1.00 9.48 ? 94 VAL A N 1 ATOM 745 C CA . VAL A 1 94 ? 10.266 15.334 31.726 1.00 9.55 ? 94 VAL A CA 1 ATOM 746 C C . VAL A 1 94 ? 9.516 16.639 31.528 1.00 10.10 ? 94 VAL A C 1 ATOM 747 O O . VAL A 1 94 ? 8.683 17.024 32.364 1.00 9.47 ? 94 VAL A O 1 ATOM 748 C CB . VAL A 1 94 ? 9.371 14.164 31.315 1.00 11.05 ? 94 VAL A CB 1 ATOM 749 C CG1 . VAL A 1 94 ? 8.878 14.354 29.878 1.00 12.88 ? 94 VAL A CG1 1 ATOM 750 C CG2 . VAL A 1 94 ? 10.147 12.866 31.420 1.00 14.00 ? 94 VAL A CG2 1 ATOM 751 N N . CYS A 1 95 ? 9.802 17.312 30.413 1.00 9.49 ? 95 CYS A N 1 ATOM 752 C CA . CYS A 1 95 ? 9.169 18.582 30.094 1.00 8.82 ? 95 CYS A CA 1 ATOM 753 C C . CYS A 1 95 ? 8.431 18.559 28.758 1.00 11.70 ? 95 CYS A C 1 ATOM 754 O O . CYS A 1 95 ? 9.014 18.215 27.723 1.00 12.29 ? 95 CYS A O 1 ATOM 755 C CB . CYS A 1 95 ? 10.229 19.679 30.059 1.00 8.79 ? 95 CYS A CB 1 ATOM 756 S SG . CYS A 1 95 ? 9.620 21.322 29.690 1.00 10.97 ? 95 CYS A SG 1 ATOM 757 N N . GLU A 1 96 ? 7.149 18.902 28.791 1.00 10.87 ? 96 GLU A N 1 ATOM 758 C CA . GLU A 1 96 ? 6.342 18.962 27.587 1.00 14.78 ? 96 GLU A CA 1 ATOM 759 C C . GLU A 1 96 ? 6.267 20.439 27.182 1.00 13.83 ? 96 GLU A C 1 ATOM 760 O O . GLU A 1 96 ? 6.044 21.311 28.030 1.00 12.79 ? 96 GLU A O 1 ATOM 761 C CB . GLU A 1 96 ? 4.957 18.397 27.885 1.00 20.21 ? 96 GLU A CB 1 ATOM 762 C CG . GLU A 1 96 ? 3.981 18.432 26.726 1.00 32.46 ? 96 GLU A CG 1 ATOM 763 C CD . GLU A 1 96 ? 2.646 17.765 27.065 1.00 38.97 ? 96 GLU A CD 1 ATOM 764 O OE1 . GLU A 1 96 ? 2.053 18.108 28.128 1.00 42.61 ? 96 GLU A OE1 1 ATOM 765 O OE2 . GLU A 1 96 ? 2.201 16.892 26.271 1.00 42.17 ? 96 GLU A OE2 1 ATOM 766 N N . GLN A 1 97 ? 6.513 20.725 25.903 1.00 13.39 ? 97 GLN A N 1 ATOM 767 C CA . GLN A 1 97 ? 6.489 22.100 25.402 1.00 13.55 ? 97 GLN A CA 1 ATOM 768 C C . GLN A 1 97 ? 5.357 22.334 24.400 1.00 15.88 ? 97 GLN A C 1 ATOM 769 O O . GLN A 1 97 ? 5.013 21.455 23.591 1.00 16.25 ? 97 GLN A O 1 ATOM 770 C CB . GLN A 1 97 ? 7.823 22.465 24.747 1.00 12.20 ? 97 GLN A CB 1 ATOM 771 C CG . GLN A 1 97 ? 9.033 22.324 25.650 1.00 12.55 ? 97 GLN A CG 1 ATOM 772 C CD . GLN A 1 97 ? 10.321 22.613 24.927 1.00 14.20 ? 97 GLN A CD 1 ATOM 773 O OE1 . GLN A 1 97 ? 10.478 22.288 23.749 1.00 12.94 ? 97 GLN A OE1 1 ATOM 774 N NE2 . GLN A 1 97 ? 11.260 23.235 25.627 1.00 14.75 ? 97 GLN A NE2 1 ATOM 775 N N . LYS A 1 98 ? 4.801 23.541 24.450 1.00 17.30 ? 98 LYS A N 1 ATOM 776 C CA . LYS A 1 98 ? 3.696 23.952 23.582 1.00 19.78 ? 98 LYS A CA 1 ATOM 777 C C . LYS A 1 98 ? 3.990 25.340 23.019 1.00 18.56 ? 98 LYS A C 1 ATOM 778 O O . LYS A 1 98 ? 4.162 26.293 23.771 1.00 17.70 ? 98 LYS A O 1 ATOM 779 C CB . LYS A 1 98 ? 2.389 23.953 24.389 1.00 23.30 ? 98 LYS A CB 1 ATOM 780 C CG . LYS A 1 98 ? 1.294 24.857 23.867 1.00 30.94 ? 98 LYS A CG 1 ATOM 781 C CD . LYS A 1 98 ? 0.210 25.047 24.934 1.00 37.10 ? 98 LYS A CD 1 ATOM 782 C CE . LYS A 1 98 ? -0.849 26.072 24.520 1.00 39.73 ? 98 LYS A CE 1 ATOM 783 N NZ . LYS A 1 98 ? -0.326 27.476 24.541 1.00 42.46 ? 98 LYS A NZ 1 ATOM 784 N N . LEU A 1 99 ? 4.073 25.445 21.696 1.00 19.35 ? 99 LEU A N 1 ATOM 785 C CA . LEU A 1 99 ? 4.357 26.721 21.041 1.00 21.32 ? 99 LEU A CA 1 ATOM 786 C C . LEU A 1 99 ? 3.307 27.770 21.351 1.00 22.86 ? 99 LEU A C 1 ATOM 787 O O . LEU A 1 99 ? 2.108 27.496 21.261 1.00 23.41 ? 99 LEU A O 1 ATOM 788 C CB . LEU A 1 99 ? 4.466 26.542 19.526 1.00 22.09 ? 99 LEU A CB 1 ATOM 789 C CG . LEU A 1 99 ? 5.692 25.792 18.997 1.00 22.72 ? 99 LEU A CG 1 ATOM 790 C CD1 . LEU A 1 99 ? 5.585 25.639 17.490 1.00 23.04 ? 99 LEU A CD1 1 ATOM 791 C CD2 . LEU A 1 99 ? 6.951 26.548 19.372 1.00 23.61 ? 99 LEU A CD2 1 ATOM 792 N N . LEU A 1 100 ? 3.767 28.962 21.722 1.00 24.11 ? 100 LEU A N 1 ATOM 793 C CA . LEU A 1 100 ? 2.879 30.070 22.051 1.00 27.59 ? 100 LEU A CA 1 ATOM 794 C C . LEU A 1 100 ? 2.130 30.545 20.815 1.00 30.94 ? 100 LEU A C 1 ATOM 795 O O . LEU A 1 100 ? 0.951 30.908 20.877 1.00 31.34 ? 100 LEU A O 1 ATOM 796 C CB . LEU A 1 100 ? 3.680 31.227 22.640 1.00 25.50 ? 100 LEU A CB 1 ATOM 797 C CG . LEU A 1 100 ? 4.254 30.947 24.020 1.00 24.80 ? 100 LEU A CG 1 ATOM 798 C CD1 . LEU A 1 100 ? 4.960 32.171 24.542 1.00 26.59 ? 100 LEU A CD1 1 ATOM 799 C CD2 . LEU A 1 100 ? 3.141 30.554 24.935 1.00 24.80 ? 100 LEU A CD2 1 ATOM 800 N N . LYS A 1 101 ? 2.835 30.531 19.689 1.00 34.60 ? 101 LYS A N 1 ATOM 801 C CA . LYS A 1 101 ? 2.282 30.961 18.413 1.00 37.81 ? 101 LYS A CA 1 ATOM 802 C C . LYS A 1 101 ? 2.847 30.088 17.292 1.00 37.39 ? 101 LYS A C 1 ATOM 803 O O . LYS A 1 101 ? 4.019 29.687 17.319 1.00 37.22 ? 101 LYS A O 1 ATOM 804 C CB . LYS A 1 101 ? 2.653 32.429 18.147 1.00 40.57 ? 101 LYS A CB 1 ATOM 805 C CG . LYS A 1 101 ? 2.182 33.426 19.212 1.00 45.13 ? 101 LYS A CG 1 ATOM 806 C CD . LYS A 1 101 ? 2.955 34.741 19.125 1.00 48.57 ? 101 LYS A CD 1 ATOM 807 C CE . LYS A 1 101 ? 4.479 34.527 19.248 1.00 51.31 ? 101 LYS A CE 1 ATOM 808 N NZ . LYS A 1 101 ? 4.917 33.952 20.559 1.00 51.14 ? 101 LYS A NZ 1 ATOM 809 N N . GLY A 1 102 ? 1.997 29.786 16.318 1.00 37.21 ? 102 GLY A N 1 ATOM 810 C CA . GLY A 1 102 ? 2.423 28.993 15.184 1.00 36.82 ? 102 GLY A CA 1 ATOM 811 C C . GLY A 1 102 ? 2.333 27.494 15.344 1.00 36.36 ? 102 GLY A C 1 ATOM 812 O O . GLY A 1 102 ? 1.690 26.977 16.265 1.00 35.74 ? 102 GLY A O 1 ATOM 813 N N . GLU A 1 103 ? 2.954 26.803 14.395 1.00 35.74 ? 103 GLU A N 1 ATOM 814 C CA . GLU A 1 103 ? 2.988 25.348 14.377 1.00 35.50 ? 103 GLU A CA 1 ATOM 815 C C . GLU A 1 103 ? 4.418 24.880 14.140 1.00 31.92 ? 103 GLU A C 1 ATOM 816 O O . GLU A 1 103 ? 5.281 25.654 13.723 1.00 31.61 ? 103 GLU A O 1 ATOM 817 C CB . GLU A 1 103 ? 2.077 24.784 13.274 1.00 39.37 ? 103 GLU A CB 1 ATOM 818 C CG . GLU A 1 103 ? 0.652 24.422 13.712 1.00 45.52 ? 103 GLU A CG 1 ATOM 819 C CD . GLU A 1 103 ? -0.383 25.503 13.395 1.00 50.23 ? 103 GLU A CD 1 ATOM 820 O OE1 . GLU A 1 103 ? -0.130 26.346 12.499 1.00 53.12 ? 103 GLU A OE1 1 ATOM 821 O OE2 . GLU A 1 103 ? -1.464 25.500 14.036 1.00 52.16 ? 103 GLU A OE2 1 ATOM 822 N N . GLY A 1 104 ? 4.653 23.604 14.414 1.00 28.97 ? 104 GLY A N 1 ATOM 823 C CA . GLY A 1 104 ? 5.967 23.024 14.231 1.00 25.41 ? 104 GLY A CA 1 ATOM 824 C C . GLY A 1 104 ? 6.012 21.648 14.863 1.00 22.09 ? 104 GLY A C 1 ATOM 825 O O . GLY A 1 104 ? 4.987 21.160 15.347 1.00 21.89 ? 104 GLY A O 1 ATOM 826 N N . PRO A 1 105 ? 7.176 20.976 14.832 1.00 19.50 ? 105 PRO A N 1 ATOM 827 C CA . PRO A 1 105 ? 7.338 19.640 15.418 1.00 17.92 ? 105 PRO A CA 1 ATOM 828 C C . PRO A 1 105 ? 7.020 19.664 16.914 1.00 15.61 ? 105 PRO A C 1 ATOM 829 O O . PRO A 1 105 ? 7.170 20.696 17.567 1.00 14.42 ? 105 PRO A O 1 ATOM 830 C CB . PRO A 1 105 ? 8.828 19.348 15.202 1.00 18.86 ? 105 PRO A CB 1 ATOM 831 C CG . PRO A 1 105 ? 9.188 20.164 14.005 1.00 18.76 ? 105 PRO A CG 1 ATOM 832 C CD . PRO A 1 105 ? 8.423 21.440 14.199 1.00 18.40 ? 105 PRO A CD 1 ATOM 833 N N . LYS A 1 106 ? 6.552 18.541 17.444 1.00 16.02 ? 106 LYS A N 1 ATOM 834 C CA . LYS A 1 106 ? 6.255 18.453 18.868 1.00 16.93 ? 106 LYS A CA 1 ATOM 835 C C . LYS A 1 106 ? 7.609 18.305 19.554 1.00 15.49 ? 106 LYS A C 1 ATOM 836 O O . LYS A 1 106 ? 8.397 17.437 19.183 1.00 14.76 ? 106 LYS A O 1 ATOM 837 C CB . LYS A 1 106 ? 5.387 17.229 19.174 1.00 20.98 ? 106 LYS A CB 1 ATOM 838 C CG . LYS A 1 106 ? 5.015 17.097 20.662 1.00 27.98 ? 106 LYS A CG 1 ATOM 839 C CD . LYS A 1 106 ? 4.463 18.433 21.229 1.00 33.23 ? 106 LYS A CD 1 ATOM 840 C CE . LYS A 1 106 ? 4.250 18.417 22.764 1.00 35.21 ? 106 LYS A CE 1 ATOM 841 N NZ . LYS A 1 106 ? 5.519 18.251 23.566 1.00 33.75 ? 106 LYS A NZ 1 ATOM 842 N N . THR A 1 107 ? 7.907 19.167 20.515 1.00 13.91 ? 107 THR A N 1 ATOM 843 C CA . THR A 1 107 ? 9.203 19.086 21.190 1.00 12.14 ? 107 THR A CA 1 ATOM 844 C C . THR A 1 107 ? 9.083 18.819 22.681 1.00 11.66 ? 107 THR A C 1 ATOM 845 O O . THR A 1 107 ? 8.061 19.120 23.295 1.00 10.59 ? 107 THR A O 1 ATOM 846 C CB . THR A 1 107 ? 10.012 20.382 21.016 1.00 12.37 ? 107 THR A CB 1 ATOM 847 O OG1 . THR A 1 107 ? 9.263 21.480 21.547 1.00 12.36 ? 107 THR A OG1 1 ATOM 848 C CG2 . THR A 1 107 ? 10.327 20.643 19.544 1.00 12.62 ? 107 THR A CG2 1 ATOM 849 N N . SER A 1 108 ? 10.140 18.249 23.250 1.00 10.16 ? 108 SER A N 1 ATOM 850 C CA . SER A 1 108 ? 10.192 17.975 24.681 1.00 9.98 ? 108 SER A CA 1 ATOM 851 C C . SER A 1 108 ? 11.649 17.774 25.081 1.00 9.90 ? 108 SER A C 1 ATOM 852 O O . SER A 1 108 ? 12.549 17.774 24.227 1.00 8.48 ? 108 SER A O 1 ATOM 853 C CB . SER A 1 108 ? 9.370 16.729 25.024 1.00 9.84 ? 108 SER A CB 1 ATOM 854 O OG . SER A 1 108 ? 9.844 15.601 24.313 1.00 13.87 ? 108 SER A OG 1 ATOM 855 N N . TRP A 1 109 ? 11.890 17.708 26.386 1.00 7.96 ? 109 TRP A N 1 ATOM 856 C CA . TRP A 1 109 ? 13.233 17.446 26.894 1.00 7.85 ? 109 TRP A CA 1 ATOM 857 C C . TRP A 1 109 ? 13.109 16.693 28.209 1.00 7.56 ? 109 TRP A C 1 ATOM 858 O O . TRP A 1 109 ? 12.053 16.728 28.837 1.00 8.14 ? 109 TRP A O 1 ATOM 859 C CB . TRP A 1 109 ? 14.094 18.722 27.051 1.00 8.25 ? 109 TRP A CB 1 ATOM 860 C CG . TRP A 1 109 ? 13.627 19.829 28.007 1.00 8.07 ? 109 TRP A CG 1 ATOM 861 C CD1 . TRP A 1 109 ? 13.120 21.046 27.648 1.00 9.28 ? 109 TRP A CD1 1 ATOM 862 C CD2 . TRP A 1 109 ? 13.745 19.865 29.450 1.00 9.31 ? 109 TRP A CD2 1 ATOM 863 N NE1 . TRP A 1 109 ? 12.929 21.836 28.760 1.00 9.69 ? 109 TRP A NE1 1 ATOM 864 C CE2 . TRP A 1 109 ? 13.306 21.136 29.878 1.00 9.04 ? 109 TRP A CE2 1 ATOM 865 C CE3 . TRP A 1 109 ? 14.186 18.939 30.416 1.00 9.92 ? 109 TRP A CE3 1 ATOM 866 C CZ2 . TRP A 1 109 ? 13.286 21.515 31.228 1.00 9.72 ? 109 TRP A CZ2 1 ATOM 867 C CZ3 . TRP A 1 109 ? 14.163 19.316 31.758 1.00 10.25 ? 109 TRP A CZ3 1 ATOM 868 C CH2 . TRP A 1 109 ? 13.717 20.593 32.149 1.00 10.11 ? 109 TRP A CH2 1 ATOM 869 N N . THR A 1 110 ? 14.136 15.924 28.549 1.00 7.39 ? 110 THR A N 1 ATOM 870 C CA . THR A 1 110 ? 14.168 15.176 29.808 1.00 6.23 ? 110 THR A CA 1 ATOM 871 C C . THR A 1 110 ? 15.577 15.334 30.395 1.00 7.40 ? 110 THR A C 1 ATOM 872 O O . THR A 1 110 ? 16.558 15.563 29.652 1.00 6.43 ? 110 THR A O 1 ATOM 873 C CB . THR A 1 110 ? 13.887 13.633 29.626 1.00 7.17 ? 110 THR A CB 1 ATOM 874 O OG1 . THR A 1 110 ? 15.000 13.002 28.973 1.00 7.49 ? 110 THR A OG1 1 ATOM 875 C CG2 . THR A 1 110 ? 12.616 13.377 28.803 1.00 6.64 ? 110 THR A CG2 1 ATOM 876 N N . ARG A 1 111 ? 15.669 15.293 31.727 1.00 6.72 ? 111 ARG A N 1 ATOM 877 C CA . ARG A 1 111 ? 16.966 15.356 32.425 1.00 6.27 ? 111 ARG A CA 1 ATOM 878 C C . ARG A 1 111 ? 16.924 14.287 33.483 1.00 7.89 ? 111 ARG A C 1 ATOM 879 O O . ARG A 1 111 ? 15.928 14.156 34.193 1.00 8.35 ? 111 ARG A O 1 ATOM 880 C CB . ARG A 1 111 ? 17.240 16.722 33.068 1.00 6.20 ? 111 ARG A CB 1 ATOM 881 C CG . ARG A 1 111 ? 17.703 17.765 32.060 1.00 7.38 ? 111 ARG A CG 1 ATOM 882 C CD . ARG A 1 111 ? 18.100 19.072 32.727 1.00 8.70 ? 111 ARG A CD 1 ATOM 883 N NE . ARG A 1 111 ? 18.783 19.965 31.784 1.00 9.83 ? 111 ARG A NE 1 ATOM 884 C CZ . ARG A 1 111 ? 18.158 20.804 30.963 1.00 10.23 ? 111 ARG A CZ 1 ATOM 885 N NH1 . ARG A 1 111 ? 16.840 20.869 30.966 1.00 10.89 ? 111 ARG A NH1 1 ATOM 886 N NH2 . ARG A 1 111 ? 18.847 21.590 30.144 1.00 11.56 ? 111 ARG A NH2 1 ATOM 887 N N . GLU A 1 112 ? 17.957 13.464 33.534 1.00 7.64 ? 112 GLU A N 1 ATOM 888 C CA . GLU A 1 112 ? 17.977 12.402 34.527 1.00 10.31 ? 112 GLU A CA 1 ATOM 889 C C . GLU A 1 112 ? 19.356 12.142 35.113 1.00 9.93 ? 112 GLU A C 1 ATOM 890 O O . GLU A 1 112 ? 20.367 12.273 34.425 1.00 7.92 ? 112 GLU A O 1 ATOM 891 C CB . GLU A 1 112 ? 17.401 11.118 33.940 1.00 14.05 ? 112 GLU A CB 1 ATOM 892 C CG . GLU A 1 112 ? 18.213 10.489 32.836 1.00 20.37 ? 112 GLU A CG 1 ATOM 893 C CD . GLU A 1 112 ? 17.484 9.325 32.177 1.00 25.09 ? 112 GLU A CD 1 ATOM 894 O OE1 . GLU A 1 112 ? 17.223 8.308 32.883 1.00 22.36 ? 112 GLU A OE1 1 ATOM 895 O OE2 . GLU A 1 112 ? 17.175 9.443 30.955 1.00 25.10 ? 112 GLU A OE2 1 ATOM 896 N N . LEU A 1 113 ? 19.387 11.816 36.401 1.00 8.96 ? 113 LEU A N 1 ATOM 897 C CA . LEU A 1 113 ? 20.634 11.503 37.091 1.00 12.04 ? 113 LEU A CA 1 ATOM 898 C C . LEU A 1 113 ? 20.789 9.991 37.081 1.00 12.06 ? 113 LEU A C 1 ATOM 899 O O . LEU A 1 113 ? 19.906 9.270 37.559 1.00 12.08 ? 113 LEU A O 1 ATOM 900 C CB . LEU A 1 113 ? 20.575 11.983 38.532 1.00 14.38 ? 113 LEU A CB 1 ATOM 901 C CG . LEU A 1 113 ? 20.768 13.465 38.799 1.00 17.46 ? 113 LEU A CG 1 ATOM 902 C CD1 . LEU A 1 113 ? 20.709 13.656 40.298 1.00 19.61 ? 113 LEU A CD1 1 ATOM 903 C CD2 . LEU A 1 113 ? 22.128 13.945 38.266 1.00 18.46 ? 113 LEU A CD2 1 ATOM 904 N N . THR A 1 114 ? 21.895 9.502 36.535 1.00 11.06 ? 114 THR A N 1 ATOM 905 C CA . THR A 1 114 ? 22.110 8.062 36.452 1.00 11.74 ? 114 THR A CA 1 ATOM 906 C C . THR A 1 114 ? 22.816 7.522 37.686 1.00 11.41 ? 114 THR A C 1 ATOM 907 O O . THR A 1 114 ? 23.327 8.282 38.501 1.00 11.47 ? 114 THR A O 1 ATOM 908 C CB . THR A 1 114 ? 22.894 7.700 35.188 1.00 12.89 ? 114 THR A CB 1 ATOM 909 O OG1 . THR A 1 114 ? 24.109 8.451 35.164 1.00 15.50 ? 114 THR A OG1 1 ATOM 910 C CG2 . THR A 1 114 ? 22.075 8.037 33.951 1.00 14.75 ? 114 THR A CG2 1 ATOM 911 N N . ASN A 1 115 ? 22.834 6.202 37.808 1.00 13.23 ? 115 ASN A N 1 ATOM 912 C CA . ASN A 1 115 ? 23.441 5.538 38.951 1.00 16.19 ? 115 ASN A CA 1 ATOM 913 C C . ASN A 1 115 ? 24.930 5.761 39.139 1.00 14.24 ? 115 ASN A C 1 ATOM 914 O O . ASN A 1 115 ? 25.432 5.626 40.256 1.00 14.74 ? 115 ASN A O 1 ATOM 915 C CB . ASN A 1 115 ? 23.123 4.047 38.918 1.00 21.89 ? 115 ASN A CB 1 ATOM 916 C CG . ASN A 1 115 ? 21.703 3.754 39.357 1.00 29.77 ? 115 ASN A CG 1 ATOM 917 O OD1 . ASN A 1 115 ? 20.955 3.046 38.669 1.00 34.83 ? 115 ASN A OD1 1 ATOM 918 N ND2 . ASN A 1 115 ? 21.313 4.310 40.516 1.00 32.90 ? 115 ASN A ND2 1 ATOM 919 N N . ASP A 1 116 ? 25.626 6.095 38.055 1.00 12.05 ? 116 ASP A N 1 ATOM 920 C CA . ASP A 1 116 ? 27.061 6.364 38.094 1.00 11.99 ? 116 ASP A CA 1 ATOM 921 C C . ASP A 1 116 ? 27.424 7.821 38.397 1.00 11.45 ? 116 ASP A C 1 ATOM 922 O O . ASP A 1 116 ? 28.592 8.184 38.393 1.00 12.23 ? 116 ASP A O 1 ATOM 923 C CB . ASP A 1 116 ? 27.764 5.875 36.806 1.00 13.89 ? 116 ASP A CB 1 ATOM 924 C CG . ASP A 1 116 ? 27.177 6.474 35.512 1.00 16.58 ? 116 ASP A CG 1 ATOM 925 O OD1 . ASP A 1 116 ? 26.263 7.303 35.569 1.00 19.66 ? 116 ASP A OD1 1 ATOM 926 O OD2 . ASP A 1 116 ? 27.651 6.113 34.422 1.00 20.14 ? 116 ASP A OD2 1 ATOM 927 N N . GLY A 1 117 ? 26.420 8.647 38.675 1.00 10.58 ? 117 GLY A N 1 ATOM 928 C CA . GLY A 1 117 ? 26.669 10.042 38.997 1.00 9.83 ? 117 GLY A CA 1 ATOM 929 C C . GLY A 1 117 ? 26.652 11.019 37.831 1.00 9.97 ? 117 GLY A C 1 ATOM 930 O O . GLY A 1 117 ? 26.945 12.192 38.019 1.00 10.45 ? 117 GLY A O 1 ATOM 931 N N . GLU A 1 118 ? 26.289 10.550 36.638 1.00 9.43 ? 118 GLU A N 1 ATOM 932 C CA . GLU A 1 118 ? 26.242 11.413 35.458 1.00 7.79 ? 118 GLU A CA 1 ATOM 933 C C . GLU A 1 118 ? 24.834 11.955 35.213 1.00 7.60 ? 118 GLU A C 1 ATOM 934 O O . GLU A 1 118 ? 23.872 11.565 35.885 1.00 8.05 ? 118 GLU A O 1 ATOM 935 C CB . GLU A 1 118 ? 26.776 10.653 34.241 1.00 8.86 ? 118 GLU A CB 1 ATOM 936 C CG . GLU A 1 118 ? 28.227 10.234 34.427 1.00 9.64 ? 118 GLU A CG 1 ATOM 937 C CD . GLU A 1 118 ? 28.770 9.370 33.310 1.00 13.39 ? 118 GLU A CD 1 ATOM 938 O OE1 . GLU A 1 118 ? 28.036 9.043 32.355 1.00 11.90 ? 118 GLU A OE1 1 ATOM 939 O OE2 . GLU A 1 118 ? 29.956 8.998 33.405 1.00 16.59 ? 118 GLU A OE2 1 ATOM 940 N N . LEU A 1 119 ? 24.732 12.884 34.269 1.00 7.57 ? 119 LEU A N 1 ATOM 941 C CA . LEU A 1 119 ? 23.467 13.513 33.917 1.00 6.94 ? 119 LEU A CA 1 ATOM 942 C C . LEU A 1 119 ? 23.189 13.277 32.431 1.00 8.29 ? 119 LEU A C 1 ATOM 943 O O . LEU A 1 119 ? 24.070 13.506 31.593 1.00 8.23 ? 119 LEU A O 1 ATOM 944 C CB . LEU A 1 119 ? 23.556 15.023 34.184 1.00 7.83 ? 119 LEU A CB 1 ATOM 945 C CG . LEU A 1 119 ? 22.417 15.972 33.810 1.00 9.54 ? 119 LEU A CG 1 ATOM 946 C CD1 . LEU A 1 119 ? 21.213 15.661 34.618 1.00 11.05 ? 119 LEU A CD1 1 ATOM 947 C CD2 . LEU A 1 119 ? 22.822 17.421 34.066 1.00 12.54 ? 119 LEU A CD2 1 ATOM 948 N N . ILE A 1 120 ? 22.010 12.743 32.119 1.00 6.17 ? 120 ILE A N 1 ATOM 949 C CA . ILE A 1 120 ? 21.638 12.529 30.730 1.00 6.22 ? 120 ILE A CA 1 ATOM 950 C C . ILE A 1 120 ? 20.527 13.511 30.354 1.00 7.47 ? 120 ILE A C 1 ATOM 951 O O . ILE A 1 120 ? 19.493 13.580 31.036 1.00 6.54 ? 120 ILE A O 1 ATOM 952 C CB . ILE A 1 120 ? 21.103 11.118 30.485 1.00 7.19 ? 120 ILE A CB 1 ATOM 953 C CG1 . ILE A 1 120 ? 22.171 10.070 30.801 1.00 8.26 ? 120 ILE A CG1 1 ATOM 954 C CG2 . ILE A 1 120 ? 20.556 11.003 29.047 1.00 6.54 ? 120 ILE A CG2 1 ATOM 955 C CD1 . ILE A 1 120 ? 21.668 8.658 30.600 1.00 9.35 ? 120 ILE A CD1 1 ATOM 956 N N . LEU A 1 121 ? 20.771 14.301 29.306 1.00 6.41 ? 121 LEU A N 1 ATOM 957 C CA . LEU A 1 121 ? 19.783 15.236 28.779 1.00 6.25 ? 121 LEU A CA 1 ATOM 958 C C . LEU A 1 121 ? 19.299 14.693 27.426 1.00 7.41 ? 121 LEU A C 1 ATOM 959 O O . LEU A 1 121 ? 20.115 14.242 26.619 1.00 6.01 ? 121 LEU A O 1 ATOM 960 C CB . LEU A 1 121 ? 20.400 16.624 28.526 1.00 7.37 ? 121 LEU A CB 1 ATOM 961 C CG . LEU A 1 121 ? 19.607 17.580 27.597 1.00 7.96 ? 121 LEU A CG 1 ATOM 962 C CD1 . LEU A 1 121 ? 18.340 18.117 28.290 1.00 7.91 ? 121 LEU A CD1 1 ATOM 963 C CD2 . LEU A 1 121 ? 20.501 18.739 27.151 1.00 7.96 ? 121 LEU A CD2 1 ATOM 964 N N . THR A 1 122 ? 17.988 14.607 27.222 1.00 6.71 ? 122 THR A N 1 ATOM 965 C CA . THR A 1 122 ? 17.514 14.205 25.898 1.00 7.80 ? 122 THR A CA 1 ATOM 966 C C . THR A 1 122 ? 16.633 15.334 25.402 1.00 8.58 ? 122 THR A C 1 ATOM 967 O O . THR A 1 122 ? 15.988 16.034 26.194 1.00 7.21 ? 122 THR A O 1 ATOM 968 C CB . THR A 1 122 ? 16.754 12.843 25.832 1.00 7.51 ? 122 THR A CB 1 ATOM 969 O OG1 . THR A 1 122 ? 15.422 12.992 26.313 1.00 9.27 ? 122 THR A OG1 1 ATOM 970 C CG2 . THR A 1 122 ? 17.484 11.759 26.622 1.00 7.86 ? 122 THR A CG2 1 ATOM 971 N N . MET A 1 123 ? 16.732 15.613 24.110 1.00 7.87 ? 123 MET A N 1 ATOM 972 C CA . MET A 1 123 ? 15.904 16.643 23.494 1.00 9.22 ? 123 MET A CA 1 ATOM 973 C C . MET A 1 123 ? 15.194 15.950 22.337 1.00 8.66 ? 123 MET A C 1 ATOM 974 O O . MET A 1 123 ? 15.828 15.189 21.601 1.00 8.09 ? 123 MET A O 1 ATOM 975 C CB . MET A 1 123 ? 16.760 17.818 23.019 1.00 9.37 ? 123 MET A CB 1 ATOM 976 C CG . MET A 1 123 ? 17.359 18.612 24.171 1.00 11.81 ? 123 MET A CG 1 ATOM 977 S SD . MET A 1 123 ? 18.325 20.048 23.658 1.00 16.59 ? 123 MET A SD 1 ATOM 978 C CE . MET A 1 123 ? 19.871 19.278 23.173 1.00 14.10 ? 123 MET A CE 1 ATOM 979 N N . THR A 1 124 ? 13.895 16.195 22.186 1.00 7.20 ? 124 THR A N 1 ATOM 980 C CA . THR A 1 124 ? 13.133 15.534 21.134 1.00 9.54 ? 124 THR A CA 1 ATOM 981 C C . THR A 1 124 ? 12.407 16.513 20.222 1.00 10.12 ? 124 THR A C 1 ATOM 982 O O . THR A 1 124 ? 11.941 17.563 20.665 1.00 9.54 ? 124 THR A O 1 ATOM 983 C CB . THR A 1 124 ? 12.073 14.552 21.756 1.00 10.74 ? 124 THR A CB 1 ATOM 984 O OG1 . THR A 1 124 ? 12.740 13.544 22.535 1.00 11.99 ? 124 THR A OG1 1 ATOM 985 C CG2 . THR A 1 124 ? 11.247 13.865 20.679 1.00 11.66 ? 124 THR A CG2 1 ATOM 986 N N . ALA A 1 125 ? 12.346 16.167 18.935 1.00 11.06 ? 125 ALA A N 1 ATOM 987 C CA . ALA A 1 125 ? 11.634 16.962 17.923 1.00 11.63 ? 125 ALA A CA 1 ATOM 988 C C . ALA A 1 125 ? 10.981 15.878 17.078 1.00 13.46 ? 125 ALA A C 1 ATOM 989 O O . ALA A 1 125 ? 11.669 15.144 16.352 1.00 13.11 ? 125 ALA A O 1 ATOM 990 C CB . ALA A 1 125 ? 12.603 17.786 17.091 1.00 13.16 ? 125 ALA A CB 1 ATOM 991 N N . ASP A 1 126 ? 9.664 15.754 17.216 1.00 14.63 ? 126 ASP A N 1 ATOM 992 C CA . ASP A 1 126 ? 8.901 14.721 16.536 1.00 17.86 ? 126 ASP A CA 1 ATOM 993 C C . ASP A 1 126 ? 9.512 13.364 16.905 1.00 18.66 ? 126 ASP A C 1 ATOM 994 O O . ASP A 1 126 ? 9.519 13.006 18.080 1.00 19.38 ? 126 ASP A O 1 ATOM 995 C CB . ASP A 1 126 ? 8.835 14.982 15.023 1.00 18.40 ? 126 ASP A CB 1 ATOM 996 C CG . ASP A 1 126 ? 7.786 16.032 14.660 1.00 22.34 ? 126 ASP A CG 1 ATOM 997 O OD1 . ASP A 1 126 ? 6.800 16.198 15.422 1.00 23.23 ? 126 ASP A OD1 1 ATOM 998 O OD2 . ASP A 1 126 ? 7.940 16.702 13.621 1.00 24.32 ? 126 ASP A OD2 1 ATOM 999 N N . ASP A 1 127 ? 10.064 12.629 15.945 1.00 20.19 ? 127 ASP A N 1 ATOM 1000 C CA . ASP A 1 127 ? 10.656 11.333 16.271 1.00 21.56 ? 127 ASP A CA 1 ATOM 1001 C C . ASP A 1 127 ? 12.175 11.279 16.416 1.00 18.85 ? 127 ASP A C 1 ATOM 1002 O O . ASP A 1 127 ? 12.732 10.219 16.657 1.00 20.67 ? 127 ASP A O 1 ATOM 1003 C CB . ASP A 1 127 ? 10.178 10.263 15.303 1.00 26.47 ? 127 ASP A CB 1 ATOM 1004 C CG . ASP A 1 127 ? 9.043 9.450 15.880 1.00 33.21 ? 127 ASP A CG 1 ATOM 1005 O OD1 . ASP A 1 127 ? 7.892 9.959 15.934 1.00 36.08 ? 127 ASP A OD1 1 ATOM 1006 O OD2 . ASP A 1 127 ? 9.318 8.308 16.318 1.00 38.35 ? 127 ASP A OD2 1 ATOM 1007 N N . VAL A 1 128 ? 12.836 12.418 16.281 1.00 15.22 ? 128 VAL A N 1 ATOM 1008 C CA . VAL A 1 128 ? 14.286 12.486 16.407 1.00 12.83 ? 128 VAL A CA 1 ATOM 1009 C C . VAL A 1 128 ? 14.681 12.843 17.835 1.00 11.58 ? 128 VAL A C 1 ATOM 1010 O O . VAL A 1 128 ? 14.176 13.811 18.408 1.00 9.74 ? 128 VAL A O 1 ATOM 1011 C CB . VAL A 1 128 ? 14.864 13.503 15.423 1.00 12.79 ? 128 VAL A CB 1 ATOM 1012 C CG1 . VAL A 1 128 ? 16.338 13.757 15.706 1.00 12.93 ? 128 VAL A CG1 1 ATOM 1013 C CG2 . VAL A 1 128 ? 14.677 12.968 14.005 1.00 14.30 ? 128 VAL A CG2 1 ATOM 1014 N N . VAL A 1 129 ? 15.586 12.051 18.397 1.00 9.29 ? 129 VAL A N 1 ATOM 1015 C CA . VAL A 1 129 ? 16.054 12.257 19.761 1.00 7.95 ? 129 VAL A CA 1 ATOM 1016 C C . VAL A 1 129 ? 17.558 12.546 19.842 1.00 7.49 ? 129 VAL A C 1 ATOM 1017 O O . VAL A 1 129 ? 18.374 11.816 19.276 1.00 8.73 ? 129 VAL A O 1 ATOM 1018 C CB . VAL A 1 129 ? 15.764 11.007 20.617 1.00 9.43 ? 129 VAL A CB 1 ATOM 1019 C CG1 . VAL A 1 129 ? 16.153 11.253 22.076 1.00 9.09 ? 129 VAL A CG1 1 ATOM 1020 C CG2 . VAL A 1 129 ? 14.293 10.610 20.495 1.00 9.45 ? 129 VAL A CG2 1 ATOM 1021 N N . CYS A 1 130 ? 17.912 13.630 20.534 1.00 7.54 ? 130 CYS A N 1 ATOM 1022 C CA . CYS A 1 130 ? 19.305 14.010 20.756 1.00 6.47 ? 130 CYS A CA 1 ATOM 1023 C C . CYS A 1 130 ? 19.670 13.627 22.200 1.00 6.61 ? 130 CYS A C 1 ATOM 1024 O O . CYS A 1 130 ? 18.955 13.992 23.135 1.00 7.53 ? 130 CYS A O 1 ATOM 1025 C CB . CYS A 1 130 ? 19.485 15.517 20.544 1.00 6.05 ? 130 CYS A CB 1 ATOM 1026 S SG . CYS A 1 130 ? 21.063 16.183 21.077 1.00 8.82 ? 130 CYS A SG 1 ATOM 1027 N N . THR A 1 131 ? 20.786 12.925 22.372 1.00 6.58 ? 131 THR A N 1 ATOM 1028 C CA . THR A 1 131 ? 21.241 12.462 23.693 1.00 5.93 ? 131 THR A CA 1 ATOM 1029 C C . THR A 1 131 ? 22.569 13.102 24.054 1.00 6.18 ? 131 THR A C 1 ATOM 1030 O O . THR A 1 131 ? 23.528 13.003 23.294 1.00 5.77 ? 131 THR A O 1 ATOM 1031 C CB . THR A 1 131 ? 21.419 10.914 23.699 1.00 6.63 ? 131 THR A CB 1 ATOM 1032 O OG1 . THR A 1 131 ? 20.199 10.299 23.289 1.00 7.60 ? 131 THR A OG1 1 ATOM 1033 C CG2 . THR A 1 131 ? 21.763 10.399 25.091 1.00 7.76 ? 131 THR A CG2 1 ATOM 1034 N N . ARG A 1 132 ? 22.624 13.780 25.202 1.00 6.29 ? 132 ARG A N 1 ATOM 1035 C CA . ARG A 1 132 ? 23.853 14.429 25.660 1.00 7.67 ? 132 ARG A CA 1 ATOM 1036 C C . ARG A 1 132 ? 24.108 13.960 27.093 1.00 7.19 ? 132 ARG A C 1 ATOM 1037 O O . ARG A 1 132 ? 23.184 13.895 27.902 1.00 8.65 ? 132 ARG A O 1 ATOM 1038 C CB . ARG A 1 132 ? 23.719 15.957 25.621 1.00 9.67 ? 132 ARG A CB 1 ATOM 1039 C CG . ARG A 1 132 ? 22.945 16.470 24.429 1.00 15.02 ? 132 ARG A CG 1 ATOM 1040 C CD . ARG A 1 132 ? 23.781 17.260 23.476 1.00 16.80 ? 132 ARG A CD 1 ATOM 1041 N NE . ARG A 1 132 ? 24.140 18.580 23.984 1.00 12.48 ? 132 ARG A NE 1 ATOM 1042 C CZ . ARG A 1 132 ? 25.030 19.377 23.395 1.00 12.93 ? 132 ARG A CZ 1 ATOM 1043 N NH1 . ARG A 1 132 ? 25.641 19.005 22.279 1.00 13.84 ? 132 ARG A NH1 1 ATOM 1044 N NH2 . ARG A 1 132 ? 25.398 20.506 23.973 1.00 11.57 ? 132 ARG A NH2 1 ATOM 1045 N N . VAL A 1 133 ? 25.359 13.633 27.397 1.00 5.99 ? 133 VAL A N 1 ATOM 1046 C CA . VAL A 1 133 ? 25.739 13.124 28.719 1.00 5.92 ? 133 VAL A CA 1 ATOM 1047 C C . VAL A 1 133 ? 26.773 14.055 29.345 1.00 5.85 ? 133 VAL A C 1 ATOM 1048 O O . VAL A 1 133 ? 27.713 14.492 28.681 1.00 5.50 ? 133 VAL A O 1 ATOM 1049 C CB . VAL A 1 133 ? 26.333 11.698 28.608 1.00 6.37 ? 133 VAL A CB 1 ATOM 1050 C CG1 . VAL A 1 133 ? 26.609 11.120 29.988 1.00 7.95 ? 133 VAL A CG1 1 ATOM 1051 C CG2 . VAL A 1 133 ? 25.385 10.782 27.832 1.00 6.46 ? 133 VAL A CG2 1 ATOM 1052 N N . TYR A 1 134 ? 26.619 14.337 30.635 1.00 5.35 ? 134 TYR A N 1 ATOM 1053 C CA . TYR A 1 134 ? 27.538 15.228 31.322 1.00 4.57 ? 134 TYR A CA 1 ATOM 1054 C C . TYR A 1 134 ? 28.014 14.611 32.617 1.00 5.30 ? 134 TYR A C 1 ATOM 1055 O O . TYR A 1 134 ? 27.371 13.712 33.165 1.00 3.92 ? 134 TYR A O 1 ATOM 1056 C CB . TYR A 1 134 ? 26.846 16.550 31.686 1.00 6.84 ? 134 TYR A CB 1 ATOM 1057 C CG . TYR A 1 134 ? 26.118 17.251 30.574 1.00 8.89 ? 134 TYR A CG 1 ATOM 1058 C CD1 . TYR A 1 134 ? 24.901 16.762 30.122 1.00 10.29 ? 134 TYR A CD1 1 ATOM 1059 C CD2 . TYR A 1 134 ? 26.628 18.406 29.992 1.00 10.49 ? 134 TYR A CD2 1 ATOM 1060 C CE1 . TYR A 1 134 ? 24.212 17.386 29.133 1.00 13.03 ? 134 TYR A CE1 1 ATOM 1061 C CE2 . TYR A 1 134 ? 25.930 19.051 28.982 1.00 12.15 ? 134 TYR A CE2 1 ATOM 1062 C CZ . TYR A 1 134 ? 24.723 18.517 28.567 1.00 12.80 ? 134 TYR A CZ 1 ATOM 1063 O OH . TYR A 1 134 ? 23.991 19.082 27.567 1.00 18.07 ? 134 TYR A OH 1 ATOM 1064 N N . VAL A 1 135 ? 29.113 15.158 33.119 1.00 6.63 ? 135 VAL A N 1 ATOM 1065 C CA . VAL A 1 135 ? 29.697 14.762 34.394 1.00 8.42 ? 135 VAL A CA 1 ATOM 1066 C C . VAL A 1 135 ? 30.100 16.086 35.064 1.00 9.05 ? 135 VAL A C 1 ATOM 1067 O O . VAL A 1 135 ? 30.340 17.086 34.385 1.00 9.02 ? 135 VAL A O 1 ATOM 1068 C CB . VAL A 1 135 ? 30.925 13.815 34.204 1.00 8.05 ? 135 VAL A CB 1 ATOM 1069 C CG1 . VAL A 1 135 ? 32.109 14.556 33.596 1.00 9.27 ? 135 VAL A CG1 1 ATOM 1070 C CG2 . VAL A 1 135 ? 31.304 13.151 35.533 1.00 10.37 ? 135 VAL A CG2 1 ATOM 1071 N N . ARG A 1 136 ? 30.117 16.133 36.390 1.00 9.57 ? 136 ARG A N 1 ATOM 1072 C CA . ARG A 1 136 ? 30.498 17.375 37.040 1.00 10.86 ? 136 ARG A CA 1 ATOM 1073 C C . ARG A 1 136 ? 31.964 17.676 36.776 1.00 11.68 ? 136 ARG A C 1 ATOM 1074 O O . ARG A 1 136 ? 32.782 16.765 36.686 1.00 11.35 ? 136 ARG A O 1 ATOM 1075 C CB . ARG A 1 136 ? 30.221 17.319 38.536 1.00 11.99 ? 136 ARG A CB 1 ATOM 1076 C CG . ARG A 1 136 ? 28.746 17.454 38.885 1.00 13.89 ? 136 ARG A CG 1 ATOM 1077 C CD . ARG A 1 136 ? 28.576 17.533 40.382 1.00 15.85 ? 136 ARG A CD 1 ATOM 1078 N NE . ARG A 1 136 ? 27.185 17.407 40.754 1.00 17.08 ? 136 ARG A NE 1 ATOM 1079 C CZ . ARG A 1 136 ? 26.561 16.245 40.926 1.00 21.69 ? 136 ARG A CZ 1 ATOM 1080 N NH1 . ARG A 1 136 ? 27.217 15.102 40.754 1.00 23.26 ? 136 ARG A NH1 1 ATOM 1081 N NH2 . ARG A 1 136 ? 25.278 16.227 41.283 1.00 22.60 ? 136 ARG A NH2 1 ATOM 1082 N N . GLU A 1 137 ? 32.282 18.963 36.663 1.00 15.12 ? 137 GLU A N 1 ATOM 1083 C CA . GLU A 1 137 ? 33.641 19.430 36.400 1.00 18.00 ? 137 GLU A CA 1 ATOM 1084 C C . GLU A 1 137 ? 34.615 19.038 37.493 1.00 18.96 ? 137 GLU A C 1 ATOM 1085 O O . GLU A 1 137 ? 34.221 19.175 38.659 1.00 17.37 ? 137 GLU A O 1 ATOM 1086 C CB . GLU A 1 137 ? 33.661 20.943 36.293 1.00 19.89 ? 137 GLU A CB 1 ATOM 1087 C CG . GLU A 1 137 ? 33.092 21.492 35.035 1.00 28.03 ? 137 GLU A CG 1 ATOM 1088 C CD . GLU A 1 137 ? 33.469 22.953 34.865 1.00 33.22 ? 137 GLU A CD 1 ATOM 1089 O OE1 . GLU A 1 137 ? 34.630 23.217 34.473 1.00 37.31 ? 137 GLU A OE1 1 ATOM 1090 O OE2 . GLU A 1 137 ? 32.636 23.836 35.164 1.00 36.38 ? 137 GLU A OE2 1 ATOM 1091 O OXT . GLU A 1 137 ? 35.776 18.680 37.173 1.00 22.23 ? 137 GLU A OXT 1 HETATM 1092 C C1 . REA B 2 . ? 21.972 29.831 16.739 1.00 15.25 ? 200 REA A C1 1 HETATM 1093 C C2 . REA B 2 . ? 20.921 30.524 15.841 1.00 15.61 ? 200 REA A C2 1 HETATM 1094 C C3 . REA B 2 . ? 20.245 29.635 14.848 1.00 16.19 ? 200 REA A C3 1 HETATM 1095 C C4 . REA B 2 . ? 19.555 28.479 15.488 1.00 14.59 ? 200 REA A C4 1 HETATM 1096 C C5 . REA B 2 . ? 20.389 27.812 16.587 1.00 14.10 ? 200 REA A C5 1 HETATM 1097 C C6 . REA B 2 . ? 21.425 28.446 17.218 1.00 14.42 ? 200 REA A C6 1 HETATM 1098 C C7 . REA B 2 . ? 22.242 27.851 18.297 1.00 13.89 ? 200 REA A C7 1 HETATM 1099 C C8 . REA B 2 . ? 21.868 26.977 19.240 1.00 11.86 ? 200 REA A C8 1 HETATM 1100 C C9 . REA B 2 . ? 22.705 26.434 20.286 1.00 10.87 ? 200 REA A C9 1 HETATM 1101 C C10 . REA B 2 . ? 22.159 25.536 21.131 1.00 9.19 ? 200 REA A C10 1 HETATM 1102 C C11 . REA B 2 . ? 22.875 24.924 22.234 1.00 10.35 ? 200 REA A C11 1 HETATM 1103 C C12 . REA B 2 . ? 22.237 24.026 22.990 1.00 10.53 ? 200 REA A C12 1 HETATM 1104 C C13 . REA B 2 . ? 22.856 23.377 24.125 1.00 10.91 ? 200 REA A C13 1 HETATM 1105 C C14 . REA B 2 . ? 22.135 22.473 24.834 1.00 11.88 ? 200 REA A C14 1 HETATM 1106 C C15 . REA B 2 . ? 22.563 21.710 26.016 1.00 14.86 ? 200 REA A C15 1 HETATM 1107 C C16 . REA B 2 . ? 22.238 30.737 17.948 1.00 15.47 ? 200 REA A C16 1 HETATM 1108 C C17 . REA B 2 . ? 23.292 29.620 15.948 1.00 13.42 ? 200 REA A C17 1 HETATM 1109 C C18 . REA B 2 . ? 19.791 26.449 16.947 1.00 12.61 ? 200 REA A C18 1 HETATM 1110 C C19 . REA B 2 . ? 24.181 26.841 20.385 1.00 10.08 ? 200 REA A C19 1 HETATM 1111 C C20 . REA B 2 . ? 24.303 23.747 24.489 1.00 10.10 ? 200 REA A C20 1 HETATM 1112 O O1 . REA B 2 . ? 23.640 21.075 25.978 1.00 13.29 ? 200 REA A O1 1 HETATM 1113 O O2 . REA B 2 . ? 21.840 21.712 27.037 1.00 10.99 ? 200 REA A O2 1 HETATM 1114 O O . HOH C 3 . ? 21.817 19.604 31.169 1.00 17.43 ? 300 HOH A O 1 HETATM 1115 O O . HOH C 3 . ? 7.617 26.892 37.107 1.00 12.66 ? 301 HOH A O 1 HETATM 1116 O O . HOH C 3 . ? 22.885 27.835 25.056 1.00 18.86 ? 302 HOH A O 1 HETATM 1117 O O . HOH C 3 . ? 30.685 27.402 22.818 1.00 14.12 ? 303 HOH A O 1 HETATM 1118 O O . HOH C 3 . ? 29.930 20.839 40.398 1.00 16.48 ? 304 HOH A O 1 HETATM 1119 O O . HOH C 3 . ? 31.492 21.096 28.452 1.00 16.65 ? 305 HOH A O 1 HETATM 1120 O O . HOH C 3 . ? 19.459 26.601 30.320 1.00 9.81 ? 306 HOH A O 1 HETATM 1121 O O . HOH C 3 . ? 19.116 26.759 22.930 1.00 22.33 ? 307 HOH A O 1 HETATM 1122 O O . HOH C 3 . ? 16.356 22.299 28.453 1.00 35.46 ? 308 HOH A O 1 HETATM 1123 O O . HOH C 3 . ? 21.823 21.939 29.734 1.00 13.95 ? 309 HOH A O 1 HETATM 1124 O O . HOH C 3 . ? 13.206 22.267 22.102 1.00 20.07 ? 310 HOH A O 1 HETATM 1125 O O . HOH C 3 . ? 30.300 22.803 12.740 1.00 24.70 ? 311 HOH A O 1 HETATM 1126 O O . HOH C 3 . ? 7.344 23.059 35.600 1.00 8.82 ? 312 HOH A O 1 HETATM 1127 O O . HOH C 3 . ? 6.876 22.668 20.375 1.00 29.74 ? 313 HOH A O 1 HETATM 1128 O O . HOH C 3 . ? 17.917 24.800 29.159 1.00 23.69 ? 314 HOH A O 1 HETATM 1129 O O . HOH C 3 . ? 37.101 16.714 38.714 1.00 19.84 ? 315 HOH A O 1 HETATM 1130 O O . HOH C 3 . ? 28.721 7.425 30.043 1.00 14.94 ? 316 HOH A O 1 HETATM 1131 O O . HOH C 3 . ? 13.212 14.450 25.193 1.00 18.03 ? 317 HOH A O 1 HETATM 1132 O O . HOH C 3 . ? 6.094 9.777 39.151 1.00 13.98 ? 318 HOH A O 1 HETATM 1133 O O . HOH C 3 . ? 19.296 10.379 13.144 1.00 27.20 ? 319 HOH A O 1 HETATM 1134 O O . HOH C 3 . ? 25.337 10.931 16.577 1.00 18.41 ? 320 HOH A O 1 HETATM 1135 O O . HOH C 3 . ? 25.244 34.269 18.193 1.00 9.65 ? 321 HOH A O 1 HETATM 1136 O O . HOH C 3 . ? 23.567 10.727 14.429 1.00 11.13 ? 322 HOH A O 1 HETATM 1137 O O . HOH C 3 . ? 17.151 12.178 30.238 1.00 11.53 ? 323 HOH A O 1 HETATM 1138 O O . HOH C 3 . ? 27.768 11.967 42.077 1.00 23.33 ? 324 HOH A O 1 HETATM 1139 O O . HOH C 3 . ? 30.270 12.554 21.386 1.00 25.05 ? 325 HOH A O 1 HETATM 1140 O O . HOH C 3 . ? 25.662 15.488 18.515 1.00 10.80 ? 326 HOH A O 1 HETATM 1141 O O . HOH C 3 . ? 4.514 21.426 18.685 1.00 45.94 ? 327 HOH A O 1 HETATM 1142 O O . HOH C 3 . ? 8.081 23.201 17.690 1.00 30.16 ? 328 HOH A O 1 HETATM 1143 O O . HOH C 3 . ? 13.242 29.389 14.924 1.00 39.93 ? 329 HOH A O 1 HETATM 1144 O O . HOH C 3 . ? 10.514 18.772 10.176 1.00 33.65 ? 330 HOH A O 1 HETATM 1145 O O . HOH C 3 . ? 10.555 13.666 26.313 1.00 32.55 ? 331 HOH A O 1 HETATM 1146 O O . HOH C 3 . ? 5.189 16.418 31.375 1.00 35.78 ? 332 HOH A O 1 HETATM 1147 O O . HOH C 3 . ? 0.738 25.633 36.349 1.00 29.00 ? 333 HOH A O 1 HETATM 1148 O O . HOH C 3 . ? 2.976 28.966 37.321 1.00 40.14 ? 334 HOH A O 1 HETATM 1149 O O . HOH C 3 . ? 6.424 28.750 38.849 1.00 32.17 ? 335 HOH A O 1 HETATM 1150 O O . HOH C 3 . ? 12.503 30.488 31.704 1.00 41.11 ? 336 HOH A O 1 HETATM 1151 O O . HOH C 3 . ? 14.979 30.157 27.559 1.00 23.78 ? 337 HOH A O 1 HETATM 1152 O O . HOH C 3 . ? 17.312 32.981 28.812 1.00 20.84 ? 338 HOH A O 1 HETATM 1153 O O . HOH C 3 . ? 29.473 25.946 34.693 1.00 29.05 ? 339 HOH A O 1 HETATM 1154 O O . HOH C 3 . ? 30.328 23.817 33.494 1.00 24.17 ? 340 HOH A O 1 HETATM 1155 O O . HOH C 3 . ? 31.158 28.144 26.433 1.00 42.66 ? 341 HOH A O 1 HETATM 1156 O O . HOH C 3 . ? 30.276 28.397 16.400 1.00 21.90 ? 342 HOH A O 1 HETATM 1157 O O . HOH C 3 . ? 19.533 23.600 26.857 1.00 21.12 ? 343 HOH A O 1 HETATM 1158 O O . HOH C 3 . ? 17.892 24.675 24.549 1.00 48.11 ? 344 HOH A O 1 HETATM 1159 O O . HOH C 3 . ? 14.211 24.152 25.435 1.00 21.09 ? 345 HOH A O 1 HETATM 1160 O O . HOH C 3 . ? 15.223 27.626 27.056 1.00 27.16 ? 346 HOH A O 1 HETATM 1161 O O . HOH C 3 . ? 3.502 22.911 43.083 1.00 30.15 ? 347 HOH A O 1 HETATM 1162 O O . HOH C 3 . ? 20.610 7.668 40.212 1.00 49.06 ? 348 HOH A O 1 HETATM 1163 O O . HOH C 3 . ? 24.813 2.899 36.403 1.00 48.98 ? 349 HOH A O 1 HETATM 1164 O O . HOH C 3 . ? 29.900 5.163 26.918 1.00 23.60 ? 350 HOH A O 1 HETATM 1165 O O . HOH C 3 . ? 14.333 5.466 42.757 1.00 22.90 ? 351 HOH A O 1 HETATM 1166 O O . HOH C 3 . ? 8.914 5.771 35.515 1.00 35.92 ? 352 HOH A O 1 HETATM 1167 O O . HOH C 3 . ? 14.519 28.906 40.193 1.00 28.73 ? 353 HOH A O 1 HETATM 1168 O O . HOH C 3 . ? 17.573 20.203 47.080 1.00 37.63 ? 354 HOH A O 1 HETATM 1169 O O . HOH C 3 . ? 13.324 32.251 34.152 1.00 47.79 ? 355 HOH A O 1 HETATM 1170 O O . HOH C 3 . ? 12.491 24.840 7.594 1.00 39.45 ? 356 HOH A O 1 HETATM 1171 O O . HOH C 3 . ? 25.066 15.777 15.214 1.00 27.39 ? 357 HOH A O 1 HETATM 1172 O O . HOH C 3 . ? 27.138 17.638 17.834 1.00 45.12 ? 358 HOH A O 1 HETATM 1173 O O . HOH C 3 . ? 27.611 19.792 19.503 1.00 24.45 ? 359 HOH A O 1 HETATM 1174 O O . HOH C 3 . ? 11.358 8.880 19.119 1.00 24.31 ? 360 HOH A O 1 HETATM 1175 O O . HOH C 3 . ? 16.252 27.169 24.557 1.00 25.40 ? 361 HOH A O 1 HETATM 1176 O O . HOH C 3 . ? 22.049 27.870 4.565 1.00 25.37 ? 362 HOH A O 1 HETATM 1177 O O . HOH C 3 . ? 11.533 6.689 34.501 1.00 29.92 ? 363 HOH A O 1 HETATM 1178 O O . HOH C 3 . ? 13.269 4.551 36.338 1.00 45.75 ? 364 HOH A O 1 HETATM 1179 O O . HOH C 3 . ? 23.149 9.493 41.173 1.00 30.10 ? 365 HOH A O 1 HETATM 1180 O O . HOH C 3 . ? 21.090 12.171 43.973 1.00 27.97 ? 366 HOH A O 1 HETATM 1181 O O . HOH C 3 . ? 11.884 13.399 42.560 1.00 23.28 ? 367 HOH A O 1 HETATM 1182 O O . HOH C 3 . ? 29.542 17.520 20.025 1.00 38.32 ? 368 HOH A O 1 HETATM 1183 O O . HOH C 3 . ? 31.058 17.427 22.538 1.00 37.85 ? 369 HOH A O 1 HETATM 1184 O O . HOH C 3 . ? 31.928 9.444 23.294 1.00 46.07 ? 370 HOH A O 1 HETATM 1185 O O . HOH C 3 . ? 25.699 10.933 9.557 1.00 44.12 ? 371 HOH A O 1 HETATM 1186 O O . HOH C 3 . ? 26.533 13.428 16.334 1.00 45.21 ? 372 HOH A O 1 HETATM 1187 O O . HOH C 3 . ? 27.078 16.850 13.245 1.00 39.52 ? 373 HOH A O 1 HETATM 1188 O O . HOH C 3 . ? 20.596 32.070 6.807 1.00 36.38 ? 374 HOH A O 1 HETATM 1189 O O . HOH C 3 . ? 17.126 28.421 9.515 1.00 23.81 ? 375 HOH A O 1 HETATM 1190 O O . HOH C 3 . ? 16.626 32.383 11.231 1.00 20.11 ? 376 HOH A O 1 HETATM 1191 O O . HOH C 3 . ? 6.046 30.510 19.639 1.00 29.02 ? 377 HOH A O 1 HETATM 1192 O O . HOH C 3 . ? 9.543 16.072 11.145 1.00 50.91 ? 378 HOH A O 1 HETATM 1193 O O . HOH C 3 . ? 8.174 14.289 20.240 1.00 54.21 ? 379 HOH A O 1 HETATM 1194 O O . HOH C 3 . ? 11.561 10.834 22.873 1.00 43.23 ? 380 HOH A O 1 HETATM 1195 O O . HOH C 3 . ? 5.486 15.385 24.922 1.00 50.19 ? 381 HOH A O 1 HETATM 1196 O O . HOH C 3 . ? 6.038 21.424 43.276 1.00 46.64 ? 382 HOH A O 1 HETATM 1197 O O . HOH C 3 . ? 34.144 19.165 27.284 1.00 41.41 ? 383 HOH A O 1 HETATM 1198 O O . HOH C 3 . ? 16.916 27.142 42.621 1.00 29.32 ? 384 HOH A O 1 HETATM 1199 O O . HOH C 3 . ? 25.509 24.918 41.520 1.00 32.12 ? 385 HOH A O 1 HETATM 1200 O O . HOH C 3 . ? 31.446 7.504 31.389 1.00 28.93 ? 386 HOH A O 1 HETATM 1201 O O . HOH C 3 . ? 18.212 20.893 5.892 1.00 29.90 ? 387 HOH A O 1 HETATM 1202 O O . HOH C 3 . ? 15.148 27.608 7.685 1.00 30.91 ? 388 HOH A O 1 HETATM 1203 O O . HOH C 3 . ? 2.656 23.148 20.117 1.00 35.98 ? 389 HOH A O 1 HETATM 1204 O O . HOH C 3 . ? 3.100 22.690 28.640 1.00 31.31 ? 390 HOH A O 1 HETATM 1205 O O . HOH C 3 . ? 13.699 19.720 21.819 1.00 26.56 ? 391 HOH A O 1 HETATM 1206 O O . HOH C 3 . ? 26.833 28.283 32.272 1.00 31.48 ? 392 HOH A O 1 HETATM 1207 O O . HOH C 3 . ? 20.458 26.214 25.811 1.00 24.39 ? 393 HOH A O 1 HETATM 1208 O O . HOH C 3 . ? 32.304 27.731 18.152 1.00 41.66 ? 394 HOH A O 1 HETATM 1209 O O . HOH C 3 . ? 24.283 13.868 42.687 1.00 35.59 ? 395 HOH A O 1 HETATM 1210 O O . HOH C 3 . ? 11.833 12.657 45.160 1.00 38.30 ? 396 HOH A O 1 HETATM 1211 O O . HOH C 3 . ? 1.988 27.992 43.589 1.00 33.97 ? 397 HOH A O 1 HETATM 1212 O O . HOH C 3 . ? 32.913 22.982 40.176 1.00 39.26 ? 398 HOH A O 1 HETATM 1213 O O . HOH C 3 . ? 32.435 20.043 40.169 1.00 33.87 ? 399 HOH A O 1 # loop_ _pdbx_poly_seq_scheme.asym_id _pdbx_poly_seq_scheme.entity_id _pdbx_poly_seq_scheme.seq_id _pdbx_poly_seq_scheme.mon_id _pdbx_poly_seq_scheme.ndb_seq_num _pdbx_poly_seq_scheme.pdb_seq_num _pdbx_poly_seq_scheme.auth_seq_num _pdbx_poly_seq_scheme.pdb_mon_id _pdbx_poly_seq_scheme.auth_mon_id _pdbx_poly_seq_scheme.pdb_strand_id _pdbx_poly_seq_scheme.pdb_ins_code _pdbx_poly_seq_scheme.hetero A 1 1 PRO 1 1 1 PRO PRO A . n A 1 2 ASN 2 2 2 ASN ASN A . n A 1 3 PHE 3 3 3 PHE PHE A . n A 1 4 SER 4 4 4 SER SER A . n A 1 5 GLY 5 5 5 GLY GLY A . n A 1 6 ASN 6 6 6 ASN ASN A . n A 1 7 TRP 7 7 7 TRP TRP A . n A 1 8 LYS 8 8 8 LYS LYS A . n A 1 9 ILE 9 9 9 ILE ILE A . n A 1 10 ILE 10 10 10 ILE ILE A . n A 1 11 ARG 11 11 11 ARG ARG A . n A 1 12 SER 12 12 12 SER SER A . n A 1 13 GLU 13 13 13 GLU GLU A . n A 1 14 ASN 14 14 14 ASN ASN A . n A 1 15 PHE 15 15 15 PHE PHE A . n A 1 16 GLU 16 16 16 GLU GLU A . n A 1 17 GLU 17 17 17 GLU GLU A . n A 1 18 LEU 18 18 18 LEU LEU A . n A 1 19 LEU 19 19 19 LEU LEU A . n A 1 20 LYS 20 20 20 LYS LYS A . n A 1 21 VAL 21 21 21 VAL VAL A . n A 1 22 LEU 22 22 22 LEU LEU A . n A 1 23 GLY 23 23 23 GLY GLY A . n A 1 24 VAL 24 24 24 VAL VAL A . n A 1 25 ASN 25 25 25 ASN ASN A . n A 1 26 VAL 26 26 26 VAL VAL A . n A 1 27 MET 27 27 27 MET MET A . n A 1 28 LEU 28 28 28 LEU LEU A . n A 1 29 ARG 29 29 29 ARG ARG A . n A 1 30 LYS 30 30 30 LYS LYS A . n A 1 31 ILE 31 31 31 ILE ILE A . n A 1 32 ALA 32 32 32 ALA ALA A . n A 1 33 VAL 33 33 33 VAL VAL A . n A 1 34 ALA 34 34 34 ALA ALA A . n A 1 35 ALA 35 35 35 ALA ALA A . n A 1 36 ALA 36 36 36 ALA ALA A . n A 1 37 SER 37 37 37 SER SER A . n A 1 38 LYS 38 38 38 LYS LYS A . n A 1 39 PRO 39 39 39 PRO PRO A . n A 1 40 ALA 40 40 40 ALA ALA A . n A 1 41 VAL 41 41 41 VAL VAL A . n A 1 42 GLU 42 42 42 GLU GLU A . n A 1 43 ILE 43 43 43 ILE ILE A . n A 1 44 LYS 44 44 44 LYS LYS A . n A 1 45 GLN 45 45 45 GLN GLN A . n A 1 46 GLU 46 46 46 GLU GLU A . n A 1 47 GLY 47 47 47 GLY GLY A . n A 1 48 ASP 48 48 48 ASP ASP A . n A 1 49 THR 49 49 49 THR THR A . n A 1 50 PHE 50 50 50 PHE PHE A . n A 1 51 TYR 51 51 51 TYR TYR A . n A 1 52 ILE 52 52 52 ILE ILE A . n A 1 53 LYS 53 53 53 LYS LYS A . n A 1 54 THR 54 54 54 THR THR A . n A 1 55 SER 55 55 55 SER SER A . n A 1 56 THR 56 56 56 THR THR A . n A 1 57 THR 57 57 57 THR THR A . n A 1 58 VAL 58 58 58 VAL VAL A . n A 1 59 ARG 59 59 59 ARG ARG A . n A 1 60 THR 60 60 60 THR THR A . n A 1 61 THR 61 61 61 THR THR A . n A 1 62 GLU 62 62 62 GLU GLU A . n A 1 63 ILE 63 63 63 ILE ILE A . n A 1 64 ASN 64 64 64 ASN ASN A . n A 1 65 PHE 65 65 65 PHE PHE A . n A 1 66 LYS 66 66 66 LYS LYS A . n A 1 67 VAL 67 67 67 VAL VAL A . n A 1 68 GLY 68 68 68 GLY GLY A . n A 1 69 GLU 69 69 69 GLU GLU A . n A 1 70 GLU 70 70 70 GLU GLU A . n A 1 71 PHE 71 71 71 PHE PHE A . n A 1 72 GLU 72 72 72 GLU GLU A . n A 1 73 GLU 73 73 73 GLU GLU A . n A 1 74 GLN 74 74 74 GLN GLN A . n A 1 75 THR 75 75 75 THR THR A . n A 1 76 VAL 76 76 76 VAL VAL A . n A 1 77 ASP 77 77 77 ASP ASP A . n A 1 78 GLY 78 78 78 GLY GLY A . n A 1 79 ARG 79 79 79 ARG ARG A . n A 1 80 PRO 80 80 80 PRO PRO A . n A 1 81 CYS 81 81 81 CYS CYS A . n A 1 82 LYS 82 82 82 LYS LYS A . n A 1 83 SER 83 83 83 SER SER A . n A 1 84 LEU 84 84 84 LEU LEU A . n A 1 85 VAL 85 85 85 VAL VAL A . n A 1 86 LYS 86 86 86 LYS LYS A . n A 1 87 TRP 87 87 87 TRP TRP A . n A 1 88 GLU 88 88 88 GLU GLU A . n A 1 89 SER 89 89 89 SER SER A . n A 1 90 GLU 90 90 90 GLU GLU A . n A 1 91 ASN 91 91 91 ASN ASN A . n A 1 92 LYS 92 92 92 LYS LYS A . n A 1 93 MET 93 93 93 MET MET A . n A 1 94 VAL 94 94 94 VAL VAL A . n A 1 95 CYS 95 95 95 CYS CYS A . n A 1 96 GLU 96 96 96 GLU GLU A . n A 1 97 GLN 97 97 97 GLN GLN A . n A 1 98 LYS 98 98 98 LYS LYS A . n A 1 99 LEU 99 99 99 LEU LEU A . n A 1 100 LEU 100 100 100 LEU LEU A . n A 1 101 LYS 101 101 101 LYS LYS A . n A 1 102 GLY 102 102 102 GLY GLY A . n A 1 103 GLU 103 103 103 GLU GLU A . n A 1 104 GLY 104 104 104 GLY GLY A . n A 1 105 PRO 105 105 105 PRO PRO A . n A 1 106 LYS 106 106 106 LYS LYS A . n A 1 107 THR 107 107 107 THR THR A . n A 1 108 SER 108 108 108 SER SER A . n A 1 109 TRP 109 109 109 TRP TRP A . n A 1 110 THR 110 110 110 THR THR A . n A 1 111 ARG 111 111 111 ARG ARG A . n A 1 112 GLU 112 112 112 GLU GLU A . n A 1 113 LEU 113 113 113 LEU LEU A . n A 1 114 THR 114 114 114 THR THR A . n A 1 115 ASN 115 115 115 ASN ASN A . n A 1 116 ASP 116 116 116 ASP ASP A . n A 1 117 GLY 117 117 117 GLY GLY A . n A 1 118 GLU 118 118 118 GLU GLU A . n A 1 119 LEU 119 119 119 LEU LEU A . n A 1 120 ILE 120 120 120 ILE ILE A . n A 1 121 LEU 121 121 121 LEU LEU A . n A 1 122 THR 122 122 122 THR THR A . n A 1 123 MET 123 123 123 MET MET A . n A 1 124 THR 124 124 124 THR THR A . n A 1 125 ALA 125 125 125 ALA ALA A . n A 1 126 ASP 126 126 126 ASP ASP A . n A 1 127 ASP 127 127 127 ASP ASP A . n A 1 128 VAL 128 128 128 VAL VAL A . n A 1 129 VAL 129 129 129 VAL VAL A . n A 1 130 CYS 130 130 130 CYS CYS A . n A 1 131 THR 131 131 131 THR THR A . n A 1 132 ARG 132 132 132 ARG ARG A . n A 1 133 VAL 133 133 133 VAL VAL A . n A 1 134 TYR 134 134 134 TYR TYR A . n A 1 135 VAL 135 135 135 VAL VAL A . n A 1 136 ARG 136 136 136 ARG ARG A . n A 1 137 GLU 137 137 137 GLU GLU A . n # loop_ _pdbx_nonpoly_scheme.asym_id _pdbx_nonpoly_scheme.entity_id _pdbx_nonpoly_scheme.mon_id _pdbx_nonpoly_scheme.ndb_seq_num _pdbx_nonpoly_scheme.pdb_seq_num _pdbx_nonpoly_scheme.auth_seq_num _pdbx_nonpoly_scheme.pdb_mon_id _pdbx_nonpoly_scheme.auth_mon_id _pdbx_nonpoly_scheme.pdb_strand_id _pdbx_nonpoly_scheme.pdb_ins_code B 2 REA 1 200 200 REA REA A . C 3 HOH 1 300 300 HOH HOH A . C 3 HOH 2 301 301 HOH HOH A . C 3 HOH 3 302 302 HOH HOH A . C 3 HOH 4 303 303 HOH HOH A . C 3 HOH 5 304 304 HOH HOH A . C 3 HOH 6 305 305 HOH HOH A . C 3 HOH 7 306 306 HOH HOH A . C 3 HOH 8 307 307 HOH HOH A . C 3 HOH 9 308 308 HOH HOH A . C 3 HOH 10 309 309 HOH HOH A . C 3 HOH 11 310 310 HOH HOH A . C 3 HOH 12 311 311 HOH HOH A . C 3 HOH 13 312 312 HOH HOH A . C 3 HOH 14 313 313 HOH HOH A . C 3 HOH 15 314 314 HOH HOH A . C 3 HOH 16 315 315 HOH HOH A . C 3 HOH 17 316 316 HOH HOH A . C 3 HOH 18 317 317 HOH HOH A . C 3 HOH 19 318 318 HOH HOH A . C 3 HOH 20 319 319 HOH HOH A . C 3 HOH 21 320 320 HOH HOH A . C 3 HOH 22 321 321 HOH HOH A . C 3 HOH 23 322 322 HOH HOH A . C 3 HOH 24 323 323 HOH HOH A . C 3 HOH 25 324 324 HOH HOH A . C 3 HOH 26 325 325 HOH HOH A . C 3 HOH 27 326 326 HOH HOH A . C 3 HOH 28 327 327 HOH HOH A . C 3 HOH 29 328 328 HOH HOH A . C 3 HOH 30 329 329 HOH HOH A . C 3 HOH 31 330 330 HOH HOH A . C 3 HOH 32 331 331 HOH HOH A . C 3 HOH 33 332 332 HOH HOH A . C 3 HOH 34 333 333 HOH HOH A . C 3 HOH 35 334 334 HOH HOH A . C 3 HOH 36 335 335 HOH HOH A . C 3 HOH 37 336 336 HOH HOH A . C 3 HOH 38 337 337 HOH HOH A . C 3 HOH 39 338 338 HOH HOH A . C 3 HOH 40 339 339 HOH HOH A . C 3 HOH 41 340 340 HOH HOH A . C 3 HOH 42 341 341 HOH HOH A . C 3 HOH 43 342 342 HOH HOH A . C 3 HOH 44 343 343 HOH HOH A . C 3 HOH 45 344 344 HOH HOH A . C 3 HOH 46 345 345 HOH HOH A . C 3 HOH 47 346 346 HOH HOH A . C 3 HOH 48 347 347 HOH HOH A . C 3 HOH 49 348 348 HOH HOH A . C 3 HOH 50 349 349 HOH HOH A . C 3 HOH 51 350 350 HOH HOH A . C 3 HOH 52 351 351 HOH HOH A . C 3 HOH 53 352 352 HOH HOH A . C 3 HOH 54 353 353 HOH HOH A . C 3 HOH 55 354 354 HOH HOH A . C 3 HOH 56 355 355 HOH HOH A . C 3 HOH 57 356 356 HOH HOH A . C 3 HOH 58 357 357 HOH HOH A . C 3 HOH 59 358 358 HOH HOH A . C 3 HOH 60 359 359 HOH HOH A . C 3 HOH 61 360 360 HOH HOH A . C 3 HOH 62 361 361 HOH HOH A . C 3 HOH 63 362 362 HOH HOH A . C 3 HOH 64 363 363 HOH HOH A . C 3 HOH 65 364 364 HOH HOH A . C 3 HOH 66 365 365 HOH HOH A . C 3 HOH 67 366 366 HOH HOH A . C 3 HOH 68 367 367 HOH HOH A . C 3 HOH 69 368 368 HOH HOH A . C 3 HOH 70 369 369 HOH HOH A . C 3 HOH 71 370 370 HOH HOH A . C 3 HOH 72 371 371 HOH HOH A . C 3 HOH 73 372 372 HOH HOH A . C 3 HOH 74 373 373 HOH HOH A . C 3 HOH 75 374 374 HOH HOH A . C 3 HOH 76 375 375 HOH HOH A . C 3 HOH 77 376 376 HOH HOH A . C 3 HOH 78 377 377 HOH HOH A . C 3 HOH 79 378 378 HOH HOH A . C 3 HOH 80 379 379 HOH HOH A . C 3 HOH 81 380 380 HOH HOH A . C 3 HOH 82 381 381 HOH HOH A . C 3 HOH 83 382 382 HOH HOH A . C 3 HOH 84 383 383 HOH HOH A . C 3 HOH 85 384 384 HOH HOH A . C 3 HOH 86 385 385 HOH HOH A . C 3 HOH 87 386 386 HOH HOH A . C 3 HOH 88 387 387 HOH HOH A . C 3 HOH 89 388 388 HOH HOH A . C 3 HOH 90 389 389 HOH HOH A . C 3 HOH 91 390 390 HOH HOH A . C 3 HOH 92 391 391 HOH HOH A . C 3 HOH 93 392 392 HOH HOH A . C 3 HOH 94 393 393 HOH HOH A . C 3 HOH 95 394 394 HOH HOH A . C 3 HOH 96 395 395 HOH HOH A . C 3 HOH 97 396 396 HOH HOH A . C 3 HOH 98 397 397 HOH HOH A . C 3 HOH 99 398 398 HOH HOH A . C 3 HOH 100 399 399 HOH HOH A . # _pdbx_struct_assembly.id 1 _pdbx_struct_assembly.details author_defined_assembly _pdbx_struct_assembly.method_details ? _pdbx_struct_assembly.oligomeric_details monomeric _pdbx_struct_assembly.oligomeric_count 1 # _pdbx_struct_assembly_gen.assembly_id 1 _pdbx_struct_assembly_gen.oper_expression 1 _pdbx_struct_assembly_gen.asym_id_list A,B,C # _pdbx_struct_oper_list.id 1 _pdbx_struct_oper_list.type 'identity operation' _pdbx_struct_oper_list.name 1_555 _pdbx_struct_oper_list.symmetry_operation x,y,z _pdbx_struct_oper_list.matrix[1][1] 1.0000000000 _pdbx_struct_oper_list.matrix[1][2] 0.0000000000 _pdbx_struct_oper_list.matrix[1][3] 0.0000000000 _pdbx_struct_oper_list.vector[1] 0.0000000000 _pdbx_struct_oper_list.matrix[2][1] 0.0000000000 _pdbx_struct_oper_list.matrix[2][2] 1.0000000000 _pdbx_struct_oper_list.matrix[2][3] 0.0000000000 _pdbx_struct_oper_list.vector[2] 0.0000000000 _pdbx_struct_oper_list.matrix[3][1] 0.0000000000 _pdbx_struct_oper_list.matrix[3][2] 0.0000000000 _pdbx_struct_oper_list.matrix[3][3] 1.0000000000 _pdbx_struct_oper_list.vector[3] 0.0000000000 # loop_ _pdbx_audit_revision_history.ordinal _pdbx_audit_revision_history.data_content_type _pdbx_audit_revision_history.major_revision _pdbx_audit_revision_history.minor_revision _pdbx_audit_revision_history.revision_date 1 'Structure model' 1 0 1995-01-26 2 'Structure model' 1 1 2008-03-24 3 'Structure model' 1 2 2011-07-13 # _pdbx_audit_revision_details.ordinal 1 _pdbx_audit_revision_details.revision_ordinal 1 _pdbx_audit_revision_details.data_content_type 'Structure model' _pdbx_audit_revision_details.provider repository _pdbx_audit_revision_details.type 'Initial release' _pdbx_audit_revision_details.description ? # loop_ _pdbx_audit_revision_group.ordinal _pdbx_audit_revision_group.revision_ordinal _pdbx_audit_revision_group.data_content_type _pdbx_audit_revision_group.group 1 2 'Structure model' 'Version format compliance' 2 3 'Structure model' 'Version format compliance' # loop_ _software.name _software.classification _software.version _software.citation_id _software.pdbx_ordinal _software.date X-PLOR 'model building' . ? 1 ? X-PLOR refinement . ? 2 ? X-PLOR phasing . ? 3 ? dssp other ? ? 4 ? # loop_ _pdbx_validate_torsion.id _pdbx_validate_torsion.PDB_model_num _pdbx_validate_torsion.auth_comp_id _pdbx_validate_torsion.auth_asym_id _pdbx_validate_torsion.auth_seq_id _pdbx_validate_torsion.PDB_ins_code _pdbx_validate_torsion.label_alt_id _pdbx_validate_torsion.phi _pdbx_validate_torsion.psi 1 1 GLU A 73 ? ? -144.94 -154.28 2 1 ASP A 126 ? ? 55.69 -115.96 # loop_ _pdbx_entity_nonpoly.entity_id _pdbx_entity_nonpoly.name _pdbx_entity_nonpoly.comp_id 2 'RETINOIC ACID' REA 3 water HOH # dssp-4.4.10/test/1cbs.cif.gz000066400000000000000000001104731470365501700155000ustar00rootroot00000000000000ʳ_1cbs.cif\s⸲Py`O్:@9@&@2ske|$[m<띙RZV-ޚi(UaP7O%`aqko${~3OP?=;2Èl}xK[HզoX8xh[ JO藸4㛤Kdž"˲SUX)_Mt-'*(S/c}j}l ۵Ct-=xBBD {Iߤ&Q iʾy.e:+"mQٜHB;t(_чf s釨s`ST5}S{k#_eyG6bj5|~Ʊ5J@.G%?MI{E}` > F,8Gzv=pXz.;R ȔLv CO;qZoA+MpV+5~o_EgnIxQC¦n&I}ˊZ4n S'DzG-a8hriڀȽnsȸ C`I7<./Txm S +sLC:SyeO #`:|=Gth0N6t? *FQ!B@+0/&vrlwǭ<$]ݘmBfW~]0/dsê<[껎5(\4A +{WT(XQUFUv3QU'8BTã4A}vMb*s%3QmØ$FUg&(VED>Ex{j0j#u) 6L]W e2}cr7^߾N֫eF}xLe|\4F p{x|Mxw!_wt~\h|y}YN >Ht2cّ.iXfs;,;#CpZg"('\b!gLy F:$݋ItdĺF7]zn D"Ut9ts w"˻Fځyo4۩lpd=DMw!F&<ȋ>oTTx'$\ H8Y7ip iLot. d:TNZM8nbh(h=NoZUd} c$X&5*h5x,|MsZFU^]^]%B* qvp1n[υ)qxe( (B_osk];\}^\p'6u0P8x Qfր'ASՀ `(O7EnsENDE z(ro ӎN1#DE Nt8 N1zb&(8EۀN1kb: KN1u(INg#Sn)èSXSNhP)r5]KEοS\ XT쇛 F}Hw&nU5qRu$:@m;Cbp9BTs Rvcy{> 1 F`{oUʣ˚i??s2Z74խj"uv/ApOGagŻ*M˫PgM6y@0 y!X9P:9]pgoKV;o?73j@3,R6fd.C*vz },~^yALR\&mlXcmZ6Sj+:&ɝrmquEx =5aXIh~ƴԓ+IԷFa$m % qۛV%JFa7Zc@uȳQpGKT &^7vt;.sKOxg|oef8{uCqR[PO{\ qJy?g7ObURC-O$3$G@gނjLmPHT|;Y7) oc%t[3vϒEt;+c\B8^Dk yr<| 84} Km-a ϤwjLR tio|NqHx}LS &w֠^ *nM:շ[5ɕ]rҸl?RCX&+'r+qaN{'LVcTY zoo̢ sņx A8)Ml,^}t#%Tqn/EPlŰf*s` *$,OkVo;5 gfn*$̯ 17xMӵ, b8rjXf@q-ճ$ڬ$@8pL9M$[>'ӹ\.GҐ/Ŭg+cSԉˣzh܋0MɚnCYJdj2`cbFp&`>0,cimv/À,(k17][2pȧ}>e)jvo0 0(&!E!Y Ր4.j %bk$ )$-8mF/Cˡ%ZW$|RhNZ͉|tkOV{v54ZjX5+W\^.b.5^ ~W[N/DWDDWug4rBnIun +Ȕ1~Lg:'l'>]}6k|ʿ:Y<׎[3{Q~Z(Wu"d\/o `!{j4{@-̎ '*LE>[v! A]y 'j,%c|; kE OuS ϜA`x N`_ `F߬<0\QK: Tl/Dt'?ѨMRAzoGgGsÌ'KuxK<ҰӅ< <!W45"ZXuSnBjx՝]]1@a0mOf Sg:j=d/Ҵ m?rcGJxEwYiZ vn&fە[Pfޓq'CZła^(mq.EǾ#)-,];r^{ooLD-S7اOhǡUAyhr  (g] By֙*VS1YiڋɊӟ:dy_+&w6D+60~iwI]u$=Ҡ9@P[:mJ۞_?V$SןvUUd e&y<>cw97y>>A,V,HZX!I>|)TOE1˟rC7|IOY!y;o'|)'?d,L> H.lǟrI7D}x7ǟ?bcW9ߕ2FؗO &CRO1>$dt L>tRZPB6+O-g?i%_ߗ/{̟{|9~qYe W{O?mD_9QWNueD_7QMue=>$O=̫OԎ>iI 3>$O~>̴O;N>P?5Svzl E>$f}v,#2~wfYn˾?.Aן߶:ϾoO*].&~?йm9mZYer?fO_׃?`t~l.m׍+W$}m=~u侈dòщ~76_ye~ؾoVop׍ΚaN l'+xi.aԖ%?>|aV4"{|w9=wwEh^ӟw_p$/ZܯQ,;T y+wyvބ]K?MOY Bouk ɀ~7w~o_qea{\R_-cT~7fT:3`/+M_|O_~M jH}cz.ScSyӠO&uP4[ Jj+DBђj=׼)P{ϻ%Rhn/S%Uz WrSm\f{[Uzj늢.D!iQ\T驭+zI B4YuEa 謧f蛃 5=bS_`4%iI+ޠ^?7}L"%i^9K@s1\MTiuܖ]7ĽLm)]RPLP$9;2A}PLߗzo~zÕRhP%)2]@{uAԙi~=3 ЦiI2 ~t#c#]*JMe}%@`j%οdx5̵hw~hϑ@4L{3^-T*Eo%o+^ ^~1ٟWT;M޻}A=t^Q(4s}}p ׿]t^Q (~'y_yCqTIeiw TWm u//;4-AKV/%J{x>Cm3:uJ%Iz1V:;c3cLoI(S(m0)HJ{,td_ oZV=q 4ܦ=:7K:<ԧIOPЀvwߗit 4Oz^[ߖ[t2zQ_u-*= פ 0-AMɘ(>p-JOC]Q6MrsKZ- Ь>{$1[Wz }P(b(~ ЬG1mVA/YvlBӴ~$+ I+͠JzF}|Sե%I"c%iv) K(p׾㘶>R.i@ٰp{r7]yBTzfڥ6PypͰOWP-vړ=׍#TRMj8@isXK=h~ڥ6΋q47]*{ܠ}El1UXWԛh1-{Uޯ4oh>?F;\XS-Y멺SW~~h}kRǿmm_&נ7LW$:8T+}}>U7( ˺一*I[@ͽm~A6]I׷KǍ-'I3;=P~\R핿&wGРgTj+g?ROCUx%hOS[QICh^͉)9s?;j%Xp~FJ~׷0KoT $F\LP~ɱ@堧]Ҁ<<Tiz:@1QNn>Un<YK4H긡d;(Af{ h \ }COYh1zAOA e)7>'=Y7(p1 G&v\4IO7P05b[RBWtiP9Nz&z{/jq;1 4MzFO㡧WP q t<yׁcE[*ߕIɘ^`ˆܟ@1Qɘ@Ᾰuҭ 2& 63g/Z1Q +nr `Tޣ>6'xo.Ғ~B?kF=.FeZfj%}W+TK:{&eݦ i6\2gt=:oIKOZ$!N8.Vt:pORj;$-qq1|]@]|\H}v i EOZz9M-OjwRot p'@/7hFBӸ.'@-cH\t p_am7tx&}]$]f?Mz( IʼnC*ieؤfݤv,Ik ʁOB@*\2 3r!+ABBʍEVvUQsH*6'5mڳ;D$xkLkՒ=c(?q^́xs=Q`K J:xrD[][$Džv~lY.ԙ-DeJ YJd|=RᢤYi]s[*Oƈ7QE%YljuwQP\@2u`Kj9dufQ붟Z8el)TlC["3-8!̣T($MlTz; 늊Om6ܝT42'/O4e#Ș"gĠ@A"(e`ՒzsP~MFIx} (o o.R[.I$V~ʟ2o|G.J9z)ʟ+Y& ڥApPʤg?7 YVV~ʟڿlOe[|ߙUE}o*h*=g?vaJJ@nt"#j]kE⦫񌊒lCURNqUby0ͯL>rLZzoOF&J6dNamo,Pc%{UzAOKS'du6p%-zAOEf%)G.zAOK{fxCjE|f1UKɊl堧nQܑC^FK4^=-uF0]4=f9(n^EEOACr9x0R툎zV=-{J-6"HDHty(eFq F=BpD9 _qT_#n_y^$ Nꅬ% o8qQKs j&'jj9'\_誧=jE0҉)\{Le)S͑[m)bK EO9'>{HPrZ8N='R-ARt eL;']$Gv_*^[8N?' 4#ݞ"4tcIT蕴Rzx8NZߋ\H I(83*O/\3Z%CDRl S[( q2PIpzۻImRxM> JgWf-#)Ԡ/qS.qa* t6|}[GwLXFK׷UuHm5-‘ TWל ]^iźW+yF=Q:njpow$2n368:njxZ%!m*is֜M7WeX:@W=͇E$2NS0F^ t`_鞖摈q)EOuz)b%lȤt7I 1;F`j5gBo}m T<Bzi^lsӅYЕX.g_9EX@o̺FIObd z<(އlIttL,%AL y? tU3"E U.U tQ3$e_P& 9Egg/>OT"(*<[w~Ly&< hdJ%pQ;MQ&L j7ܢY ^aR k@'uPlaKCDZwuIqFI>3,` 7 q8臈p8A-^s*sCDx5Pq^E̘(ABtv|yIA]s&/{)'qFuyH9g4K.h q{Lx}ʹH9s?XQ13@=s&P\K%9j!Hj" ;fFllF˹H9J~(Vj=s&/ariԠZO眉 Թ1hP ; ɈH?gRz?ui/^% 5@WEL" jɃl}nf %z^n֑17;!A陰-ц+ĶLT/!-]ut8GedrTG0vt|ZQM҄o؆TLT>VP$!g'*5|=I'*ݥR p!>$ϝIUAᏋEew)jVT\ͥ*~DD@I"N1ܖtiEmḨgBο<$-tWP9CQ.`mLC'JeϸG.<"YGc4R<MR4M&:9.<MR# L]trL}h\sE>IdT~9y&rrVyQ6S42'τz5XCB2jD9y&:(nn{} j՞rL1E n-əT{&tFƇndr аǮ;^k:LRkS,#~.tFmbi`߇$$+ZO_x}# >oإ% ?ML>&MmD To5gԱs hcZgU uw栥Lr-z5-I=M嬰˝`1w:aPh|~T:)9({Hq ( Hf eEDΓA+(>E9!M$eP-O띰 aV3JyF5V`f e}}NVn:T[(A"BQQX2 [=RWUmw0c͑*nJfR.y@M{# T^]Gy^^ ҊGftk]$\@8G05M]?y^R^QZC>)0=, }OMm/_y;n5GOAל mׯyURկ(4IcykT)3j#}j*%S\0Qv$ɧis(tzhIP7LlcW{Cܞ t4쥡 ۿ6hHm/g_gC%SyF0E:O"ю gYξ4, Ӏ\#"[AQ F"ڐniЋGa|M L|h$3J͙u|""^ dAv$Uf^?<:ooAT9gOni4 ݖrB[w=s&6,9x7yjr$颧5kvP#}yor%W3$lH%ճ\=oj铆GƣS.9Ӡt0̒<^*E=@#xK"=^ܬJJϩitQ05QWrTTvPC t ZA֗Aȴljr#xX?NTem{HLTР_&OS~0Y.rt9e@Q\,8,#[k{[@3[|X!@CCGb]$E4VQ5L˔)I nrvwTc,3q$e_p&PLKt"},^ADi噐 v9\T4k}޵L9HZؘi>812j>ekě؞+nH#:ZR; (&#eJڍ(Z%/3Ҧc+R7]gPdO/J{) [@ 3osuKk4(6Rp7Pp.itIVl҇wHKk1͒;_mLyՒW2B:|={34`WV7շ~!ؤ]Y@sEEX~w/&P/= ZI<8'uB*) tF-((1 :Q.zj3j~R1Qw~.{>HnC j#ٓ 픅FR+v7@rSؐy( IS_@4 IUpnB^ +Pq3Ljrn"E7_*IR/􋆈Rdž"qCq__-iYsqj4:__he7|-<7S2>l(뒢: gWuPac׏i$2__Ęv7]&jPA0'IAZu@ şΨV DOjGFwRtF5МT߈Er3*Ut`a–} [Z@IOgT-rۨe?Q@zz6$*'IJ莼dF?ևwtQժP$3f-RyOJ@EB:^S C-0I/v#w|Na: njIٓ+'& Hgpm(e]T*LgQlm9ZԻi>'_3D4cF)IV3aO [@7_4ܛF0|(Rd4˹ (ҁԳIa;hNjk;a|]$POFaKNƣRS^j&}H  Ͻ9PCN!P4"HZzs@/f pW'1Ț3fed͵`xR)}9@T\t3.Ӭ>+1IR}~g4a-beƄZdSV:beLA2s&qFV/Q=Fјs&vP˵9htYsE/)5|z%]3^H;?l}x]3>xBaӨ;1z&m)'שіO?ݘ{ fJ.)רb$;Twɷ"⹣J%PHb?T D6T a'ZER Z-ZΤU ~@)wg:`]r$.gIK{ :u ]@sE1~Z9e'Џ4htP8p7L֮:6Ԝ F: ҕ8QiJp=W2:IBDbҠ֫l1s%5y&u;&wr<,@*τ (ut{sS!6iw8Y]re3YQ\qܡP@=YrXJCšG0$_o|8Da8PHrKڛC*($e%Wi>Nj΄KGWwiNAJ P|ؕ_lbӀ#](p1 s0FE}ڕ_@=<S+iSYE'EҼ+Et/ax_vPVtNy$](y7\LI[)u'P/t}Rΐ%&u'-Zkoz$͟p4l ӘjnW&%!PNYUӻ{ٱK'BA@#{b !N6ral4&EҴ;(F:fP@;4ϬvB 4%]NW&zw@cL('B΍-eN3a7P%硒UZ5*=vw"h!,3 bPjěY"ʨ TKw'B%h #g=KH#&P}3ʊJQs˴劉a3f\@鹒, tYtF:Q1݅Q(C0e'׌S/*eU_!$FkT/t:lFµ.f6īÐNgT}TQÐNg$gŊ81+*Ψ*iFPՉRjnPfDbw-n' =x3τeL{G7CtQgʥ:WX?_&EtP~ה?0Ł0S{a]$MB΍3̧)C_@ٞ J?T-=V|G=A9(^ łMG_$< MxZ@g.&b|(5dG^FO;#qRFNjq:-Wg~)٤9/̽9O:5B9iPO9""JSLQZܛc%=cVf-IH-\y.VssoM\~#݉-7I{ :e!-Y:|A<@t;I RxMYHDUTgk~xHD՛3!WKi`N@D3__T9VP>P)AW:uP/9h|C3__T96X-a61e.*zsN'Ptחd*e$ tՠi__ESا*A0ʇ́x4$]lUzj9R"#mc7.T[!rG)P=>pOԥ@=5@1Lf"mN[XѠiuЫ`)`zJ8h,Ra8D)އ8X@/!"Rw cV eL(m®5I*8@qq$E h.c:@ᥴHq`D oT7#Y6c͙xs~}賂=hcJѠq/^Iz YaPaaIdaTaL򰡧BX4VQ!Ag'䒔aP@ܩ#[tl"Wi#z.: hbv Ji) tБ"=Ŏ3TtYБJ;`hfhI2ulmp53pC=?4^Б)=~^ ^sjTQ.y'˔%;8LhH#n $77@W_ wotU[_2IPjRs h tt-V)L|G;haxCsLGCiv\!  SfԞ:? (Xeu[]fźPb\#SGOz]$=5Pc==S:v1udZ)Wut"zQ2v&)A6nm?O Ś(lI9)T.@Ӕx:QKrTabni Cx6ix\JҌNTP1L-+( -yA 240@s zeIj-R ?{]$[4h`8$LLk򇉹E|ԋkzԜgUKJpF5IRa7ȓN|%j^Da@ٟVII[C!*َpՒƩ>jfVO8U0o.( ICT^I8GiPO|PgLݱI>J.& OQs&Рf~Pe9ח7N2qzmVi8`9gBfQ~x\1EO眉URja t{.wF[^)6kUOZ)M HL Z[Z;jOoaOatTT:Y}FE~FTJS )?nj,ȍ^z%Rd P`0&O³]$=Y}YrzZ%>,\tQtb=Mqd䕯[FJ()s<1lxM C$@֗NV_VnDS0VӇZNV_[Sl9IzdE+- ~{s_'SbAMmݔY͡A3myi27Mn A{so9C6iݥ"׷&mH@x@soq&Ye UZT-b ͱJZlPl`>FZv3s͡AIOS'*n[^IOTmҕg.ia3c6W?N.A?Q qͱHjSnY+Ng;PlnP&P@k'3%*>kI+AREl*m ?Xy0jI 齡"M@y{F &P-L\;]:QpFqș %c9d6P#b@Odr9dX 1c]s x~dza4pȘs`,L\0<>3% .Cl( IگYG)$M C ruMvg@_kCle&aa`Vm.$4Oc6t2eskA$mlwZ/!if>_3i͡Aʶ0T3Iso1_8Pkdš@I1@4Bn~+rc&ͽ9vIo<7fpmtQrp̴1R29L5gNOv$s```>oOAÊ*l*%~ -`]f*'%(4a C![2v6 =fp;pX}Pd:{t;z9$ճob]RYϾg e]f.6^X|">s`+ϙ/2}?5To}.AAW̎i2vU[)sSAbVƦfKƦJ3kSSw ,⅍YjoP~|tQ~;Ex7P QP[BH(sE S.-NlsBg.o"P08PߩJԒjSwM4K26 ߆2bmp%vBkemꯏtIӒ#YRvl]Hr1/vckd3C0{BF/Նy&;{5(bG_ Xo"!plͅTA 'F~\x%<ԱJ[ԝfEO=_A(iTi͙x}2-fcY@&]s&Ab('L \HD}ϠdF&=\N9͟w t)YΙX@TEx^m04sz}<"S&)yFuѽ+U?]Ι@9?3Zgm$+cFi;G!S}5p5UVYm pʄ5oJCKe#;(P, 5%iͱj 3=o&b3 E4e=td*'H4e* ``Rk(jI{shD*eRkbYHZ-$Fߊ:ZbAacOJ;vURgœ@ي `YE}LcLqB+ش%̌ao,Ӝv);}LSJ~Q1]4m_ΟiG²0KY,@I__eҕVśISU5O/E5yGiPþ҃!kPyGiPD2* LAwITMVQ"eTϏq$D ~^r~O-J׳(1@9U4&Ibu3B=@=J:qG0M@" t4jy4K"d*Z+y.ʟ{l(vBIE' RJXX\Z51_&vl!L/rǿ닳kjl4p!g,jy&}ѿ/Vtx3τ&IyX3f?I1]tXA܃?NJrE]j]$ %c +Ǽm}BР<2AI&;;$zZҮ~wMRtu 袧yZBD-zZv=mrjNTGI|3& -uFxeZe(s'c"_f7&(XT9ggGz/]RxVnR- !AInLI"=I\)ZwcI+|0O^ݘhc$`Z)A &Џ4h܍Z f?>o֠i7&ژ Km[;Ԏ wc2UfwLz-5VP-%VZl실H_5_#gPi(e<E!3_#5(y{IL@I|ԯD%EwrW9~)CC+I=6';Qb h"%0:h:]l(nRknqj"HwKM (uL~+Im$,cdNWy&&Ib z~GZ6PbAa0.=@b/Aa )}K~Su5ϕgB*a %7|ck VQ3:M+.hXCn9Q(ZUđb'6o,zqI.99E2oVq7XCY*QتfP@^9V8Ds-iګ8 'Ff%34Uc&Bb(ṟFE!BJ.w,:=:=4f!;ٿGX t٥9=Գ:CIhER{0{4ص3K+(9S.PGh@(IzJ`׿@$$_I`(rEPʓ3!^$fOY+-H.+>5кNL9,7BWAWY7;ʤ.iI4GVW,_]^]T*,uFRkn+Z$*gu5[\H=KT|yL,V+=(V_Z%Ț3*"H8|<% DFI52E@w53vIكԌ?~;104eFÉi,!iUpݔlkߞ#);@SBc]%Aep(32[=G$!SV@q)&ײ8iT(LڷcXRZkВeZ4K鋉lPj T/rȔf֪xBGS i9dvP{/x6j>T)A}OڝV6 Ry(.-ʴ.U/gs<\3J{5dAL?3@/"-UjШAI!~!)=l Ь@kJJ~FHBHTRIkйW8oI&Џ4=tP\qӠ~zSH Pu9+7CP+Ꮄbl=VI<@X!%}ApS-y^fԒV4?quJ,j=-3t`oU"i:ut8I.A]4&齇@00>Ӕh3avPO F@HH8nHby^%]K0}E{Hs0md:e4?ܩ~>jyg#-Q:\ET"ok@1jxנS}Xpx);)83Gm."ҁq4k2jh#j=&PU U_AttKIؖR{s.)<]eF-OJOLTw}V( $ڹO"AO< 41YhIЉX@1ʕl]$U< XFLts tS3H\xEzkz%zy&P12z(}$&PgBFyP)k=qo%vBl7j8nUzj!uZhdIP~HcrKra^l4qMb=j Av'v/crKq!FUJVO~K6Uǻiqt7mފ9Ts"Ԏ(tSNw,gTjZE_ "?M'YrKp'Z]4 WIwt7ͲK19nZj#(jCj}[V8֠t7./I. KQx7-gbTayfIB=-}UNw"*sLmḺLnZ9MK5bNNFwl-{{VPd^ww]lY@InZ_e$LX?GOJ^VI@6%mK Pc=x}/. #-'Q~N>I[w y_3:誧'__%D4H&骧'__{}ܾxe&@Z@='__r6H4|}ѧ=k^Z2fOgkIP+ cU*|}鉺rw4wARƓ϶IfLǢSԞ}}kH ҁҠƓO@##5?SB.6.|}otlhFj]^ӓI l)%qY$]khɢ̮!Og yV|H4ݣgAS24Jc7sw+iG-a"?r%I܃vG{j 8yAb\@I{~1)*tQ4ݣ1 ?hfo(}sG{H*BnCL- zCJWAs<yJr;頚Ԝ7PrU&,T4p>l}>5>9) ٥f*Zf<9) I@seJVH HzBnWE*.|$颧$')#A!̑OYH  0z9תxOC#iƋ$c T|}!̑,eq\#gs;JYHH75QLMRsE6HdzjE9 iT+>& vEʜi C9JZ9->XNi8qOmeLEţfPп "Ip#i[X*샟xm:j!TERw"y}Qڎ7gWQs/*_Sdjcїt(Ae@Nl+y}t[)# w-+h}_%-[Z;P/53P)e[1K) *}3u KtS]O+h[4'82:425aS<#! JjzZAiJhIjz4."w{phhP7?iwQOZs6@?Z@AO<Z~X3f+=5X׻`VhRh! k j5h(u~‰b W .YJ+ wMOK Kr9<9RvP$>gF>R5]O7P;'d-颧r hd5NٲGZ>[66j2REQAf6S4?uV)*U/8R%JٮR;}ֱI7J*KM'kdrtS|P:>~TT t[]<*UYȏpN:QJlD FSq~biAmW6 L7iU*FGEײ'kw to,4Kn]UʆR  CZxla!R=4 (*"M3jϖԦK^6|LYsAW/FB`Q~'wmZZ..LIE[~ѡUҼ[VqvPuMRz@\R8mkDbH,pd2,3Kò}3u\ߤ}\AJ;َ_%5E:%& >Q5i~N~gU1ASyedgm~)ߒ:RcBf6 y(v|,aRBvoJ8uLxϙiF5Gl4CUR7Pd`L )r!eTY]3R6]6ZWP+QRJ?w[$:U7i7Z i`vԣ[H:ΨMR3fH\ͶӴ.gmzԱ\HDgC 3AFQP 7xL4Pt&Xh]~TڹI4tJxHTDA6$'#K 8Iphe7I%\n'YzHph2-m.̝0P""Q+dBgoÔMSG฼I{~ZIicwE"EVr!W$GYOza{l'le;{C.KD u%e8..<Y2Ip-Qo* WpcQ׿U 5cjt,14Ы0W|?7'KD #n2_d+D5bvchKDF3rsa0jͥi g~@4Vc߿A?~_3`L͇//C蚜n8f^ +@/oޗ[Q#@厠`9mR0@3d PJ#½dM~ GI2 7]crK+*' d%T?kjиrEp2g{k=M'дGIAh֨sfr4.O]#lhY@y=w:);+AeEhNYut]QFrE{(W[DSPA;JK+G PA?;ilPAc$I*\SتR8vgPf)7bBJ<4jP@{Xsʄ)oY0fP{Yv)l{ᔉvO-L+MRqٳ_D e+3-RZy+0u:Sջԧ=QF8 =hܗN&P{ǟ~|@Mva6qhRtw6@hPx_tf_nZ 4>IjysD>Pa!$gs(h~r4嬌s@˓bB +@D-㸤ⰵ*H'h|5ϠE&ؾ6MO 4\ ;`) }PoIxt%} Aӊ DҘ`ouO+ S#H˚NP/m3HiE%!bm=Q.2Ɩ3O+^laY"Iv*Ϗ2Ч4$d5 }ZQqEa_c&EHuO+ ޞ{e$lwGIЧW4t5ԙVT$ ڢ΅;<@VKC5%r{l=>QAʬSNn|! <9m=>(x{-cLKD@3I:9iH7@VuIQ6iE3* aa{"oGk}ZQqE]dcsh2u.y}ZQqERoyxqI}j@Vg\Q uڧVT&! ^خ<6RpiE[H"O+?QۢJzhM"Ƅ{ZQiE7u[sO+?( p%RiESh%vA@rO+?(v+k@VT$eOt$%*AVTx0^\Q)n3oʹϨ[30L`Yx:QO+*(+9y%{")neƯx%ZQ/R (ʼnI8΅( =UV Hy}ZQL6YpQlGYq"oO-9O!F'piE[Hg ki fgg/\ycjЧ+T3$ia͸8iEupǜ(_}kׅWTbݨVZe~ZQCfhnA8tiE"!+\&WT^VT _HKLečJh1> Ϩ&$o4eVTz\QG>FӊB:B4Ҵ˘>x&vIϓFӊʏV!  ЋQAЧW$xZ2QO+*?(0,rI(!F,gDӊ?ᙈRBUAO:=d!sR6Fmӊ构6ZIiE{Ť;yILT9>>Qdm~l 4?xFE{ R[;NW.=b 覻ӊ*O+ } aE5nӊ*O+*I\Ivk?RO+t(#͔D .?Ykg"O+<<)q!yJ|(]c<ʋǴ0=>Oӊ*g*Ax. -tτ>()\kޞ,r{xK<?4?({=z&Xi]ש6VT~XQ0\H`ِ?&E[_~XQH~~F"Gqmb|)iyXQzj&JnJF!qaE'(a&Sm ~yXQz<.hUې| /+^O+ [=p;#l_)+ MKo8uLF2cHe8fn$@-E/O+<(VYn'ăZvS<(3d@m}ErzF},;VpC,.+꿼|W/|o޾|Ż^??o۟oW_yz˿_Ӳ,?ۯ~wş3y߽,탟o{g'|;{G?~L݇*}ZG[}* mM*?KؽD탟|탟?(#|{ؑ afgK|~"{lq+s};9( gϦ"9 #t>2sSx}VnÛ~탟;$[u9StD'ۇmtS0wg5G%(簩 X|~zwCJ|axAq>Wn!+>'TX5w2sؑesG9=VusзXusXOc|aÏ4w 9L30wP}ËX'd: w#|1#o9i9Uszւ9l5 6}i9 /}[M9B9İpT}9a탟 9x_}{'`s}v|FJ|axs}|I$|龐Eq>EBoZ^>^elnPꨓô~Nw'` j2͵~K~bRi9i9,Rm"|MsV\\+y =_E:$NQśBs]9׃~W ~x?QW*"5DV*"pS?,\ۅ}N[5_~NS_;}IT⩟w6Rn9M}m>G֝9ioZo>G4fB9[m&9HA&nÕ}NPə>DŽp[6U|ʶ9lAenHepwLe"cQe6ڨ%~h([>?/oVGy{]W^8W^Oq)X]ʇgG24/5R'7 w .nЁ|^=5^=@~^=@5x^O=` +6nN׹j90{o0akBYyI{Qj2kdo0p:V-<$ܺd2#FMt$^?.`$l>$ؘ0p٢`$(0pӢަ`$AphFYt#I,rH%LQ3z$IHa$zj5I𳸇a$h{I^ƥ@`$Z=Fқ^?СzF{#*z.F# w)[Hsϗy-}WcH2a$۞_?V0({F=FOb|T˭H1<$ܜ%#{{$LJS9-x#I #-wsw0# %i[N/rϏ`?D0pO"`$h:=$\ m?$ATI4O# #r"[^܍ol9I^凑y-p#y?0H# "rZ~F2?ig~'K=n#:0p"`$0$HH5< ?jy]?*0S-wjA JivUN_|oׯD3OO/}~{ۯO߼ }߿w~!ʟwVOſU8~xݷ?xD]&_67߾J</xoI u?V?<7_??WW/M;~u~o,7z_?7B????=N/'sq}ׯ{u_n{}/?W_} ?onn)o?{C׿AvڕwYw|J3nއRm;?;_' Oc|{Yow?~w /xs|?}jϨH-N(J) , SAME NUMBER PER 100 RESIDUES . 0 0.0 TOTAL NUMBER OF HYDROGEN BONDS IN PARALLEL BRIDGES, SAME NUMBER PER 100 RESIDUES . 65 47.4 TOTAL NUMBER OF HYDROGEN BONDS IN ANTIPARALLEL BRIDGES, SAME NUMBER PER 100 RESIDUES . 0 0.0 TOTAL NUMBER OF HYDROGEN BONDS OF TYPE O(I)-->H-N(I-5), SAME NUMBER PER 100 RESIDUES . 3 2.2 TOTAL NUMBER OF HYDROGEN BONDS OF TYPE O(I)-->H-N(I-4), SAME NUMBER PER 100 RESIDUES . 4 2.9 TOTAL NUMBER OF HYDROGEN BONDS OF TYPE O(I)-->H-N(I-3), SAME NUMBER PER 100 RESIDUES . 0 0.0 TOTAL NUMBER OF HYDROGEN BONDS OF TYPE O(I)-->H-N(I-2), SAME NUMBER PER 100 RESIDUES . 0 0.0 TOTAL NUMBER OF HYDROGEN BONDS OF TYPE O(I)-->H-N(I-1), SAME NUMBER PER 100 RESIDUES . 0 0.0 TOTAL NUMBER OF HYDROGEN BONDS OF TYPE O(I)-->H-N(I+0), SAME NUMBER PER 100 RESIDUES . 0 0.0 TOTAL NUMBER OF HYDROGEN BONDS OF TYPE O(I)-->H-N(I+1), SAME NUMBER PER 100 RESIDUES . 7 5.1 TOTAL NUMBER OF HYDROGEN BONDS OF TYPE O(I)-->H-N(I+2), SAME NUMBER PER 100 RESIDUES . 9 6.6 TOTAL NUMBER OF HYDROGEN BONDS OF TYPE O(I)-->H-N(I+3), SAME NUMBER PER 100 RESIDUES . 14 10.2 TOTAL NUMBER OF HYDROGEN BONDS OF TYPE O(I)-->H-N(I+4), SAME NUMBER PER 100 RESIDUES . 1 0.7 TOTAL NUMBER OF HYDROGEN BONDS OF TYPE O(I)-->H-N(I+5), SAME NUMBER PER 100 RESIDUES . 1 2 3 4 5 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 *** HISTOGRAMS OF *** . 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 RESIDUES PER ALPHA HELIX . 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 PARALLEL BRIDGES PER LADDER . 0 0 1 1 1 1 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ANTIPARALLEL BRIDGES PER LADDER . 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 LADDERS PER SHEET . # RESIDUE AA STRUCTURE BP1 BP2 ACC N-H-->O O-->H-N N-H-->O O-->H-N TCO KAPPA ALPHA PHI PSI X-CA Y-CA Z-CA 1 1 A P 0 0 64 0, 0.0 2,-0.5 0, 0.0 91,-0.0 0.000 360.0 360.0 360.0 151.2 18.1 13.5 43.7 2 2 A N + 0 0 89 1,-0.1 89,-0.0 2,-0.1 44,-0.0 -0.903 360.0 172.5-124.5 100.5 20.6 16.5 43.6 3 3 A F + 0 0 1 -2,-0.5 40,-0.2 110,-0.0 -1,-0.1 0.524 40.0 127.0 -80.0 -9.9 21.1 17.8 40.1 4 4 A S + 0 0 28 41,-0.1 2,-0.3 38,-0.1 40,-0.2 -0.158 37.2 69.9 -55.6 140.2 23.2 20.8 41.5 5 5 A G E S-A 43 0A 19 38,-2.5 38,-2.6 2,-0.1 2,-0.6 -0.868 82.5 -67.6 145.0 177.2 26.6 21.5 40.1 6 6 A N E -A 42 0A 78 -2,-0.3 131,-2.8 36,-0.2 2,-0.4 -0.958 54.1-159.8-104.9 115.8 28.8 22.7 37.2 7 7 A W E -AB 41 136A 1 34,-2.8 34,-1.4 -2,-0.6 2,-0.4 -0.824 13.0-164.1-107.0 141.0 28.5 20.1 34.4 8 8 A K E - B 0 135A 92 127,-3.0 127,-2.3 -2,-0.4 2,-0.1 -0.933 28.2-112.8-119.6 141.9 30.8 19.4 31.5 9 9 A I E + B 0 134A 26 30,-0.4 125,-0.3 -2,-0.4 3,-0.1 -0.449 32.7 170.7 -78.1 144.9 29.7 17.4 28.4 10 10 A I E + 0 0A 86 123,-3.1 2,-0.3 1,-0.4 124,-0.2 0.456 69.4 21.2-126.0 -12.2 31.3 14.0 27.7 11 11 A R E - B 0 133A 141 122,-1.3 122,-2.5 2,-0.0 -1,-0.4 -0.954 53.6-178.8-159.0 138.7 29.0 12.7 24.9 12 12 A S E - B 0 132A 48 -2,-0.3 2,-0.4 120,-0.2 120,-0.2 -0.982 9.1-177.7-140.7 127.1 26.6 14.2 22.3 13 13 A E E - B 0 131A 95 118,-2.5 118,-1.5 -2,-0.4 -2,-0.0 -0.986 62.7 -1.8-128.8 138.0 24.6 12.3 19.8 14 14 A N S > S+ 0 0 64 -2,-0.4 4,-1.6 116,-0.2 5,-0.1 0.655 75.6 137.6 65.5 22.9 22.2 13.4 17.0 15 15 A F H > S+ 0 0 23 2,-0.2 4,-1.9 1,-0.2 5,-0.1 0.940 73.9 44.8 -66.9 -48.6 22.4 17.2 17.7 16 16 A E H > S+ 0 0 67 1,-0.2 4,-2.0 2,-0.2 -1,-0.2 0.902 111.2 55.1 -61.6 -39.6 22.6 18.3 14.1 17 17 A E H > S+ 0 0 91 1,-0.2 4,-1.8 2,-0.2 -1,-0.2 0.857 106.0 52.0 -60.9 -36.1 19.8 15.9 13.1 18 18 A L H X S+ 0 0 1 -4,-1.6 4,-1.7 1,-0.2 -1,-0.2 0.921 109.6 49.8 -65.5 -43.2 17.5 17.5 15.8 19 19 A L H <>S+ 0 0 5 -4,-1.9 5,-2.4 1,-0.2 -2,-0.2 0.852 106.3 56.4 -65.4 -32.2 18.3 20.9 14.3 20 20 A K H ><5S+ 0 0 103 -4,-2.0 3,-1.5 1,-0.2 -1,-0.2 0.929 106.5 48.6 -65.1 -45.5 17.4 19.6 10.8 21 21 A V H 3<5S+ 0 0 53 -4,-1.8 -1,-0.2 1,-0.3 -2,-0.2 0.860 107.3 56.5 -62.3 -36.0 14.0 18.5 11.9 22 22 A L T 3<5S- 0 0 10 -4,-1.7 -1,-0.3 -5,-0.1 -2,-0.2 0.481 120.3-112.1 -75.2 -4.6 13.4 21.9 13.6 23 23 A G T < 5 + 0 0 63 -3,-1.5 2,-0.4 1,-0.2 -3,-0.2 0.696 58.8 158.5 84.0 20.3 14.1 23.5 10.2 24 24 A V < - 0 0 28 -5,-2.4 -1,-0.2 1,-0.1 -2,-0.1 -0.661 41.2-117.3 -79.6 130.0 17.4 25.2 10.9 25 25 A N > - 0 0 92 -2,-0.4 4,-2.5 1,-0.1 3,-0.2 -0.143 25.5-100.1 -67.0 161.3 19.4 25.9 7.6 26 26 A V H > S+ 0 0 97 1,-0.2 4,-1.9 2,-0.2 5,-0.1 0.835 117.9 43.9 -47.2 -52.0 22.8 24.4 6.7 27 27 A M H > S+ 0 0 148 2,-0.2 4,-1.7 1,-0.2 -1,-0.2 0.862 114.2 48.8 -67.6 -38.7 24.9 27.4 7.6 28 28 A L H > S+ 0 0 97 -3,-0.2 4,-2.6 2,-0.2 -1,-0.2 0.872 110.3 54.0 -68.8 -34.0 23.2 28.2 10.9 29 29 A R H X S+ 0 0 26 -4,-2.5 4,-3.0 2,-0.2 5,-0.3 0.924 104.0 54.4 -63.4 -44.3 23.5 24.5 11.8 30 30 A K H X S+ 0 0 164 -4,-1.9 4,-1.6 1,-0.2 -1,-0.2 0.928 111.7 44.7 -54.8 -47.3 27.2 24.6 11.2 31 31 A I H X S+ 0 0 93 -4,-1.7 4,-1.9 1,-0.2 -2,-0.2 0.935 114.7 48.3 -62.9 -48.6 27.6 27.5 13.7 32 32 A A H X S+ 0 0 28 -4,-2.6 4,-2.6 1,-0.2 -2,-0.2 0.914 109.1 51.5 -61.0 -48.3 25.3 25.9 16.3 33 33 A V H X S+ 0 0 49 -4,-3.0 4,-0.5 1,-0.2 -1,-0.2 0.880 110.3 48.7 -59.1 -41.5 26.9 22.5 16.3 34 34 A A H >< S+ 0 0 61 -4,-1.6 3,-0.8 -5,-0.3 4,-0.2 0.933 115.2 43.9 -65.9 -45.8 30.4 23.9 16.8 35 35 A A H >< S+ 0 0 4 -4,-1.9 3,-1.2 1,-0.2 22,-0.2 0.878 110.0 56.3 -68.1 -36.3 29.4 26.1 19.7 36 36 A A H 3< S+ 0 0 10 -4,-2.6 -1,-0.2 1,-0.2 -2,-0.2 0.552 88.7 76.5 -73.9 -8.6 27.3 23.4 21.3 37 37 A S T << S+ 0 0 74 -3,-0.8 -1,-0.2 -4,-0.5 -2,-0.1 0.667 103.3 35.9 -76.7 -14.7 30.2 21.0 21.5 38 38 A K S < S+ 0 0 129 -3,-1.2 -1,-0.2 -4,-0.2 19,-0.1 -0.500 80.2 163.6-135.8 65.0 31.7 22.9 24.5 39 39 A P - 0 0 13 0, 0.0 2,-0.5 0, 0.0 -30,-0.4 -0.429 32.9-139.6 -84.3 157.8 28.9 24.2 26.7 40 40 A A E - C 0 55A 56 15,-2.1 15,-3.0 -2,-0.1 2,-0.5 -0.988 25.8-169.0-111.4 121.5 29.2 25.4 30.3 41 41 A V E -AC 7 54A 7 -34,-1.4 -34,-2.8 -2,-0.5 2,-0.5 -0.976 9.8-176.7-119.1 128.1 26.2 24.2 32.3 42 42 A E E -AC 6 53A 56 11,-2.5 11,-2.6 -2,-0.5 2,-0.4 -0.984 2.8-175.2-124.9 124.3 25.3 25.3 35.8 43 43 A I E -AC 5 52A 3 -38,-2.6 -38,-2.5 -2,-0.5 2,-0.4 -0.963 6.0-174.1-121.0 134.3 22.4 23.9 37.8 44 44 A K E - C 0 51A 114 7,-2.2 7,-1.8 -2,-0.4 2,-0.4 -0.998 10.8-174.0-126.7 121.9 21.1 25.1 41.2 45 45 A Q E + C 0 50A 29 -2,-0.4 2,-0.4 5,-0.2 5,-0.2 -0.969 17.1 177.2-122.2 135.7 18.4 23.0 42.9 46 46 A E E > S- C 0 49A 166 3,-2.5 3,-1.7 -2,-0.4 2,-0.5 -0.849 71.6 -60.6-134.0 90.9 16.4 23.7 46.1 47 47 A G T 3 S- 0 0 51 -2,-0.4 -1,-0.0 1,-0.3 19,-0.0 -0.529 121.1 -13.7 71.2-119.2 13.9 21.0 46.5 48 48 A D T 3 S+ 0 0 67 -2,-0.5 19,-2.4 -3,-0.1 2,-0.5 0.233 116.9 99.1-101.2 12.8 11.6 21.1 43.4 49 49 A T E < -CD 46 66A 69 -3,-1.7 -3,-2.5 17,-0.2 2,-0.3 -0.888 54.3-172.5-104.0 129.6 12.9 24.6 42.3 50 50 A F E -CD 45 65A 2 15,-3.0 15,-2.1 -2,-0.5 2,-0.4 -0.901 22.3-170.5-127.8 149.5 15.5 24.7 39.6 51 51 A Y E -CD 44 64A 41 -7,-1.8 -7,-2.2 -2,-0.3 2,-0.4 -0.995 16.4-175.9-132.3 124.9 17.7 27.3 37.9 52 52 A I E -CD 43 63A 2 11,-2.3 11,-2.5 -2,-0.4 2,-0.5 -0.980 5.8-174.6-131.1 119.3 19.5 26.0 34.8 53 53 A K E -CD 42 62A 71 -11,-2.6 -11,-2.5 -2,-0.4 2,-0.5 -0.967 0.6-175.0-115.1 121.8 22.0 28.1 32.9 54 54 A T E -CD 41 61A 32 7,-2.5 7,-2.3 -2,-0.5 2,-0.4 -0.969 11.8-170.1-118.9 119.0 23.5 26.7 29.6 55 55 A S E +CD 40 60A 40 -15,-3.0 -15,-2.1 -2,-0.5 2,-0.3 -0.888 16.2 157.5-120.5 137.5 26.2 28.9 28.0 56 56 A T - 0 0 29 3,-0.9 3,-0.3 -2,-0.4 -20,-0.1 -0.899 55.0 -98.1-140.6 168.5 28.0 28.8 24.7 57 57 A T S S+ 0 0 113 -2,-0.3 3,-0.1 -22,-0.2 -21,-0.0 0.701 122.9 34.9 -62.8 -20.9 29.9 31.5 22.6 58 58 A V S S+ 0 0 85 1,-0.3 2,-0.3 -26,-0.1 -1,-0.2 0.543 126.6 14.3-112.4 -10.4 26.7 32.1 20.5 59 59 A R - 0 0 97 -3,-0.3 -3,-0.9 -24,-0.1 2,-0.4 -0.899 52.0-169.3-169.0 135.3 23.8 31.7 22.9 60 60 A T E -D 55 0A 67 -2,-0.3 2,-0.4 -5,-0.2 -5,-0.2 -0.986 9.4-169.0-129.9 134.7 23.1 31.5 26.6 61 61 A T E -D 54 0A 51 -7,-2.3 -7,-2.5 -2,-0.4 2,-0.4 -0.957 4.9-170.6-124.3 144.3 19.8 30.4 28.2 62 62 A E E -D 53 0A 112 -2,-0.4 2,-0.3 -9,-0.2 -9,-0.2 -0.978 10.4-175.8-133.9 117.2 18.7 30.7 31.8 63 63 A I E -D 52 0A 20 -11,-2.5 -11,-2.3 -2,-0.4 2,-0.4 -0.892 10.3-166.6-118.8 147.4 15.5 29.0 32.9 64 64 A N E +D 51 0A 109 -2,-0.3 2,-0.3 -13,-0.2 -13,-0.2 -0.987 23.9 152.5-130.4 122.4 13.8 29.1 36.3 65 65 A F E -D 50 0A 10 -15,-2.1 -15,-3.0 -2,-0.4 2,-0.4 -0.977 38.3-140.1-149.7 160.9 11.1 26.6 37.1 66 66 A K E > -D 49 0A 82 3,-0.4 3,-2.0 -2,-0.3 19,-0.3 -0.972 44.0-104.7-117.8 132.7 9.3 24.7 39.8 67 67 A V T 3 S+ 0 0 16 -19,-2.4 19,-0.2 -2,-0.4 3,-0.1 -0.410 107.2 20.4 -59.2 130.3 8.3 21.1 39.0 68 68 A G T 3 S+ 0 0 48 17,-2.7 2,-0.5 1,-0.2 -1,-0.3 0.378 103.5 101.8 91.4 -2.6 4.6 21.0 38.3 69 69 A E S < S- 0 0 111 -3,-2.0 -3,-0.4 16,-0.1 16,-0.4 -0.957 74.5-116.4-119.7 127.6 4.2 24.7 37.6 70 70 A E + 0 0 126 -2,-0.5 2,-0.3 14,-0.1 14,-0.2 -0.295 39.9 168.6 -62.3 140.7 3.9 26.1 34.1 71 71 A F E -E 83 0A 25 12,-2.4 12,-3.2 -6,-0.1 2,-0.4 -0.902 30.8-112.1-143.5 174.1 6.6 28.4 32.8 72 72 A E E +E 82 0A 112 -2,-0.3 10,-0.2 10,-0.2 2,-0.2 -0.936 45.1 135.3-119.4 132.7 7.8 30.1 29.6 73 73 A E E -E 81 0A 25 8,-2.1 8,-2.4 -2,-0.4 2,-0.3 -0.644 46.1 -93.1-144.9-154.3 11.1 29.3 27.8 74 74 A Q E -E 80 0A 83 6,-0.3 25,-0.0 -2,-0.2 2,-0.0 -0.963 28.5-111.5-135.1 153.8 12.2 28.7 24.2 75 75 A T > - 0 0 1 4,-2.6 3,-2.1 -2,-0.3 6,-0.0 -0.283 47.6 -93.9 -71.7 171.4 12.7 25.7 22.1 76 76 A V T 3 S+ 0 0 54 1,-0.3 -1,-0.1 2,-0.1 -57,-0.0 0.849 128.4 51.8 -56.9 -37.1 16.3 24.8 21.0 77 77 A D T 3 S- 0 0 49 2,-0.1 -1,-0.3 1,-0.0 -2,-0.0 0.327 127.9 -97.4 -83.5 6.0 15.9 26.7 17.8 78 78 A G S < S+ 0 0 23 -3,-2.1 -2,-0.1 1,-0.2 -1,-0.0 0.611 72.7 141.1 93.1 16.9 14.7 29.8 19.7 79 79 A R - 0 0 64 1,-0.1 -4,-2.6 21,-0.0 -1,-0.2 -0.765 54.5-109.8 -96.9 133.7 10.9 29.8 19.6 80 80 A P E +E 74 0A 50 0, 0.0 20,-1.6 0, 0.0 21,-0.5 -0.292 46.8 167.2 -58.4 138.3 8.8 30.9 22.7 81 81 A C E -EF 73 99A 1 -8,-2.4 -8,-2.1 18,-0.2 2,-0.5 -0.957 38.3-118.4-150.0 160.5 6.9 28.1 24.3 82 82 A K E -EF 72 98A 60 16,-2.5 16,-2.1 -2,-0.3 2,-0.3 -0.910 38.2-165.0-100.8 129.3 5.0 27.2 27.5 83 83 A S E -EF 71 97A 1 -12,-3.2 -12,-2.4 -2,-0.5 2,-0.4 -0.889 17.2-169.4-121.5 152.9 6.6 24.4 29.4 84 84 A L E - F 0 96A 43 12,-1.4 12,-2.0 -2,-0.3 2,-0.4 -0.956 10.3-159.2-142.2 117.6 5.6 22.0 32.2 85 85 A V E + F 0 95A 0 -16,-0.4 -17,-2.7 -2,-0.4 2,-0.3 -0.800 14.0 174.8-100.5 138.7 8.0 19.7 34.0 86 86 A K E - F 0 94A 129 8,-2.4 8,-2.6 -2,-0.4 2,-0.8 -0.944 39.0-104.1-136.9 158.9 6.9 16.6 35.9 87 87 A W E - F 0 93A 77 -2,-0.3 6,-0.2 6,-0.2 3,-0.1 -0.765 29.3-178.2 -84.3 111.9 8.8 13.8 37.7 88 88 A E E S- 0 0A 121 4,-2.5 2,-0.3 -2,-0.8 -1,-0.2 0.875 78.2 -15.4 -73.2 -40.5 8.5 10.8 35.4 89 89 A S E > S- F 0 92A 60 3,-1.7 3,-1.2 -3,-0.2 -1,-0.3 -0.870 89.8 -77.8-147.6 178.8 10.4 9.0 38.2 90 90 A E T 3 S+ 0 0 148 -2,-0.3 3,-0.0 1,-0.2 -3,-0.0 0.832 129.7 27.0 -53.9 -37.5 12.4 9.8 41.3 91 91 A N T 3 S+ 0 0 59 1,-0.1 22,-2.1 22,-0.0 2,-0.4 0.218 112.5 75.7-112.6 15.7 15.6 10.8 39.3 92 92 A K E < -FG 89 112A 38 -3,-1.2 -4,-2.5 20,-0.2 -3,-1.7 -0.974 53.0-169.2-137.7 122.3 14.0 11.8 36.0 93 93 A M E -FG 87 111A 0 18,-2.6 18,-2.0 -2,-0.4 2,-0.4 -0.837 8.1-161.9-106.2 143.0 12.2 15.0 35.0 94 94 A V E -FG 86 110A 39 -8,-2.6 -8,-2.4 -2,-0.4 2,-0.5 -0.986 1.9-157.3-125.6 138.7 10.3 15.3 31.7 95 95 A C E -FG 85 109A 0 14,-3.1 14,-1.5 -2,-0.4 2,-0.4 -0.966 1.7-159.1-122.0 124.5 9.2 18.6 30.1 96 96 A E E -FG 84 108A 123 -12,-2.0 -12,-1.4 -2,-0.5 2,-0.4 -0.855 15.7-156.1 -99.8 132.1 6.3 19.0 27.6 97 97 A Q E -F 83 0A 12 10,-1.5 10,-0.4 -2,-0.4 2,-0.4 -0.895 10.9-169.7-114.4 144.9 6.5 22.1 25.4 98 98 A K E -F 82 0A 131 -16,-2.1 -16,-2.5 -2,-0.4 2,-0.1 -0.988 28.2-118.8-134.2 119.6 3.7 24.0 23.6 99 99 A L E -F 81 0A 37 -2,-0.4 -18,-0.2 -18,-0.2 3,-0.1 -0.354 11.5-147.7 -60.2 132.2 4.4 26.7 21.0 100 100 A L S S+ 0 0 52 -20,-1.6 2,-0.3 1,-0.2 -1,-0.1 0.859 84.4 11.3 -67.3 -37.4 2.9 30.1 22.1 101 101 A K S S+ 0 0 148 -21,-0.5 -1,-0.2 2,-0.0 2,-0.1 -0.997 113.0 4.8-144.1 142.6 2.3 31.0 18.4 102 102 A G S S- 0 0 59 -2,-0.3 2,-0.3 -3,-0.1 -3,-0.1 -0.340 76.5 -76.8 87.0-168.2 2.4 29.0 15.2 103 103 A E + 0 0 184 -2,-0.1 -2,-0.0 3,-0.0 3,-0.0 -0.879 52.2 128.8-132.0 164.5 3.0 25.3 14.4 104 104 A G - 0 0 44 -2,-0.3 -5,-0.1 -5,-0.0 -82,-0.1 -0.963 58.5 -33.3 169.2-177.6 6.0 23.0 14.2 105 105 A P - 0 0 23 0, 0.0 2,-0.4 0, 0.0 -83,-0.0 -0.225 67.0-102.9 -59.3 151.2 7.3 19.6 15.4 106 106 A K - 0 0 96 -8,-0.1 20,-2.7 -3,-0.0 2,-0.3 -0.674 48.7-165.6 -76.9 125.9 6.3 18.5 18.9 107 107 A T E + H 0 125A 11 -2,-0.4 -10,-1.5 -10,-0.4 2,-0.3 -0.856 18.9 154.7-118.8 155.7 9.2 19.1 21.2 108 108 A S E -GH 96 124A 32 16,-1.4 16,-2.7 -2,-0.3 2,-0.3 -0.947 19.8-150.9-161.2 170.5 10.2 18.0 24.7 109 109 A W E -GH 95 123A 14 -14,-1.5 -14,-3.1 -2,-0.3 2,-0.3 -0.975 4.3-163.0-149.0 154.2 13.2 17.4 26.9 110 110 A T E -GH 94 122A 13 12,-2.0 12,-2.3 -2,-0.3 2,-0.4 -0.971 1.6-163.6-137.0 150.2 14.2 15.2 29.8 111 111 A R E +GH 93 121A 25 -18,-2.0 -18,-2.6 -2,-0.3 2,-0.3 -0.997 16.0 174.7-134.8 130.2 17.0 15.4 32.4 112 112 A E E -GH 92 120A 52 8,-2.0 8,-2.7 -2,-0.4 2,-0.6 -1.000 28.6-136.1-142.5 143.9 18.0 12.4 34.5 113 113 A L E - H 0 119A 28 -22,-2.1 6,-0.2 -2,-0.3 2,-0.1 -0.866 30.0-148.1 -95.8 122.9 20.6 11.5 37.1 114 114 A T > - 0 0 40 4,-2.4 3,-1.7 -2,-0.6 -22,-0.0 -0.402 26.2-103.8 -89.5 168.1 22.1 8.1 36.5 115 115 A N T 3 S+ 0 0 179 1,-0.3 -1,-0.1 2,-0.1 -2,-0.0 0.705 117.8 58.2 -62.1 -23.8 23.4 5.5 39.0 116 116 A D T 3 S- 0 0 108 2,-0.0 -1,-0.3 0, 0.0 -3,-0.0 0.354 122.5-100.0 -88.4 4.3 27.1 6.4 38.1 117 117 A G S < S+ 0 0 37 -3,-1.7 19,-0.3 1,-0.3 -2,-0.1 0.513 82.4 124.3 91.4 6.2 26.7 10.0 39.0 118 118 A E - 0 0 53 17,-0.1 -4,-2.4 15,-0.0 2,-0.4 -0.405 55.4-126.8 -95.6 171.5 26.2 11.4 35.5 119 119 A L E -HI 113 134A 2 15,-2.3 15,-2.7 -6,-0.2 2,-0.5 -0.980 15.1-160.0-121.9 126.8 23.5 13.5 33.9 120 120 A I E -HI 112 133A 38 -8,-2.7 -8,-2.0 -2,-0.4 2,-0.4 -0.956 6.4-170.8-109.9 123.8 21.6 12.5 30.7 121 121 A L E -HI 111 132A 10 11,-3.1 11,-2.7 -2,-0.5 2,-0.4 -0.932 3.2-171.6-108.9 129.8 19.8 15.2 28.8 122 122 A T E -HI 110 131A 22 -12,-2.3 -12,-2.0 -2,-0.4 2,-0.4 -0.970 3.8-167.5-121.6 141.7 17.5 14.2 25.9 123 123 A M E -HI 109 130A 24 7,-2.0 7,-3.1 -2,-0.4 2,-0.4 -0.998 9.6-161.5-125.0 135.5 15.9 16.6 23.5 124 124 A T E +HI 108 129A 30 -16,-2.7 -16,-1.4 -2,-0.4 2,-0.4 -0.935 19.0 178.7-124.9 143.7 13.1 15.5 21.1 125 125 A A E > S-HI 107 128A 0 3,-2.1 3,-2.5 -2,-0.4 -18,-0.2 -0.925 73.9 -54.0-140.0 107.7 11.6 17.0 17.9 126 126 A D T 3 S- 0 0 88 -20,-2.7 -18,-0.0 -2,-0.4 -1,-0.0 -0.384 123.7 -18.3 55.7-116.0 8.9 14.7 16.5 127 127 A D T 3 S+ 0 0 160 -2,-0.2 2,-0.5 -3,-0.1 -1,-0.3 0.444 114.9 98.5-100.3 2.3 10.7 11.3 16.3 128 128 A V E < - I 0 125A 37 -3,-2.5 -3,-2.1 -110,-0.1 2,-0.4 -0.776 54.5-163.7 -93.6 129.4 14.3 12.5 16.4 129 129 A V E - I 0 124A 65 -2,-0.5 2,-0.5 -5,-0.2 -5,-0.2 -0.950 7.7-158.5-118.4 128.4 16.1 12.3 19.8 130 130 A C E - I 0 123A 0 -7,-3.1 -7,-2.0 -2,-0.4 2,-0.5 -0.908 11.2-160.7-103.2 129.9 19.3 14.0 20.8 131 131 A T E +BI 13 122A 49 -118,-1.5 -118,-2.5 -2,-0.5 2,-0.4 -0.947 11.6 176.6-116.6 123.9 21.2 12.5 23.7 132 132 A R E -BI 12 121A 14 -11,-2.7 -11,-3.1 -2,-0.5 2,-0.4 -0.990 10.2-160.7-128.1 136.6 23.9 14.4 25.7 133 133 A V E -BI 11 120A 16 -122,-2.5 -123,-3.1 -2,-0.4 -122,-1.3 -0.947 10.3-175.8-120.4 137.5 25.7 13.1 28.7 134 134 A Y E -BI 9 119A 11 -15,-2.7 -15,-2.3 -2,-0.4 2,-0.3 -0.896 12.9-164.0-131.0 162.0 27.5 15.2 31.3 135 135 A V E -B 8 0A 51 -127,-2.3 -127,-3.0 -2,-0.3 -17,-0.1 -0.938 40.8 -90.9-137.8 151.6 29.7 14.8 34.4 136 136 A R E B 7 0A 96 -19,-0.3 -129,-0.3 -2,-0.3 -131,-0.0 -0.432 360.0 360.0 -67.1 146.1 30.5 17.4 37.0 137 137 A E 0 0 182 -131,-2.8 -131,-0.2 -2,-0.1 -1,-0.1 -0.363 360.0 360.0 -61.5 360.0 33.6 19.4 36.4dssp-4.4.10/test/CMakeLists.txt000066400000000000000000000025021470365501700162770ustar00rootroot00000000000000if(NOT(Catch2_FOUND OR TARGET Catch2)) find_package(Catch2 QUIET) if(NOT Catch2_FOUND) include(FetchContent) FetchContent_Declare( Catch2 GIT_REPOSITORY https://github.com/catchorg/Catch2.git GIT_TAG v2.13.9) FetchContent_MakeAvailable(Catch2) set(Catch2_VERSION "2.13.9") endif() endif() add_executable(unit-test-dssp ${CMAKE_CURRENT_SOURCE_DIR}/unit-test-dssp.cpp ${PROJECT_SOURCE_DIR}/libdssp/src/dssp-io.cpp) if(USE_RSRC) mrc_target_resources(unit-test-dssp ${CIFPP_SHARE_DIR}/mmcif_pdbx.dic ${CIFPP_SHARE_DIR}/mmcif_ddl.dic ${CMAKE_CURRENT_SOURCE_DIR}/../libdssp/mmcif_pdbx/dssp-extension.dic) endif() target_include_directories(unit-test-dssp PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_SOURCE_DIR}/include ) target_link_libraries(unit-test-dssp PRIVATE dssp cifpp::cifpp Catch2::Catch2) if(MSVC) # Specify unwind semantics so that MSVC knowns how to handle exceptions target_compile_options(unit-test-dssp PRIVATE /EHsc) endif() if("${Catch2_VERSION}" VERSION_GREATER_EQUAL 3.0.0) target_compile_definitions(unit-test-dssp PUBLIC CATCH22=0) else() target_compile_definitions(unit-test-dssp PUBLIC CATCH22=1) endif() add_test(NAME unit-test-dssp COMMAND $ --data-dir ${CMAKE_CURRENT_SOURCE_DIR} --rsrc-dir ${CMAKE_CURRENT_BINARY_DIR}/_deps/cifpp-src/rsrc) dssp-4.4.10/test/unit-test-dssp.cpp000066400000000000000000000163241470365501700171550ustar00rootroot00000000000000/*- * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2020 NKI/AVL, Netherlands Cancer Institute * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #define CATCH_CONFIG_RUNNER #if CATCH22 # include #else # include #endif #include "../libdssp/src/dssp-io.hpp" #include "../src/revision.hpp" #include "dssp.hpp" #include namespace fs = std::filesystem; // -------------------------------------------------------------------- cif::file operator""_cf(const char *text, size_t length) { struct membuf : public std::streambuf { membuf(char *text, size_t length) { this->setg(text, text, text + length); } } buffer(const_cast(text), length); std::istream is(&buffer); return cif::file(is); } // -------------------------------------------------------------------- std::filesystem::path gTestDir = std::filesystem::current_path(); int main(int argc, char *argv[]) { Catch::Session session; // There must be exactly one instance // Build a new parser on top of Catch2's #if CATCH22 using namespace Catch::clara; #else // Build a new parser on top of Catch2's using namespace Catch::Clara; #endif std::filesystem::path rsrc_dir; auto cli = session.cli() // Get Catch2's command line parser | Opt(gTestDir, "data-dir") // bind variable to a new option, with a hint string ["-D"]["--data-dir"] // the option names it will respond to | Opt(rsrc_dir, "rsrc-dir") // bind variable to a new option, with a hint string ["-D"]["--rsrc-dir"] // the option names it will respond to ("The directory containing the data files"); // description string for the help output // Now pass the new composite back to Catch2 so it uses that session.cli(cli); // Let Catch2 (using Clara) parse the command line int returnCode = session.applyCommandLine(argc, argv); if (returnCode != 0) // Indicates a command line error return returnCode; if (not rsrc_dir.empty() and std::filesystem::exists(rsrc_dir)) cif::add_data_directory(rsrc_dir); return session.run(); } // -------------------------------------------------------------------- TEST_CASE("ut_dssp") { using namespace std::literals; cif::file f(gTestDir / "1cbs.cif.gz"); REQUIRE(f.is_valid()); dssp dssp(f.front(), 1, 3, true); std::stringstream test; writeDSSP(dssp, test); std::ifstream reference(gTestDir / "1cbs.dssp"); CHECK(reference.is_open()); std::string line_t, line_r; CHECK((std::getline(test, line_t) and std::getline(reference, line_r))); char kHeaderLineStart[] = "==== Secondary Structure Definition by the program DSSP, NKI version 4.4.5 ===="; memcpy(kHeaderLineStart + 69, kVersionNumber, strlen(kVersionNumber)); CHECK(line_t.compare(0, std::strlen(kHeaderLineStart), kHeaderLineStart) == 0); // CHECK(line_r.compare(0, std::strlen(kHeaderLineStart), kHeaderLineStart) == 0); for (int line_nr = 2;; ++line_nr) { bool done_t = not std::getline(test, line_t); bool done_r = not std::getline(reference, line_r); CHECK(done_r == done_t); if (done_r) break; if (line_t != line_r) std::cerr << line_nr << std::endl << line_t << std::endl << line_r << std::endl; if (line_t != line_r) { CHECK(line_t == line_r); break; } } CHECK(test.eof()); CHECK(reference.eof()); } TEST_CASE("ut_mmcif_2") { using namespace std::literals; using namespace cif::literals; cif::file f(gTestDir / "1cbs.cif.gz"); REQUIRE(f.is_valid()); dssp dssp(f.front(), 1, 3, true); std::stringstream test; dssp.annotate(f.front(), true, false); cif::file rf(gTestDir / "1cbs-dssp.cif"); auto &db1 = f.front(); auto &db2 = rf.front(); db1["software"].erase("name"_key == "dssp"); db1.erase(find_if(db1.begin(), db1.end(), [](cif::category &cat) { return cat.name() == "audit_conform"; })); db2["software"].erase("name"_key == "dssp"); db2.erase(find_if(db2.begin(), db2.end(), [](cif::category &cat) { return cat.name() == "audit_conform"; })); // generate some output on different files: // cif::VERBOSE = 2; CHECK(f.front() == rf.front()); } // -------------------------------------------------------------------- TEST_CASE("dssp_1") { cif::file f(gTestDir / "1cbs.cif.gz"); REQUIRE(f.is_valid()); std::ifstream t(gTestDir / "1cbs-dssp-test.tsv"); dssp dssp(f.front(), 1, 3, true); for (auto residue : dssp) { std::string line; getline(t, line); // std::cout << line << std::endl; auto fld = cif::split(line, "\t"); CHECK(fld.size() == 3); if (fld.size() != 3) continue; int seqID; std::from_chars(fld[0].data(), fld[0].data() + fld[0].length(), seqID); std::string asymID{ fld[1] }; std::string secstr{ fld[2] }; if (secstr == "_") secstr = " "; CHECK(residue.asym_id() == asymID); CHECK(residue.seq_id() == seqID); CHECK((char)residue.type() == secstr.front()); } } // -------------------------------------------------------------------- TEST_CASE("dssp_2") { cif::file f(gTestDir / "1cbs.cif.gz"); REQUIRE(f.is_valid()); dssp dssp(f.front(), 1, 3, true); std::ifstream t(gTestDir / "1cbs-dssp-test.tsv"); std::string line; while (getline(t, line)) { auto fld = cif::split(line, "\t"); CHECK(fld.size() == 3); if (fld.size() != 3) continue; int seqID; std::from_chars(fld[0].data(), fld[0].data() + fld[0].length(), seqID); std::string asymID{ fld[1] }; std::string secstr{ fld[2] }; if (secstr == "_") secstr = " "; dssp::key_type key{ asymID, seqID }; auto ri = dssp[key]; CHECK(ri.asym_id() == asymID); CHECK(ri.seq_id() == seqID); CHECK((char)ri.type() == secstr.front()); } } // -------------------------------------------------------------------- TEST_CASE("dssp_3") { cif::file f(gTestDir / "1cbs.cif.gz"); REQUIRE(f.is_valid()); dssp dssp(f.front(), 1, 3, true); dssp.annotate(f.front(), true, true); // CHECK(f.is_valid()); }dssp-4.4.10/tools/000077500000000000000000000000001470365501700137215ustar00rootroot00000000000000dssp-4.4.10/tools/depends.cmd000066400000000000000000000013751470365501700160360ustar00rootroot00000000000000@ECHO OFF SET ZLIB_VERSION=1.3 IF NOT EXIST build_ci\libs ( MKDIR build_ci\libs ) CD build_ci\libs IF NOT EXIST zlib-%ZLIB_VERSION%.zip ( ECHO Downloading https://github.com/libarchive/zlib/archive/v%ZLIB_VERSION%.zip curl -L -o zlib-%ZLIB_VERSION%.zip https://github.com/libarchive/zlib/archive/v%ZLIB_VERSION%.zip || EXIT /b 1 ) IF NOT EXIST zlib-%ZLIB_VERSION% ( ECHO Unpacking zlib-%ZLIB_VERSION%.zip C:\windows\system32\tar.exe -x -f zlib-%ZLIB_VERSION%.zip || EXIT /b 1 ) CD zlib-%ZLIB_VERSION% cmake -G "Visual Studio 17 2022" . || EXIT /b 1 cmake --build . --target ALL_BUILD --config Release || EXIT /b 1 cmake --build . --target RUN_TESTS --config Release || EXIT /b 1 cmake --build . --target INSTALL --config Release || EXIT /b 1 @EXIT /b 0