아미노산 서열을 가지고 핵에 붙는 단백질인 NLS Explorer로 만들어지는지 예측하는 모델로 Attention 기법을 이용한 딥러닝 분류 모델을 구현해보겠다.


1. 배경지식

핵 위치 신호(NLS)는 단백질 내 중요한 아미노산 서열로, 세포핵으로의 이동을 조절합니다. 이러한 신호를 매개로 한 핵으로의 진입은 핵 수송에 관여하는 필수적인 생물학적 수입 과정입니다. 단백질에서 이러한 부분을 추가하거나 분리하면 핵 위치 신호에 상당한 변화가 나타날 수 있습니다. 이러한 신호 펩타이드에 대한 심층적인 탐구와 위치 분석은 핵 수송의 복잡성을 밝힐 뿐만 아니라 이러한 생물학적 현상을 지배하는 기본 원리를 밝히는 열쇠를 쥐고 있습니다.

아미노산 서열이 접혀서 단백질이 되는 과정을 재현하려면 직접 실험으로 환경을 구축해해야하는데 노동집약적이라 딥러닝으로 분류하게다는 그런 의미이다. 

2. 설치방법

2.1. 환경 설정

  • Miniconda 사전 설치

https://www.anaconda.com/download/success

 

Download Now | Anaconda

Anaconda is the birthplace of Python data science. We are a movement of data scientists, data-driven enterprises, and open source communities.

www.anaconda.com

# Mac OS  M4(Silicon) Pro
conda create -n NLSExplorer-pyto python=3.7 --platform osx-64

#콘다 환경 설정
conda activate NLSExplorer-pyto

#OS 설정
conda env config vars set CONDA_SUBDIR=osx-64

#패키지 설정
conda install pytorch torchvision torchaudio cudatoolkit -c pytorch -c nvidia

    패키지 설치 시 해당하는 명령어를 찾으려면 다음 링크 참고. cuda 같은 경우 맥북에서 사용할 수 없으므로 기본 compute를 사용한다. https://pytorch.org/get-started/locally/

     

    Get Started

    Set up PyTorch easily with local installation or supported cloud platforms.

    pytorch.org

     

    2.2. MPS 활성화 체크

    • 맥북에서는 CUDA가 작동하지 않으므로 Pytorch를 사용하려면 맥에서 자체개발한 MPS 활성화 체크를 하고 사용
    import torch
    
    if torch.backends.mps.is_available():
        mps_device = torch.device("mps")
        x = torch.ones(1, device=mps_device)
        print(x)
        print("PyTorch is using MPS (Metal Performance Shaders) for acceleration.")
    else:
        print("MPS is not available. PyTorch will run on CPU.")
    
    print(f"PyTorch version: {torch.__version__}")

     

    2.3. 데이터셋과 모델 다운로드

      • 모델이 좀 무겁다. 2.7GB
      • 데이터셋은 맥북이면 Unarchiver로 압축해제(기본 유틸로 안됨)
    1. Download files from NLSExplorer Code:
      • The NLSExplorer model: Place NLS_loc_modeltes in the folder named "./Recommendation_system".
    2. Download files from NLSExplorer dataset:
      • Dataset: Put NLSExplorer-p in the folder named "./A2KA_train/Dataset" and extract it using appropriate commands (e.g., unzip xxx).

     

    3. 코드 작동 뜯어보기

    웹사이트 구현도 해놓음!

     

    다음 3.1 ~ 3.3은 Gemini CLI Pro를 이용하여 분석한 핵심 기능 정리

    3.1. 핵심 기능

    • A2KA: 단백질 언어 모델의 표현을 개선하고 어텐션 메커니즘을 활용하여 예측에 중요한 영역을 식별하는 어텐션 네트워크
    • SCNLS: 서열의 패턴 분석, 특히 NLS와 같은 불연속적인 패턴 분석을 위해 설계
    • NLS (핵위치신호) 예측: 딥러닝 모델(A2KA)을 사용하여 단백질 서열에서 NLS를 예측합니다.
    • 패턴 분석: SCNLS 알고리즘을 사용하여 단백질 서열, 특히 NLS에서 연속적이지 않은 패턴을 분석합니다.

      3.2. 주요 파일 및 역할

    • A2KA.py: 어텐션 메커니즘을 사용하는 딥러닝 모델인 A2KA의 PyTorch 구현을 포함합니다. 이 모델은 단백질 서열 임베딩을 입력으로 받아 NLS 존재를 예측하고 어텐션 분포를 출력합니다.
    • SCNLS.py: NLS와 같은 서열 모티프에서 불연속적인 패턴을 검색하고 분석하는 SCNLS 알고리즘을 구현합니다. 여러 모드(파일, 단일 서열 등)로 실행할 수 있으며, 멀티프로세싱을 활용하여 효율성을 높입니다.
    • utils.py: 데이터 로딩, 전처리, 모델 학습, 임베딩 생성 등 다양한 유틸리티 기능을 포함합니다. 특히 esm 라이브러리를 사용하여 단백질 서열의 임베딩을 생성하는 기능이 중요해 보입니다.
    • Plot.py: 3D 막대 그래프를 생성하여 다차원 데이터를 시각화하는 스크립트입니다. 모델의 어텐션 가중치나 다른 분석 결과를 시각화하는 데 사용될 수 있습니다.
    • test.py: 텍스트 데이터에서 연속적인 패턴을 추출하고 빈도를 계산하는 테스트 코드를 포함합니다.SCNLS.py의 연속 모드와 유사한 기능을 테스트하는 것으로 보입니다.

    3.3.  작동 흐름

     

    1. 데이터 준비: utils.py의 함수를 사용하여 단백질 서열 데이터를 로드하고 전처리합니다. example.csv 또는 Arabidopsis thaliana_0.5.pkl과 같은 데이터 파일을 사용합니다.
    2. 임베딩 생성: utils.py의 generate_representation 함수를 사용하여 esm 모델로 단백질 서열을 임베딩 벡터로 변환합니다.
    3. NLS 예측 (A2KA): A2KA.py에 정의된 A2KA 모델을 불러옵니다. 생성된 임베딩을 모델에 입력하여 NLS 존재 여부를 예측하고, 모델이 서열의 어느 부분에 주목했는지 나타내는 어텐션 맵을 얻습니다.
    4. 패턴 분석 (SCNLS)
    • SCNLS.py를 사용하여 NLS 서열 또는 다른 관심 서열에서 패턴을 분석합니다.
    • --mode 인자를 통해 파일(f), 단일 서열(s), 또는 미리 처리된 데이터(n)를 입력으로 지정할 수 있습니다.
    • --maxgap, --kths 등의 파라미터를 조절하여 패턴 분석의 세부 설정을 변경할 수 있습니다.

       5. 결과 시각화: Plot.py를 사용하여 분석 결과(예: 어텐션 가중치)를 3D 그래프로 시각화할 수 있습니다.

    3.4. 요약

    이 리포지토리는 NLSExplorer라는 딥러닝 기반의 NLS 예측 및 분석 도구를 제공합니다. A2KA 모델을 통해 NLS를 예측하고 해석 가능한 어텐션 정보를 제공하며, SCNLS 알고리즘으로 서열 패턴을 심층적으로 분석할 수 있습니다. utils.py는 데이터 처리 및 임베딩 생성을 지원하고, Plot.py는 결과 시각화를 돕습니다.

    코드 분석보다 모델 다운로드 받는데 더 오래 걸림...ㅎㅎ

    4. 레퍼런스

     

    NLSExplorer

    NLS Candidate Library To advance the investigation and identification of NLS, we put all the potential NLSs recommended by NLSExplorer from all the nuclear proteins from Swiss-Prot with experimental evidence into an interactive visualization map. Each poin

    www.csbio.sjtu.edu.cn

     

    GitHub - Dsadd4/NLSExplorer_1.0: NLSExplorer provides powerful tool that combine with large protein language model in predicting

    NLSExplorer provides powerful tool that combine with large protein language model in predicting and exploring Nuclear Localization Signal space with novel attention based deep network -A2KA. - Dsad...

    github.com

     

    + Recent posts