mirror of
https://github.com/samsledje/D-SCRIPT.git
synced 2026-06-04 15:04:24 +08:00
Finishing merge
This commit is contained in:
2
.flake8
2
.flake8
@@ -1,4 +1,4 @@
|
||||
[flake8]
|
||||
ignore = E203, E266, E501, W503, F403, F401
|
||||
ignore = E203, E266, E402, E501, W503, F403, F401
|
||||
max-line-length = 79
|
||||
select = B,E,F,W,T4,B9
|
||||
|
||||
40
.github/workflows/autorun-tests.yml
vendored
Normal file
40
.github/workflows/autorun-tests.yml
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
# This workflow will install Python dependencies, run tests and lint with a single version of Python
|
||||
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
|
||||
|
||||
name: Python application
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ "main" ]
|
||||
pull_request:
|
||||
branches: [ "main" ]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Set up Python 3.7
|
||||
uses: actions/setup-python@v3
|
||||
with:
|
||||
python-version: "3.7"
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install flake8 pytest
|
||||
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
|
||||
python setup.py install
|
||||
- name: Lint with flake8
|
||||
run: |
|
||||
# stop the build if there are Python syntax errors or undefined names
|
||||
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
|
||||
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
|
||||
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
|
||||
- name: Test with pytest
|
||||
run: |
|
||||
pytest
|
||||
39
.github/workflows/pypi_publish.yml
vendored
Normal file
39
.github/workflows/pypi_publish.yml
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
# This workflow will upload a Python Package using Twine when a release is created
|
||||
# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries
|
||||
|
||||
# This workflow uses actions that are not certified by GitHub.
|
||||
# They are provided by a third-party and are governed by
|
||||
# separate terms of service, privacy policy, and support
|
||||
# documentation.
|
||||
|
||||
name: Upload Python Package
|
||||
|
||||
on:
|
||||
release:
|
||||
types: [published]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v3
|
||||
with:
|
||||
python-version: '3.x'
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
|
||||
- name: Build package
|
||||
run: python setup.py sdist bdist_wheel
|
||||
- name: Publish package
|
||||
uses: pypa/gh-action-pypi-publish@27b31702a0e7fc50959f5ad993c78deac1bdfc29
|
||||
with:
|
||||
user: __token__
|
||||
password: ${{ secrets.PYPI_API_TOKEN }}
|
||||
31
.gitignore
vendored
31
.gitignore
vendored
@@ -1,22 +1,23 @@
|
||||
dscript/proteins
|
||||
dscript/pdbs
|
||||
dscript/fastas
|
||||
# Directories
|
||||
build
|
||||
docs/build
|
||||
scratch
|
||||
dist
|
||||
htmlcov
|
||||
.vscode
|
||||
**/.ipynb_checkpoints
|
||||
**/__pycache__
|
||||
dev*
|
||||
|
||||
# Files
|
||||
collect_env.py
|
||||
RUN_DSCRIPT.sh
|
||||
build/*
|
||||
scratch/*
|
||||
dist/*
|
||||
dev*/*
|
||||
|
||||
# File Types
|
||||
**/*.egg-info
|
||||
**/*.pt
|
||||
.vscode/**
|
||||
*.egg-info
|
||||
**/*.sav
|
||||
**/*_log.txt
|
||||
**.DS_Store
|
||||
**/*.h5
|
||||
**/.ipynb_checkpoints/**
|
||||
**/__pycache__/**
|
||||
collect_env.py
|
||||
devCoral/*
|
||||
htmlcov/*
|
||||
|
||||
**/.nfs*
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
fail_fast: true
|
||||
repos:
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: v2.3.0
|
||||
@@ -15,7 +16,8 @@ repos:
|
||||
rev: 21.6b0
|
||||
hooks:
|
||||
- id: black
|
||||
language_version: python3.8
|
||||
language_version: python3.7
|
||||
additional_dependencies: ['click==8.0.4']
|
||||
- repo: https://gitlab.com/pycqa/flake8
|
||||
rev: 3.9.2
|
||||
hooks:
|
||||
|
||||
@@ -9,7 +9,7 @@ python:
|
||||
version: 3.7
|
||||
install:
|
||||
- requirements: docs/requirements.txt
|
||||
- method: pip
|
||||
- method: setuptools
|
||||
path: .
|
||||
|
||||
# Build documentation in the docs/ directory with Sphinx
|
||||
|
||||
24
CHANGELOG.md
24
CHANGELOG.md
@@ -1,14 +1,30 @@
|
||||
# To Do
|
||||
- Full logging system (issue #5)
|
||||
- Expand test suite to include function unittests (maximize coverage)
|
||||
- Add multi-gpu support (issue #6)
|
||||
- Use multiple workers to load embeddings / support for loading embeddings on the fly to reduce memory usage (issue #8/11)
|
||||
- Add convenience function to generate candidates - all pairs from a list / cartesian product of multiple lists
|
||||
- Add error handling for calledProcessError in utils.gpu_mem
|
||||
- support for loading embeddings on the fly to reduce memory usage (issue #11)
|
||||
|
||||
# v0
|
||||
|
||||
## v0.2
|
||||
|
||||
### v0.2.1
|
||||
- Add biopython to setup.py
|
||||
|
||||
### v0.2.0
|
||||
|
||||
- Integrate Topsy-Turvy to allow for top-down supervision
|
||||
- Use utils.log function across all commands
|
||||
- Speed up loading embeddings into memory using parallel processing
|
||||
- Update fasta parse and write to use BioPython SeqIO (better error checking)
|
||||
- More comprehensive test suite for main commands
|
||||
|
||||
## v0.1
|
||||
|
||||
### v0.1.9: 2022-03-07 -- Minor bug fixes
|
||||
|
||||
- Updated model loading on new version to handle re-named parameters
|
||||
- Updated cpu-only loading during prediction with map_location
|
||||
|
||||
### v0.1.8: 2022-02-08 -- Finalized training bug fix
|
||||
|
||||
- Resolve #24 by fixing training
|
||||
|
||||
@@ -7,10 +7,13 @@ authors:
|
||||
- family-names: "Singh"
|
||||
given-names: "Rohit"
|
||||
orcid: "https://orcid.org/0000-0002-4084-7340"
|
||||
- family-name: "Devkota"
|
||||
given-names: "Kapil"
|
||||
orcid: "https://orcid.org/0000-0002-6093-6260"
|
||||
title: "D-SCRIPT"
|
||||
version: 0.1.5
|
||||
doi: 10.5281/zenodo.5140508
|
||||
date-released: 2021-07-27
|
||||
version: 0.2.0
|
||||
doi: 10.1016/j.cels.2021.08.010
|
||||
date-released: 2022-06-26
|
||||
url: "https://github.com/samsledje/D-SCRIPT"
|
||||
preferred-citation:
|
||||
type: article
|
||||
|
||||
@@ -10,12 +10,12 @@ This branch is for supervising D-SCRIPT with contact maps from PDB, to hopefully
|
||||
[](https://d-script.readthedocs.io/en/main/?badge=main)
|
||||
[](https://github.com/samsledje/D-SCRIPT/blob/main/LICENSE)
|
||||
[](https://github.com/psf/black)
|
||||
|
||||
[](https://www.codefactor.io/repository/github/samsledje/d-script)
|
||||
|
||||
D-SCRIPT is a deep learning method for predicting a physical interaction between two proteins given just their sequences. It generalizes well to new species and is robust to limitations in training data size. Its design reflects the intuition that for two proteins to physically interact, a subset of amino acids from each protein should be in con-tact with the other. The intermediate stages of D-SCRIPT directly implement this intuition, with the penultimate stage in D-SCRIPT being a rough estimate of the inter-protein contact map of the protein dimer. This structurally-motivated design enhances the interpretability of the results and, since structure is more conserved evolutionarily than sequence, improves generalizability across species.
|
||||
|
||||
|
||||
- D-SCRIPT is described in the paper [“Sequence-based prediction of protein-protein interactions: a structure-aware interpretable deep learning model”](https://www.biorxiv.org/content/10.1101/2021.01.22.427866v1) by Sam Sledzieski, Rohit Singh, Lenore Cowen and Bonnie Berger.
|
||||
|
||||
|
||||
- [Homepage](http://dscript.csail.mit.edu)
|
||||
|
||||
|
||||
- [Documentation](https://d-script.readthedocs.io/en/main/)
|
||||
|
||||
@@ -104,11 +104,3 @@ do
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
BIN
docs/build/doctrees/api/dscript.commands.doctree
vendored
BIN
docs/build/doctrees/api/dscript.commands.doctree
vendored
Binary file not shown.
BIN
docs/build/doctrees/api/dscript.models.doctree
vendored
BIN
docs/build/doctrees/api/dscript.models.doctree
vendored
Binary file not shown.
BIN
docs/build/doctrees/api/index.doctree
vendored
BIN
docs/build/doctrees/api/index.doctree
vendored
Binary file not shown.
BIN
docs/build/doctrees/data.doctree
vendored
BIN
docs/build/doctrees/data.doctree
vendored
Binary file not shown.
BIN
docs/build/doctrees/environment.pickle
vendored
BIN
docs/build/doctrees/environment.pickle
vendored
Binary file not shown.
BIN
docs/build/doctrees/index.doctree
vendored
BIN
docs/build/doctrees/index.doctree
vendored
Binary file not shown.
BIN
docs/build/doctrees/installation.doctree
vendored
BIN
docs/build/doctrees/installation.doctree
vendored
Binary file not shown.
BIN
docs/build/doctrees/usage.doctree
vendored
BIN
docs/build/doctrees/usage.doctree
vendored
Binary file not shown.
4
docs/build/html/.buildinfo
vendored
4
docs/build/html/.buildinfo
vendored
@@ -1,4 +0,0 @@
|
||||
# Sphinx build info version 1
|
||||
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
|
||||
config: 12603d33db63e6503ae2eeaded0b39ac
|
||||
tags: 645f666f9bcd5a90fca523b33c5a78b7
|
||||
309
docs/build/html/_modules/dscript/alphabets.html
vendored
309
docs/build/html/_modules/dscript/alphabets.html
vendored
@@ -1,309 +0,0 @@
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<title>dscript.alphabets — D-SCRIPT v1.0-beta documentation</title>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../_static/js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
|
||||
<script src="../../_static/jquery.js"></script>
|
||||
<script src="../../_static/underscore.js"></script>
|
||||
<script src="../../_static/doctools.js"></script>
|
||||
|
||||
<script type="text/javascript" src="../../_static/js/theme.js"></script>
|
||||
|
||||
|
||||
<link rel="index" title="Index" href="../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../search.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../index.html" class="icon icon-home"> D-SCRIPT
|
||||
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../installation.html">Installation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../usage.html">Usage</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../data.html">Data</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api/index.html">API</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
|
||||
|
||||
<nav class="wy-nav-top" aria-label="top navigation">
|
||||
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../index.html">D-SCRIPT</a>
|
||||
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="wy-nav-content">
|
||||
|
||||
<div class="rst-content">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||
|
||||
<ul class="wy-breadcrumbs">
|
||||
|
||||
<li><a href="../../index.html" class="icon icon-home"></a> »</li>
|
||||
|
||||
<li><a href="../index.html">Module code</a> »</li>
|
||||
|
||||
<li>dscript.alphabets</li>
|
||||
|
||||
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<h1>Source code for dscript.alphabets</h1><div class="highlight"><pre>
|
||||
<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">print_function</span><span class="p">,</span> <span class="n">division</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||||
|
||||
<div class="viewcode-block" id="Alphabet"><a class="viewcode-back" href="../../api/index.html#dscript.alphabets.Alphabet">[docs]</a><span class="k">class</span> <span class="nc">Alphabet</span><span class="p">:</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> From `Bepler & Berger <https://github.com/tbepler/protein-sequence-embedding-iclr2019>`_.</span>
|
||||
|
||||
<span class="sd"> :param chars: List of characters in alphabet</span>
|
||||
<span class="sd"> :type chars: byte str</span>
|
||||
<span class="sd"> :param encoding: Mapping of characters to numbers [default: encoding]</span>
|
||||
<span class="sd"> :type encoding: np.ndarray</span>
|
||||
<span class="sd"> :param mask: Set encoding mask [default: False]</span>
|
||||
<span class="sd"> :type mask: bool</span>
|
||||
<span class="sd"> :param missing: Number to use for a value outside the alphabet [default: 255]</span>
|
||||
<span class="sd"> :type missing: int</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">chars</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">missing</span><span class="o">=</span><span class="mi">255</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">chars</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">frombuffer</span><span class="p">(</span><span class="n">chars</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">np</span><span class="o">.</span><span class="n">uint8</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">encoding</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="mi">256</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">np</span><span class="o">.</span><span class="n">uint8</span><span class="p">)</span> <span class="o">+</span> <span class="n">missing</span>
|
||||
<span class="k">if</span> <span class="n">encoding</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">encoding</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">chars</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">chars</span><span class="p">))</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">chars</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">encoding</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">chars</span><span class="p">]</span> <span class="o">=</span> <span class="n">encoding</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">=</span> <span class="n">encoding</span><span class="o">.</span><span class="n">max</span><span class="p">()</span> <span class="o">+</span> <span class="mi">1</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">mask</span> <span class="o">=</span> <span class="n">mask</span>
|
||||
<span class="k">if</span> <span class="n">mask</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">-=</span> <span class="mi">1</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__len__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">i</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="nb">chr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">chars</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
|
||||
|
||||
<div class="viewcode-block" id="Alphabet.encode"><a class="viewcode-back" href="../../api/index.html#dscript.alphabets.Alphabet.encode">[docs]</a> <span class="k">def</span> <span class="nf">encode</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Encode a byte string into alphabet indices</span>
|
||||
<span class="sd"> </span>
|
||||
<span class="sd"> :param x: Amino acid string</span>
|
||||
<span class="sd"> :type x: byte str</span>
|
||||
<span class="sd"> :return: Numeric encoding</span>
|
||||
<span class="sd"> :rtype: np.ndarray</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">frombuffer</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">np</span><span class="o">.</span><span class="n">uint8</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">encoding</span><span class="p">[</span><span class="n">x</span><span class="p">]</span></div>
|
||||
|
||||
<div class="viewcode-block" id="Alphabet.decode"><a class="viewcode-back" href="../../api/index.html#dscript.alphabets.Alphabet.decode">[docs]</a> <span class="k">def</span> <span class="nf">decode</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Decode numeric encoding to byte string of this alphabet</span>
|
||||
|
||||
<span class="sd"> :param x: Numeric encoding</span>
|
||||
<span class="sd"> :type x: np.ndarray</span>
|
||||
<span class="sd"> :return: Amino acid string</span>
|
||||
<span class="sd"> :rtype: byte str</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">string</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">chars</span><span class="p">[</span><span class="n">x</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="n">string</span><span class="o">.</span><span class="n">tobytes</span><span class="p">()</span></div>
|
||||
|
||||
<div class="viewcode-block" id="Alphabet.unpack"><a class="viewcode-back" href="../../api/index.html#dscript.alphabets.Alphabet.unpack">[docs]</a> <span class="k">def</span> <span class="nf">unpack</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">h</span><span class="p">,</span> <span class="n">k</span><span class="p">):</span>
|
||||
<span class="sd">""" unpack integer h into array of this alphabet with length k """</span>
|
||||
<span class="n">n</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span>
|
||||
<span class="n">kmer</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">np</span><span class="o">.</span><span class="n">uint8</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">reversed</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="n">k</span><span class="p">)):</span>
|
||||
<span class="n">c</span> <span class="o">=</span> <span class="n">h</span> <span class="o">%</span> <span class="n">n</span>
|
||||
<span class="n">kmer</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">c</span>
|
||||
<span class="n">h</span> <span class="o">=</span> <span class="n">h</span> <span class="o">//</span> <span class="n">n</span>
|
||||
<span class="k">return</span> <span class="n">kmer</span></div>
|
||||
|
||||
<div class="viewcode-block" id="Alphabet.get_kmer"><a class="viewcode-back" href="../../api/index.html#dscript.alphabets.Alphabet.get_kmer">[docs]</a> <span class="k">def</span> <span class="nf">get_kmer</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">h</span><span class="p">,</span> <span class="n">k</span><span class="p">):</span>
|
||||
<span class="sd">""" retrieve byte string of length k decoded from integer h """</span>
|
||||
<span class="n">kmer</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">h</span><span class="p">,</span> <span class="n">k</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="n">kmer</span><span class="p">)</span></div></div>
|
||||
|
||||
<span class="n">DNA</span> <span class="o">=</span> <span class="n">Alphabet</span><span class="p">(</span><span class="sa">b</span><span class="s1">'ACGT'</span><span class="p">)</span>
|
||||
|
||||
<div class="viewcode-block" id="Uniprot21"><a class="viewcode-back" href="../../api/index.html#dscript.alphabets.Uniprot21">[docs]</a><span class="k">class</span> <span class="nc">Uniprot21</span><span class="p">(</span><span class="n">Alphabet</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Uniprot 21 Amino Acid Encoding.</span>
|
||||
|
||||
<span class="sd"> From `Bepler & Berger <https://github.com/tbepler/protein-sequence-embedding-iclr2019>`_.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="n">chars</span> <span class="o">=</span> <span class="n">alphabet</span> <span class="o">=</span> <span class="sa">b</span><span class="s1">'ARNDCQEGHILKMFPSTWYVXOUBZ'</span>
|
||||
<span class="n">encoding</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">chars</span><span class="p">))</span>
|
||||
<span class="n">encoding</span><span class="p">[</span><span class="mi">21</span><span class="p">:]</span> <span class="o">=</span> <span class="p">[</span><span class="mi">11</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">20</span><span class="p">,</span><span class="mi">20</span><span class="p">]</span> <span class="c1"># encode 'OUBZ' as synonyms</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">Uniprot21</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">chars</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="n">encoding</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="n">mask</span><span class="p">,</span> <span class="n">missing</span><span class="o">=</span><span class="mi">20</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="SDM12"><a class="viewcode-back" href="../../api/index.html#dscript.alphabets.SDM12">[docs]</a><span class="k">class</span> <span class="nc">SDM12</span><span class="p">(</span><span class="n">Alphabet</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> A D KER N TSQ YF LIVM C W H G P</span>
|
||||
|
||||
<span class="sd"> See https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2732308/#B33</span>
|
||||
<span class="sd"> "Reduced amino acid alphabets exhibit an improved sensitivity and selectivity in fold assignment"</span>
|
||||
<span class="sd"> Peterson et al. 2009. Bioinformatics.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="n">chars</span> <span class="o">=</span> <span class="n">alphabet</span> <span class="o">=</span> <span class="sa">b</span><span class="s1">'ADKNTYLCWHGPXERSQFIVMOUBZ'</span>
|
||||
<span class="n">groups</span> <span class="o">=</span> <span class="p">[</span><span class="sa">b</span><span class="s1">'A'</span><span class="p">,</span><span class="sa">b</span><span class="s1">'D'</span><span class="p">,</span><span class="sa">b</span><span class="s1">'KERO'</span><span class="p">,</span><span class="sa">b</span><span class="s1">'N'</span><span class="p">,</span><span class="sa">b</span><span class="s1">'TSQ'</span><span class="p">,</span><span class="sa">b</span><span class="s1">'YF'</span><span class="p">,</span><span class="sa">b</span><span class="s1">'LIVM'</span><span class="p">,</span><span class="sa">b</span><span class="s1">'CU'</span><span class="p">,</span><span class="sa">b</span><span class="s1">'W'</span><span class="p">,</span><span class="sa">b</span><span class="s1">'H'</span><span class="p">,</span><span class="sa">b</span><span class="s1">'G'</span><span class="p">,</span><span class="sa">b</span><span class="s1">'P'</span><span class="p">,</span><span class="sa">b</span><span class="s1">'XBZ'</span><span class="p">]</span>
|
||||
<span class="n">groups</span> <span class="o">=</span> <span class="p">{</span><span class="n">c</span><span class="p">:</span><span class="n">i</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">groups</span><span class="p">))</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">groups</span><span class="p">[</span><span class="n">i</span><span class="p">]}</span>
|
||||
<span class="n">encoding</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">groups</span><span class="p">[</span><span class="n">c</span><span class="p">]</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">chars</span><span class="p">])</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">SDM12</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">chars</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="n">encoding</span><span class="p">,</span> <span class="n">mask</span><span class="o">=</span><span class="n">mask</span><span class="p">)</span></div>
|
||||
|
||||
<span class="n">SecStr8</span> <span class="o">=</span> <span class="n">Alphabet</span><span class="p">(</span><span class="sa">b</span><span class="s1">'HBEGITS '</span><span class="p">)</span>
|
||||
|
||||
|
||||
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2020, Samuel Sledzieski, Rohit Singh.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
237
docs/build/html/_modules/dscript/commands/embed.html
vendored
237
docs/build/html/_modules/dscript/commands/embed.html
vendored
@@ -1,237 +0,0 @@
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" >
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>dscript.commands.embed — D-SCRIPT v1.0-beta documentation</title>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../../_static/js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></script>
|
||||
<script src="../../../_static/jquery.js"></script>
|
||||
<script src="../../../_static/underscore.js"></script>
|
||||
<script src="../../../_static/doctools.js"></script>
|
||||
<script src="../../../_static/language_data.js"></script>
|
||||
<script async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
|
||||
|
||||
<script type="text/javascript" src="../../../_static/js/theme.js"></script>
|
||||
|
||||
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../../index.html" class="icon icon-home" alt="Documentation Home"> D-SCRIPT
|
||||
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../installation.html">Installation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../usage.html">Usage</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../data.html">Data</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../api/index.html">API</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
|
||||
|
||||
<nav class="wy-nav-top" aria-label="top navigation">
|
||||
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../../index.html">D-SCRIPT</a>
|
||||
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="wy-nav-content">
|
||||
|
||||
<div class="rst-content">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||
|
||||
<ul class="wy-breadcrumbs">
|
||||
|
||||
<li><a href="../../../index.html" class="icon icon-home"></a> »</li>
|
||||
|
||||
<li><a href="../../index.html">Module code</a> »</li>
|
||||
|
||||
<li>dscript.commands.embed</li>
|
||||
|
||||
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<h1>Source code for dscript.commands.embed</h1><div class="highlight"><pre>
|
||||
<span></span><span class="sd">"""</span>
|
||||
<span class="sd">Generate new embeddings using pre-trained language model.</span>
|
||||
<span class="sd">"""</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">argparse</span>
|
||||
<span class="kn">from</span> <span class="nn">dscript.language_model</span> <span class="kn">import</span> <span class="n">embed_from_fasta</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="add_args"><a class="viewcode-back" href="../../../api/dscript.commands.html#dscript.commands.embed.add_args">[docs]</a><span class="k">def</span> <span class="nf">add_args</span><span class="p">(</span><span class="n">parser</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Create parser for command line utility.</span>
|
||||
|
||||
<span class="sd"> :meta private:</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">"--seqs"</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">"Sequences to be embedded"</span><span class="p">,</span> <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">"--outfile"</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">"h5 file to write results"</span><span class="p">,</span> <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">"-d"</span><span class="p">,</span> <span class="s2">"--device"</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="nb">int</span><span class="p">,</span> <span class="n">default</span><span class="o">=-</span><span class="mi">1</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">"Compute device to use"</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">parser</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="main"><a class="viewcode-back" href="../../../api/dscript.commands.html#dscript.commands.embed.main">[docs]</a><span class="k">def</span> <span class="nf">main</span><span class="p">(</span><span class="n">args</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Run embedding from arguments.</span>
|
||||
|
||||
<span class="sd"> :meta private:</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">inPath</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">seqs</span>
|
||||
<span class="n">outPath</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">outfile</span>
|
||||
<span class="n">device</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">device</span>
|
||||
<span class="n">embed_from_fasta</span><span class="p">(</span><span class="n">inPath</span><span class="p">,</span> <span class="n">outPath</span><span class="p">,</span> <span class="n">device</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">"__main__"</span><span class="p">:</span>
|
||||
<span class="n">parser</span> <span class="o">=</span> <span class="n">argparse</span><span class="o">.</span><span class="n">ArgumentParser</span><span class="p">(</span><span class="n">description</span><span class="o">=</span><span class="vm">__doc__</span><span class="p">)</span>
|
||||
<span class="n">add_args</span><span class="p">(</span><span class="n">parser</span><span class="p">)</span>
|
||||
<span class="n">main</span><span class="p">(</span><span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">())</span>
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
|
||||
© Copyright 2020, Samuel Sledzieski, Rohit Singh
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
|
||||
|
||||
<a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
|
||||
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
371
docs/build/html/_modules/dscript/commands/eval.html
vendored
371
docs/build/html/_modules/dscript/commands/eval.html
vendored
@@ -1,371 +0,0 @@
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<title>dscript.commands.eval — D-SCRIPT v1.0-beta documentation</title>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../../_static/js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></script>
|
||||
<script src="../../../_static/jquery.js"></script>
|
||||
<script src="../../../_static/underscore.js"></script>
|
||||
<script src="../../../_static/doctools.js"></script>
|
||||
|
||||
<script type="text/javascript" src="../../../_static/js/theme.js"></script>
|
||||
|
||||
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../../index.html" class="icon icon-home"> D-SCRIPT
|
||||
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../installation.html">Installation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../usage.html">Usage</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../data.html">Data</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../api/index.html">API</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
|
||||
|
||||
<nav class="wy-nav-top" aria-label="top navigation">
|
||||
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../../index.html">D-SCRIPT</a>
|
||||
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="wy-nav-content">
|
||||
|
||||
<div class="rst-content">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||
|
||||
<ul class="wy-breadcrumbs">
|
||||
|
||||
<li><a href="../../../index.html" class="icon icon-home"></a> »</li>
|
||||
|
||||
<li><a href="../../index.html">Module code</a> »</li>
|
||||
|
||||
<li>dscript.commands.eval</li>
|
||||
|
||||
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<h1>Source code for dscript.commands.eval</h1><div class="highlight"><pre>
|
||||
<span></span><span class="sd">"""</span>
|
||||
<span class="sd">Evaluate a trained model.</span>
|
||||
<span class="sd">"""</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">sys</span><span class="o">,</span> <span class="nn">os</span>
|
||||
<span class="kn">import</span> <span class="nn">argparse</span>
|
||||
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||||
<span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
|
||||
<span class="kn">import</span> <span class="nn">torch</span>
|
||||
<span class="kn">import</span> <span class="nn">h5py</span>
|
||||
<span class="kn">import</span> <span class="nn">datetime</span>
|
||||
<span class="kn">import</span> <span class="nn">matplotlib</span>
|
||||
|
||||
<span class="n">matplotlib</span><span class="o">.</span><span class="n">use</span><span class="p">(</span><span class="s2">"Agg"</span><span class="p">)</span>
|
||||
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
|
||||
<span class="kn">from</span> <span class="nn">sklearn.metrics</span> <span class="kn">import</span> <span class="p">(</span>
|
||||
<span class="n">precision_recall_curve</span><span class="p">,</span>
|
||||
<span class="n">average_precision_score</span><span class="p">,</span>
|
||||
<span class="n">roc_curve</span><span class="p">,</span>
|
||||
<span class="n">roc_auc_score</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="kn">from</span> <span class="nn">tqdm</span> <span class="kn">import</span> <span class="n">tqdm</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">add_args</span><span class="p">(</span><span class="n">parser</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Create parser for command line utility.</span>
|
||||
|
||||
<span class="sd"> :meta private:</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">"--model"</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">"Trained prediction model"</span><span class="p">,</span> <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">"--test"</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">"Test Data"</span><span class="p">,</span> <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">"--embedding"</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">"h5 file with embedded sequences"</span><span class="p">,</span> <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">"-o"</span><span class="p">,</span> <span class="s2">"--outfile"</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">"Output file to write results"</span><span class="p">)</span>
|
||||
<span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">"-d"</span><span class="p">,</span> <span class="s2">"--device"</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="nb">int</span><span class="p">,</span> <span class="n">default</span><span class="o">=-</span><span class="mi">1</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">"Compute device to use"</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">parser</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="plot_eval_predictions"><a class="viewcode-back" href="../../../api/dscript.commands.html#dscript.commands.eval.plot_eval_predictions">[docs]</a><span class="k">def</span> <span class="nf">plot_eval_predictions</span><span class="p">(</span><span class="n">labels</span><span class="p">,</span> <span class="n">predictions</span><span class="p">,</span> <span class="n">path</span><span class="o">=</span><span class="s2">"figure"</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Plot histogram of positive and negative predictions, precision-recall curve, and receiver operating characteristic curve.</span>
|
||||
|
||||
<span class="sd"> :param y: Labels</span>
|
||||
<span class="sd"> :type y: np.ndarray</span>
|
||||
<span class="sd"> :param phat: Predicted probabilities</span>
|
||||
<span class="sd"> :type phat: np.ndarray</span>
|
||||
<span class="sd"> :param path: File prefix for plots to be saved to [default: figure]</span>
|
||||
<span class="sd"> :type path: str</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">pos_phat</span> <span class="o">=</span> <span class="n">predictions</span><span class="p">[</span><span class="n">labels</span> <span class="o">==</span> <span class="mi">1</span><span class="p">]</span>
|
||||
<span class="n">neg_phat</span> <span class="o">=</span> <span class="n">predictions</span><span class="p">[</span><span class="n">labels</span> <span class="o">==</span> <span class="mi">0</span><span class="p">]</span>
|
||||
|
||||
<span class="n">fig</span><span class="p">,</span> <span class="p">(</span><span class="n">ax1</span><span class="p">,</span> <span class="n">ax2</span><span class="p">)</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
|
||||
<span class="n">fig</span><span class="o">.</span><span class="n">suptitle</span><span class="p">(</span><span class="s2">"Distribution of Predictions"</span><span class="p">)</span>
|
||||
<span class="n">ax1</span><span class="o">.</span><span class="n">hist</span><span class="p">(</span><span class="n">pos_phat</span><span class="p">)</span>
|
||||
<span class="n">ax1</span><span class="o">.</span><span class="n">set_xlim</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="n">ax1</span><span class="o">.</span><span class="n">set_title</span><span class="p">(</span><span class="s2">"Positive"</span><span class="p">)</span>
|
||||
<span class="n">ax1</span><span class="o">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="s2">"p-hat"</span><span class="p">)</span>
|
||||
<span class="n">ax2</span><span class="o">.</span><span class="n">hist</span><span class="p">(</span><span class="n">neg_phat</span><span class="p">)</span>
|
||||
<span class="n">ax2</span><span class="o">.</span><span class="n">set_xlim</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="n">ax2</span><span class="o">.</span><span class="n">set_title</span><span class="p">(</span><span class="s2">"Negative"</span><span class="p">)</span>
|
||||
<span class="n">ax2</span><span class="o">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="s2">"p-hat"</span><span class="p">)</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">savefig</span><span class="p">(</span><span class="n">path</span> <span class="o">+</span> <span class="s2">".phat_dist.png"</span><span class="p">)</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
|
||||
|
||||
<span class="n">precision</span><span class="p">,</span> <span class="n">recall</span><span class="p">,</span> <span class="n">pr_thresh</span> <span class="o">=</span> <span class="n">precision_recall_curve</span><span class="p">(</span><span class="n">labels</span><span class="p">,</span> <span class="n">predictions</span><span class="p">)</span>
|
||||
<span class="n">aupr</span> <span class="o">=</span> <span class="n">average_precision_score</span><span class="p">(</span><span class="n">labels</span><span class="p">,</span> <span class="n">predictions</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"AUPR:"</span><span class="p">,</span> <span class="n">aupr</span><span class="p">)</span>
|
||||
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">step</span><span class="p">(</span><span class="n">recall</span><span class="p">,</span> <span class="n">precision</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s2">"b"</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.2</span><span class="p">,</span> <span class="n">where</span><span class="o">=</span><span class="s2">"post"</span><span class="p">)</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">fill_between</span><span class="p">(</span><span class="n">recall</span><span class="p">,</span> <span class="n">precision</span><span class="p">,</span> <span class="n">step</span><span class="o">=</span><span class="s2">"post"</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.2</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s2">"b"</span><span class="p">)</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s2">"Recall"</span><span class="p">)</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s2">"Precision"</span><span class="p">)</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">ylim</span><span class="p">([</span><span class="mf">0.0</span><span class="p">,</span> <span class="mf">1.05</span><span class="p">])</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">xlim</span><span class="p">([</span><span class="mf">0.0</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">])</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s2">"Precision-Recall (AUPR: </span><span class="si">{:.3}</span><span class="s2">)"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">aupr</span><span class="p">))</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">savefig</span><span class="p">(</span><span class="n">path</span> <span class="o">+</span> <span class="s2">".aupr.png"</span><span class="p">)</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
|
||||
|
||||
<span class="n">fpr</span><span class="p">,</span> <span class="n">tpr</span><span class="p">,</span> <span class="n">roc_thresh</span> <span class="o">=</span> <span class="n">roc_curve</span><span class="p">(</span><span class="n">labels</span><span class="p">,</span> <span class="n">predictions</span><span class="p">)</span>
|
||||
<span class="n">auroc</span> <span class="o">=</span> <span class="n">roc_auc_score</span><span class="p">(</span><span class="n">labels</span><span class="p">,</span> <span class="n">predictions</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"AUROC:"</span><span class="p">,</span> <span class="n">auroc</span><span class="p">)</span>
|
||||
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">step</span><span class="p">(</span><span class="n">fpr</span><span class="p">,</span> <span class="n">tpr</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s2">"b"</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.2</span><span class="p">,</span> <span class="n">where</span><span class="o">=</span><span class="s2">"post"</span><span class="p">)</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">fill_between</span><span class="p">(</span><span class="n">fpr</span><span class="p">,</span> <span class="n">tpr</span><span class="p">,</span> <span class="n">step</span><span class="o">=</span><span class="s2">"post"</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.2</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s2">"b"</span><span class="p">)</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s2">"FPR"</span><span class="p">)</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s2">"TPR"</span><span class="p">)</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">ylim</span><span class="p">([</span><span class="mf">0.0</span><span class="p">,</span> <span class="mf">1.05</span><span class="p">])</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">xlim</span><span class="p">([</span><span class="mf">0.0</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">])</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s2">"Receiver Operating Characteristic (AUROC: </span><span class="si">{:.3}</span><span class="s2">)"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">auroc</span><span class="p">))</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">savefig</span><span class="p">(</span><span class="n">path</span> <span class="o">+</span> <span class="s2">".auroc.png"</span><span class="p">)</span>
|
||||
<span class="n">plt</span><span class="o">.</span><span class="n">close</span><span class="p">()</span></div>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">main</span><span class="p">(</span><span class="n">args</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Run model evaluation from arguments.</span>
|
||||
|
||||
<span class="sd"> :meta private:</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="c1"># Set Device</span>
|
||||
<span class="n">device</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">device</span>
|
||||
<span class="n">use_cuda</span> <span class="o">=</span> <span class="p">(</span><span class="n">device</span> <span class="o">>=</span> <span class="mi">0</span><span class="p">)</span> <span class="ow">and</span> <span class="n">torch</span><span class="o">.</span><span class="n">cuda</span><span class="o">.</span><span class="n">is_available</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">use_cuda</span><span class="p">:</span>
|
||||
<span class="n">torch</span><span class="o">.</span><span class="n">cuda</span><span class="o">.</span><span class="n">set_device</span><span class="p">(</span><span class="n">device</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"# Using CUDA device </span><span class="si">{</span><span class="n">device</span><span class="si">}</span><span class="s2"> - </span><span class="si">{</span><span class="n">torch</span><span class="o">.</span><span class="n">cuda</span><span class="o">.</span><span class="n">get_device_name</span><span class="p">(</span><span class="n">device</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"# Using CPU"</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Load Model</span>
|
||||
<span class="n">model_path</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">model</span>
|
||||
<span class="k">if</span> <span class="n">use_cuda</span><span class="p">:</span>
|
||||
<span class="n">model</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">model_path</span><span class="p">)</span><span class="o">.</span><span class="n">cuda</span><span class="p">()</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">model</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">model_path</span><span class="p">)</span><span class="o">.</span><span class="n">cpu</span><span class="p">()</span>
|
||||
<span class="n">model</span><span class="o">.</span><span class="n">use_cuda</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
|
||||
<span class="n">embeddingPath</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">embedding</span>
|
||||
<span class="n">h5fi</span> <span class="o">=</span> <span class="n">h5py</span><span class="o">.</span><span class="n">File</span><span class="p">(</span><span class="n">embeddingPath</span><span class="p">,</span> <span class="s2">"r"</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Load Pairs</span>
|
||||
<span class="n">test_fi</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">test</span>
|
||||
<span class="n">test_df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="n">test_fi</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">"</span><span class="se">\t</span><span class="s2">"</span><span class="p">,</span> <span class="n">header</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">outfile</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">outPath</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="o">.</span><span class="n">now</span><span class="p">()</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"%Y-%m-</span><span class="si">%d</span><span class="s2">-%H-%M"</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">outPath</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">outfile</span>
|
||||
<span class="n">outFile</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">outPath</span> <span class="o">+</span> <span class="s2">".predictions.tsv"</span><span class="p">,</span> <span class="s2">"w+"</span><span class="p">)</span>
|
||||
|
||||
<span class="n">allProteins</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">test_df</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span><span class="o">.</span><span class="n">union</span><span class="p">(</span><span class="n">test_df</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
|
||||
|
||||
<span class="n">seqEmbDict</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">tqdm</span><span class="p">(</span><span class="n">allProteins</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="s2">"Loading embeddings"</span><span class="p">):</span>
|
||||
<span class="n">seqEmbDict</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">from_numpy</span><span class="p">(</span><span class="n">h5fi</span><span class="p">[</span><span class="n">i</span><span class="p">][:])</span><span class="o">.</span><span class="n">float</span><span class="p">()</span>
|
||||
|
||||
<span class="n">model</span><span class="o">.</span><span class="n">eval</span><span class="p">()</span>
|
||||
<span class="k">with</span> <span class="n">torch</span><span class="o">.</span><span class="n">no_grad</span><span class="p">():</span>
|
||||
<span class="n">phats</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="n">labels</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">_</span><span class="p">,</span> <span class="p">(</span><span class="n">n0</span><span class="p">,</span> <span class="n">n1</span><span class="p">,</span> <span class="n">label</span><span class="p">)</span> <span class="ow">in</span> <span class="n">tqdm</span><span class="p">(</span><span class="n">test_df</span><span class="o">.</span><span class="n">iterrows</span><span class="p">(),</span> <span class="n">total</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="n">test_df</span><span class="p">),</span> <span class="n">desc</span><span class="o">=</span><span class="s2">"Predicting pairs"</span><span class="p">):</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">p0</span> <span class="o">=</span> <span class="n">seqEmbDict</span><span class="p">[</span><span class="n">n0</span><span class="p">]</span>
|
||||
<span class="n">p1</span> <span class="o">=</span> <span class="n">seqEmbDict</span><span class="p">[</span><span class="n">n1</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="n">use_cuda</span><span class="p">:</span>
|
||||
<span class="n">p0</span> <span class="o">=</span> <span class="n">p0</span><span class="o">.</span><span class="n">cuda</span><span class="p">()</span>
|
||||
<span class="n">p1</span> <span class="o">=</span> <span class="n">p1</span><span class="o">.</span><span class="n">cuda</span><span class="p">()</span>
|
||||
|
||||
<span class="n">pred</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">p0</span><span class="p">,</span> <span class="n">p1</span><span class="p">)</span><span class="o">.</span><span class="n">item</span><span class="p">()</span>
|
||||
<span class="n">phats</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">pred</span><span class="p">)</span>
|
||||
<span class="n">labels</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">label</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"</span><span class="si">{}</span><span class="se">\t</span><span class="si">{}</span><span class="se">\t</span><span class="si">{}</span><span class="se">\t</span><span class="si">{:.5}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">n0</span><span class="p">,</span> <span class="n">n1</span><span class="p">,</span> <span class="n">label</span><span class="p">,</span> <span class="n">pred</span><span class="p">),</span> <span class="n">file</span><span class="o">=</span><span class="n">outFile</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="n">sys</span><span class="o">.</span><span class="n">stderr</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s2">"</span><span class="si">{}</span><span class="s2"> x </span><span class="si">{}</span><span class="s2"> - </span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">n0</span><span class="p">,</span> <span class="n">n1</span><span class="p">,</span> <span class="n">e</span><span class="p">))</span>
|
||||
|
||||
<span class="n">phats</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">phats</span><span class="p">)</span>
|
||||
<span class="n">labels</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">labels</span><span class="p">)</span>
|
||||
<span class="n">plot_eval_predictions</span><span class="p">(</span><span class="n">labels</span><span class="p">,</span> <span class="n">phats</span><span class="p">,</span> <span class="n">outPath</span><span class="p">)</span>
|
||||
|
||||
<span class="n">outFile</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
|
||||
<span class="n">h5fi</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
|
||||
|
||||
|
||||
<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">"__main__"</span><span class="p">:</span>
|
||||
<span class="n">parser</span> <span class="o">=</span> <span class="n">argparse</span><span class="o">.</span><span class="n">ArgumentParser</span><span class="p">(</span><span class="n">description</span><span class="o">=</span><span class="vm">__doc__</span><span class="p">)</span>
|
||||
<span class="n">add_args</span><span class="p">(</span><span class="n">parser</span><span class="p">)</span>
|
||||
<span class="n">main</span><span class="p">(</span><span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">())</span>
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2020, Samuel Sledzieski, Rohit Singh.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,344 +0,0 @@
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" >
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>dscript.commands.predict — D-SCRIPT v1.0-beta documentation</title>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../../_static/js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></script>
|
||||
<script src="../../../_static/jquery.js"></script>
|
||||
<script src="../../../_static/underscore.js"></script>
|
||||
<script src="../../../_static/doctools.js"></script>
|
||||
<script src="../../../_static/language_data.js"></script>
|
||||
<script async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
|
||||
|
||||
<script type="text/javascript" src="../../../_static/js/theme.js"></script>
|
||||
|
||||
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../../index.html" class="icon icon-home" alt="Documentation Home"> D-SCRIPT
|
||||
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../installation.html">Installation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../usage.html">Usage</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../data.html">Data</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../api/index.html">API</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
|
||||
|
||||
<nav class="wy-nav-top" aria-label="top navigation">
|
||||
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../../index.html">D-SCRIPT</a>
|
||||
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="wy-nav-content">
|
||||
|
||||
<div class="rst-content">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||
|
||||
<ul class="wy-breadcrumbs">
|
||||
|
||||
<li><a href="../../../index.html" class="icon icon-home"></a> »</li>
|
||||
|
||||
<li><a href="../../index.html">Module code</a> »</li>
|
||||
|
||||
<li>dscript.commands.predict</li>
|
||||
|
||||
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<h1>Source code for dscript.commands.predict</h1><div class="highlight"><pre>
|
||||
<span></span><span class="sd">"""</span>
|
||||
<span class="sd">Make new predictions with a pre-trained model.</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="kn">import</span> <span class="nn">sys</span><span class="o">,</span> <span class="nn">os</span>
|
||||
<span class="kn">import</span> <span class="nn">torch</span>
|
||||
<span class="kn">import</span> <span class="nn">h5py</span>
|
||||
<span class="kn">import</span> <span class="nn">argparse</span>
|
||||
<span class="kn">import</span> <span class="nn">datetime</span>
|
||||
<span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
|
||||
<span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">comb</span>
|
||||
<span class="kn">from</span> <span class="nn">tqdm</span> <span class="kn">import</span> <span class="n">tqdm</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">dscript.alphabets</span> <span class="kn">import</span> <span class="n">Uniprot21</span>
|
||||
<span class="kn">from</span> <span class="nn">dscript.fasta</span> <span class="kn">import</span> <span class="n">parse</span>
|
||||
<span class="kn">from</span> <span class="nn">dscript.language_model</span> <span class="kn">import</span> <span class="n">lm_embed</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="add_args"><a class="viewcode-back" href="../../../api/dscript.commands.html#dscript.commands.predict.add_args">[docs]</a><span class="k">def</span> <span class="nf">add_args</span><span class="p">(</span><span class="n">parser</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Create parser for command line utility</span>
|
||||
|
||||
<span class="sd"> :meta private:</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">"--pairs"</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">"Candidate protein pairs to predict"</span><span class="p">,</span> <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">"--model"</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">"Pretrained Model"</span><span class="p">,</span> <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">"--seqs"</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">"Protein sequences in .fasta format"</span><span class="p">)</span>
|
||||
<span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">"--embeddings"</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">"h5 file with embedded sequences"</span><span class="p">)</span>
|
||||
<span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">"-o"</span><span class="p">,</span> <span class="s2">"--outfile"</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">"File for predictions"</span><span class="p">)</span>
|
||||
<span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">"-d"</span><span class="p">,</span> <span class="s2">"--device"</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="nb">int</span><span class="p">,</span> <span class="n">default</span><span class="o">=-</span><span class="mi">1</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">"Compute device to use"</span><span class="p">)</span>
|
||||
<span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
|
||||
<span class="s2">"--thresh"</span><span class="p">,</span>
|
||||
<span class="nb">type</span><span class="o">=</span><span class="nb">float</span><span class="p">,</span>
|
||||
<span class="n">default</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span>
|
||||
<span class="n">help</span><span class="o">=</span><span class="s2">"Positive prediction threshold - used to store contact maps and predictions in a separate file. [default: 0.5]"</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">parser</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="main"><a class="viewcode-back" href="../../../api/dscript.commands.html#dscript.commands.predict.main">[docs]</a><span class="k">def</span> <span class="nf">main</span><span class="p">(</span><span class="n">args</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Run new prediction from arguments.</span>
|
||||
|
||||
<span class="sd"> :meta private:</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">seqs</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">args</span><span class="o">.</span><span class="n">embeddings</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"One of --seqs or --embeddings is required."</span><span class="p">)</span>
|
||||
<span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
||||
|
||||
<span class="n">csvPath</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">pairs</span>
|
||||
<span class="n">modelPath</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">model</span>
|
||||
<span class="n">outPath</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">outfile</span>
|
||||
<span class="n">seqPath</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">seqs</span>
|
||||
<span class="n">embPath</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">embeddings</span>
|
||||
<span class="n">device</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">device</span>
|
||||
<span class="n">threshold</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">thresh</span>
|
||||
|
||||
<span class="c1"># Set Outpath</span>
|
||||
<span class="k">if</span> <span class="n">outPath</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">outPath</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="o">.</span><span class="n">now</span><span class="p">()</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"%Y-%m-</span><span class="si">%d</span><span class="s2">-%H-%M.predictions"</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Set Device</span>
|
||||
<span class="n">use_cuda</span> <span class="o">=</span> <span class="p">(</span><span class="n">device</span> <span class="o">>=</span> <span class="mi">0</span><span class="p">)</span> <span class="ow">and</span> <span class="n">torch</span><span class="o">.</span><span class="n">cuda</span><span class="o">.</span><span class="n">is_available</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">use_cuda</span><span class="p">:</span>
|
||||
<span class="n">torch</span><span class="o">.</span><span class="n">cuda</span><span class="o">.</span><span class="n">set_device</span><span class="p">(</span><span class="n">device</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"# Using CUDA device </span><span class="si">{device}</span><span class="s2"> - {torch.cuda.get_device_name(device)}"</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"# Using CPU"</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Load Model</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">use_cuda</span><span class="p">:</span>
|
||||
<span class="n">model</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">modelPath</span><span class="p">)</span><span class="o">.</span><span class="n">cuda</span><span class="p">()</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">model</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">modelPath</span><span class="p">)</span><span class="o">.</span><span class="n">cpu</span><span class="p">()</span>
|
||||
<span class="n">model</span><span class="o">.</span><span class="n">use_cuda</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="k">except</span> <span class="ne">FileNotFoundError</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"# Model </span><span class="si">{modelPath}</span><span class="s2"> not found"</span><span class="p">)</span>
|
||||
<span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Load Pairs</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">pairs</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="n">csvPath</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">"</span><span class="se">\t</span><span class="s2">"</span><span class="p">,</span> <span class="n">header</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
|
||||
<span class="n">all_prots</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">pairs</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span> <span class="mi">0</span><span class="p">])</span><span class="o">.</span><span class="n">union</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">pairs</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span> <span class="mi">1</span><span class="p">]))</span>
|
||||
<span class="k">except</span> <span class="ne">FileNotFoundError</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"# Pairs File </span><span class="si">{csvPath}</span><span class="s2"> not found"</span><span class="p">)</span>
|
||||
<span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Load Sequences or Embeddings</span>
|
||||
<span class="k">if</span> <span class="n">embPath</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">names</span><span class="p">,</span> <span class="n">seqs</span> <span class="o">=</span> <span class="n">parse</span><span class="p">(</span><span class="nb">open</span><span class="p">(</span><span class="n">seqPath</span><span class="p">,</span> <span class="s2">"r"</span><span class="p">))</span>
|
||||
<span class="n">seqDict</span> <span class="o">=</span> <span class="p">{</span><span class="n">n</span><span class="p">:</span> <span class="n">s</span> <span class="k">for</span> <span class="n">n</span><span class="p">,</span> <span class="n">s</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">names</span><span class="p">,</span> <span class="n">seqs</span><span class="p">)}</span>
|
||||
<span class="k">except</span> <span class="ne">FileNotFoundError</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"# Sequence File </span><span class="si">{fastaPath}</span><span class="s2"> not found"</span><span class="p">)</span>
|
||||
<span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"# Generating Embeddings..."</span><span class="p">)</span>
|
||||
<span class="n">embeddings</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">tqdm</span><span class="p">(</span><span class="n">all_prots</span><span class="p">):</span>
|
||||
<span class="n">embeddings</span><span class="p">[</span><span class="n">n</span><span class="p">]</span> <span class="o">=</span> <span class="n">lm_embed</span><span class="p">(</span><span class="n">seqDict</span><span class="p">[</span><span class="n">n</span><span class="p">],</span> <span class="n">use_cuda</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"# Loading Embeddings..."</span><span class="p">)</span>
|
||||
<span class="n">embedH5</span> <span class="o">=</span> <span class="n">h5py</span><span class="o">.</span><span class="n">File</span><span class="p">(</span><span class="n">embPath</span><span class="p">,</span> <span class="s2">"r"</span><span class="p">)</span>
|
||||
<span class="n">embeddings</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">tqdm</span><span class="p">(</span><span class="n">all_prots</span><span class="p">):</span>
|
||||
<span class="n">embeddings</span><span class="p">[</span><span class="n">n</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">from_numpy</span><span class="p">(</span><span class="n">embedH5</span><span class="p">[</span><span class="n">n</span><span class="p">][:])</span>
|
||||
<span class="n">embedH5</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
|
||||
|
||||
<span class="c1"># Make Predictions</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"# Making Predictions..."</span><span class="p">)</span>
|
||||
<span class="n">n</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="n">outPathAll</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{outPath}</span><span class="s2">.tsv"</span>
|
||||
<span class="n">outPathPos</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{outPath}</span><span class="s2">.positive.tsv"</span>
|
||||
<span class="n">cmap_file</span> <span class="o">=</span> <span class="n">h5py</span><span class="o">.</span><span class="n">File</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{outPath}</span><span class="s2">.cmaps.h5"</span><span class="p">,</span> <span class="s2">"w"</span><span class="p">)</span>
|
||||
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">outPathAll</span><span class="p">,</span> <span class="s2">"w+"</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
|
||||
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">outPathPos</span><span class="p">,</span> <span class="s2">"w+"</span><span class="p">)</span> <span class="k">as</span> <span class="n">pos_f</span><span class="p">:</span>
|
||||
<span class="k">with</span> <span class="n">torch</span><span class="o">.</span><span class="n">no_grad</span><span class="p">():</span>
|
||||
<span class="k">for</span> <span class="n">_</span><span class="p">,</span> <span class="p">(</span><span class="n">n0</span><span class="p">,</span> <span class="n">n1</span><span class="p">)</span> <span class="ow">in</span> <span class="n">tqdm</span><span class="p">(</span><span class="n">pairs</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:,</span> <span class="p">:</span><span class="mi">2</span><span class="p">]</span><span class="o">.</span><span class="n">iterrows</span><span class="p">(),</span> <span class="n">total</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="n">pairs</span><span class="p">)):</span>
|
||||
<span class="n">n0</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">n0</span><span class="p">)</span>
|
||||
<span class="n">n1</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">n1</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">n</span> <span class="o">%</span> <span class="mi">50</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="n">f</span><span class="o">.</span><span class="n">flush</span><span class="p">()</span>
|
||||
<span class="n">n</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
<span class="n">p0</span> <span class="o">=</span> <span class="n">embeddings</span><span class="p">[</span><span class="n">n0</span><span class="p">]</span>
|
||||
<span class="n">p1</span> <span class="o">=</span> <span class="n">embeddings</span><span class="p">[</span><span class="n">n1</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="n">use_cuda</span><span class="p">:</span>
|
||||
<span class="n">p0</span> <span class="o">=</span> <span class="n">p0</span><span class="o">.</span><span class="n">cuda</span><span class="p">()</span>
|
||||
<span class="n">p1</span> <span class="o">=</span> <span class="n">p1</span><span class="o">.</span><span class="n">cuda</span><span class="p">()</span>
|
||||
|
||||
<span class="n">cm</span><span class="p">,</span> <span class="n">p</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">map_predict</span><span class="p">(</span><span class="n">p0</span><span class="p">,</span> <span class="n">p1</span><span class="p">)</span>
|
||||
<span class="n">p</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">item</span><span class="p">()</span>
|
||||
<span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{n0}</span><span class="se">\t</span><span class="si">{n1}</span><span class="se">\t</span><span class="si">{p}</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">p</span> <span class="o">>=</span> <span class="n">threshold</span><span class="p">:</span>
|
||||
<span class="n">pos_f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{n0}</span><span class="se">\t</span><span class="si">{n1}</span><span class="se">\t</span><span class="si">{p}</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="n">cmap_file</span><span class="o">.</span><span class="n">create_dataset</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{n0}</span><span class="s2">x</span><span class="si">{n1}</span><span class="s2">"</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="n">cm</span><span class="o">.</span><span class="n">squeeze</span><span class="p">()</span><span class="o">.</span><span class="n">cpu</span><span class="p">()</span><span class="o">.</span><span class="n">numpy</span><span class="p">())</span>
|
||||
|
||||
<span class="n">cmap_file</span><span class="o">.</span><span class="n">close</span><span class="p">()</span></div>
|
||||
|
||||
|
||||
<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">"__main__"</span><span class="p">:</span>
|
||||
<span class="n">parser</span> <span class="o">=</span> <span class="n">argparse</span><span class="o">.</span><span class="n">ArgumentParser</span><span class="p">(</span><span class="n">description</span><span class="o">=</span><span class="vm">__doc__</span><span class="p">)</span>
|
||||
<span class="n">add_args</span><span class="p">(</span><span class="n">parser</span><span class="p">)</span>
|
||||
<span class="n">main</span><span class="p">(</span><span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">())</span>
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
|
||||
© Copyright 2020, Samuel Sledzieski, Rohit Singh
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
|
||||
|
||||
<a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
|
||||
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
809
docs/build/html/_modules/dscript/commands/train.html
vendored
809
docs/build/html/_modules/dscript/commands/train.html
vendored
@@ -1,809 +0,0 @@
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<title>dscript.commands.train — D-SCRIPT v1.0-beta documentation</title>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../../_static/js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></script>
|
||||
<script src="../../../_static/jquery.js"></script>
|
||||
<script src="../../../_static/underscore.js"></script>
|
||||
<script src="../../../_static/doctools.js"></script>
|
||||
|
||||
<script type="text/javascript" src="../../../_static/js/theme.js"></script>
|
||||
|
||||
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../../index.html" class="icon icon-home"> D-SCRIPT
|
||||
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../installation.html">Installation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../usage.html">Usage</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../data.html">Data</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../api/index.html">API</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
|
||||
|
||||
<nav class="wy-nav-top" aria-label="top navigation">
|
||||
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../../index.html">D-SCRIPT</a>
|
||||
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="wy-nav-content">
|
||||
|
||||
<div class="rst-content">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||
|
||||
<ul class="wy-breadcrumbs">
|
||||
|
||||
<li><a href="../../../index.html" class="icon icon-home"></a> »</li>
|
||||
|
||||
<li><a href="../../index.html">Module code</a> »</li>
|
||||
|
||||
<li>dscript.commands.train</li>
|
||||
|
||||
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<h1>Source code for dscript.commands.train</h1><div class="highlight"><pre>
|
||||
<span></span><span class="sd">"""</span>
|
||||
<span class="sd">Train a new model.</span>
|
||||
<span class="sd">"""</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">torch</span>
|
||||
<span class="kn">import</span> <span class="nn">torch.nn</span> <span class="k">as</span> <span class="nn">nn</span>
|
||||
<span class="kn">import</span> <span class="nn">torch.nn.functional</span> <span class="k">as</span> <span class="nn">F</span>
|
||||
<span class="kn">import</span> <span class="nn">torch.optim</span> <span class="k">as</span> <span class="nn">optim</span>
|
||||
<span class="kn">from</span> <span class="nn">torch.autograd</span> <span class="kn">import</span> <span class="n">Variable</span>
|
||||
<span class="kn">from</span> <span class="nn">torch.utils.data</span> <span class="kn">import</span> <span class="n">IterableDataset</span><span class="p">,</span> <span class="n">DataLoader</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">sklearn.metrics</span> <span class="kn">import</span> <span class="n">average_precision_score</span> <span class="k">as</span> <span class="n">average_precision</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">sys</span>
|
||||
<span class="kn">import</span> <span class="nn">argparse</span>
|
||||
<span class="kn">import</span> <span class="nn">h5py</span>
|
||||
<span class="kn">import</span> <span class="nn">subprocess</span> <span class="k">as</span> <span class="nn">sp</span>
|
||||
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||||
<span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
|
||||
<span class="kn">import</span> <span class="nn">gzip</span> <span class="k">as</span> <span class="nn">gz</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">tqdm</span> <span class="kn">import</span> <span class="n">tqdm</span>
|
||||
<span class="kn">from</span> <span class="nn">..alphabets</span> <span class="kn">import</span> <span class="n">Uniprot21</span>
|
||||
<span class="kn">from</span> <span class="nn">..utils</span> <span class="kn">import</span> <span class="n">PairedDataset</span><span class="p">,</span> <span class="n">collate_paired_sequences</span>
|
||||
<span class="kn">from</span> <span class="nn">..models.embedding</span> <span class="kn">import</span> <span class="n">FullyConnectedEmbed</span>
|
||||
<span class="kn">from</span> <span class="nn">..models.contact</span> <span class="kn">import</span> <span class="n">ContactCNN</span>
|
||||
<span class="kn">from</span> <span class="nn">..models.interaction</span> <span class="kn">import</span> <span class="n">ModelInteraction</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">add_args</span><span class="p">(</span><span class="n">parser</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Create parser for command line utility.</span>
|
||||
|
||||
<span class="sd"> :meta private:</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">data_grp</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">add_argument_group</span><span class="p">(</span><span class="s2">"Data"</span><span class="p">)</span>
|
||||
<span class="n">proj_grp</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">add_argument_group</span><span class="p">(</span><span class="s2">"Projection Module"</span><span class="p">)</span>
|
||||
<span class="n">contact_grp</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">add_argument_group</span><span class="p">(</span><span class="s2">"Contact Module"</span><span class="p">)</span>
|
||||
<span class="n">inter_grp</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">add_argument_group</span><span class="p">(</span><span class="s2">"Interaction Module"</span><span class="p">)</span>
|
||||
<span class="n">train_grp</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">add_argument_group</span><span class="p">(</span><span class="s2">"Training"</span><span class="p">)</span>
|
||||
<span class="n">misc_grp</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">add_argument_group</span><span class="p">(</span><span class="s2">"Output and Device"</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Data</span>
|
||||
<span class="n">data_grp</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
|
||||
<span class="s2">"--train"</span><span class="p">,</span> <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">"list of training pairs"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">data_grp</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
|
||||
<span class="s2">"--test"</span><span class="p">,</span> <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">"list of validation/testing pairs"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">data_grp</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
|
||||
<span class="s2">"--embedding"</span><span class="p">,</span> <span class="n">required</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">"h5py path containing embedded sequences"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">data_grp</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
|
||||
<span class="s2">"--no-augment"</span><span class="p">,</span>
|
||||
<span class="n">action</span><span class="o">=</span><span class="s2">"store_true"</span><span class="p">,</span>
|
||||
<span class="n">help</span><span class="o">=</span><span class="s2">"data is automatically augmented by adding (B A) for all pairs (A B). Set this flag to not augment data"</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
|
||||
<span class="s2">"--protein-size"</span><span class="p">,</span>
|
||||
<span class="n">default</span><span class="o">=</span><span class="mi">800</span><span class="p">,</span>
|
||||
<span class="n">help</span><span class="o">=</span><span class="s2">"maximum protein size to use in training data (default: 800)"</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="c1"># Embedding model</span>
|
||||
<span class="n">proj_grp</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
|
||||
<span class="s2">"--input-dim"</span><span class="p">,</span>
|
||||
<span class="nb">type</span><span class="o">=</span><span class="nb">int</span><span class="p">,</span>
|
||||
<span class="n">default</span><span class="o">=</span><span class="mi">6165</span><span class="p">,</span>
|
||||
<span class="n">help</span><span class="o">=</span><span class="s2">"dimension of input language model embedding (per amino acid) (default: 6165)"</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">proj_grp</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
|
||||
<span class="s2">"--projection-dim"</span><span class="p">,</span>
|
||||
<span class="nb">type</span><span class="o">=</span><span class="nb">int</span><span class="p">,</span>
|
||||
<span class="n">default</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span>
|
||||
<span class="n">help</span><span class="o">=</span><span class="s2">"dimension of embedding projection layer (default: 100)"</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">proj_grp</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
|
||||
<span class="s2">"--dropout-p"</span><span class="p">,</span>
|
||||
<span class="nb">type</span><span class="o">=</span><span class="nb">float</span><span class="p">,</span>
|
||||
<span class="n">default</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span>
|
||||
<span class="n">help</span><span class="o">=</span><span class="s2">"parameter p for embedding dropout layer (default: 0.5)"</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="c1"># Contact model</span>
|
||||
<span class="n">contact_grp</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
|
||||
<span class="s2">"--hidden-dim"</span><span class="p">,</span>
|
||||
<span class="nb">type</span><span class="o">=</span><span class="nb">int</span><span class="p">,</span>
|
||||
<span class="n">default</span><span class="o">=</span><span class="mi">50</span><span class="p">,</span>
|
||||
<span class="n">help</span><span class="o">=</span><span class="s2">"number of hidden units for comparison layer in contact prediction (default: 50)"</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">contact_grp</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
|
||||
<span class="s2">"--kernel-width"</span><span class="p">,</span>
|
||||
<span class="nb">type</span><span class="o">=</span><span class="nb">int</span><span class="p">,</span>
|
||||
<span class="n">default</span><span class="o">=</span><span class="mi">7</span><span class="p">,</span>
|
||||
<span class="n">help</span><span class="o">=</span><span class="s2">"width of convolutional filter for contact prediction (default: 7)"</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="c1"># Interaction Model</span>
|
||||
<span class="n">inter_grp</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
|
||||
<span class="s2">"--no-w"</span><span class="p">,</span>
|
||||
<span class="n">action</span><span class="o">=</span><span class="s2">"store_true"</span><span class="p">,</span>
|
||||
<span class="n">help</span><span class="o">=</span><span class="s2">"don't use weight matrix in interaction prediction model"</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">inter_grp</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
|
||||
<span class="s2">"--no-sigmoid"</span><span class="p">,</span>
|
||||
<span class="n">action</span><span class="o">=</span><span class="s2">"store_true"</span><span class="p">,</span>
|
||||
<span class="n">help</span><span class="o">=</span><span class="s2">"don't use sigmoid activation at end of interaction model"</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">inter_grp</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
|
||||
<span class="s2">"--do-pool"</span><span class="p">,</span>
|
||||
<span class="n">action</span><span class="o">=</span><span class="s2">"store_true"</span><span class="p">,</span>
|
||||
<span class="n">help</span><span class="o">=</span><span class="s2">"use max pool layer in interaction prediction model"</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">inter_grp</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
|
||||
<span class="s2">"--pool-width"</span><span class="p">,</span>
|
||||
<span class="nb">type</span><span class="o">=</span><span class="nb">int</span><span class="p">,</span>
|
||||
<span class="n">default</span><span class="o">=</span><span class="mi">9</span><span class="p">,</span>
|
||||
<span class="n">help</span><span class="o">=</span><span class="s2">"size of max-pool in interaction model (default: 9)"</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="c1"># Training</span>
|
||||
<span class="n">train_grp</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
|
||||
<span class="s2">"--num-epochs"</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="nb">int</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">"number of epochs (default: 10)"</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">train_grp</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
|
||||
<span class="s2">"--batch-size"</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="nb">int</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">25</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">"minibatch size (default: 25)"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">train_grp</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
|
||||
<span class="s2">"--weight-decay"</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="nb">float</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">"L2 regularization (default: 0)"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">train_grp</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
|
||||
<span class="s2">"--lr"</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="nb">float</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mf">0.001</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">"learning rate (default: 0.001)"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">train_grp</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
|
||||
<span class="s2">"--lambda"</span><span class="p">,</span>
|
||||
<span class="n">dest</span><span class="o">=</span><span class="s2">"lambda_"</span><span class="p">,</span>
|
||||
<span class="nb">type</span><span class="o">=</span><span class="nb">float</span><span class="p">,</span>
|
||||
<span class="n">default</span><span class="o">=</span><span class="mf">0.35</span><span class="p">,</span>
|
||||
<span class="n">help</span><span class="o">=</span><span class="s2">"weight on the similarity objective (default: 0.35)"</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="c1"># Output</span>
|
||||
<span class="n">misc_grp</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">"-o"</span><span class="p">,</span> <span class="s2">"--output"</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">"output file path (default: stdout)"</span><span class="p">)</span>
|
||||
<span class="n">misc_grp</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s2">"--save-prefix"</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">"path prefix for saving models"</span><span class="p">)</span>
|
||||
<span class="n">misc_grp</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
|
||||
<span class="s2">"-d"</span><span class="p">,</span> <span class="s2">"--device"</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="nb">int</span><span class="p">,</span> <span class="n">default</span><span class="o">=-</span><span class="mi">1</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">"compute device to use"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">misc_grp</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span>
|
||||
<span class="s2">"--checkpoint"</span><span class="p">,</span> <span class="n">help</span><span class="o">=</span><span class="s2">"checkpoint model to start training from"</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">parser</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="predict_interaction"><a class="viewcode-back" href="../../../api/dscript.commands.html#dscript.commands.train.predict_interaction">[docs]</a><span class="k">def</span> <span class="nf">predict_interaction</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">n0</span><span class="p">,</span> <span class="n">n1</span><span class="p">,</span> <span class="n">tensors</span><span class="p">,</span> <span class="n">use_cuda</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Predict whether a list of protein pairs will interact.</span>
|
||||
|
||||
<span class="sd"> :param model: Model to be trained</span>
|
||||
<span class="sd"> :type model: dscript.models.interaction.ModelInteraction</span>
|
||||
<span class="sd"> :param n0: First protein names</span>
|
||||
<span class="sd"> :type n0: list[str]</span>
|
||||
<span class="sd"> :param n1: Second protein names</span>
|
||||
<span class="sd"> :type n1: list[str]</span>
|
||||
<span class="sd"> :param tensors: Dictionary of protein names to embeddings</span>
|
||||
<span class="sd"> :type tensors: dict[str, torch.Tensor]</span>
|
||||
<span class="sd"> :param use_cuda: Whether to use GPU</span>
|
||||
<span class="sd"> :type use_cuda: bool</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">b</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">n0</span><span class="p">)</span>
|
||||
|
||||
<span class="n">p_hat</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">b</span><span class="p">):</span>
|
||||
<span class="n">z_a</span> <span class="o">=</span> <span class="n">tensors</span><span class="p">[</span><span class="n">n0</span><span class="p">[</span><span class="n">i</span><span class="p">]]</span>
|
||||
<span class="n">z_b</span> <span class="o">=</span> <span class="n">tensors</span><span class="p">[</span><span class="n">n1</span><span class="p">[</span><span class="n">i</span><span class="p">]]</span>
|
||||
<span class="k">if</span> <span class="n">use_cuda</span><span class="p">:</span>
|
||||
<span class="n">z_a</span> <span class="o">=</span> <span class="n">z_a</span><span class="o">.</span><span class="n">cuda</span><span class="p">()</span>
|
||||
<span class="n">z_b</span> <span class="o">=</span> <span class="n">z_b</span><span class="o">.</span><span class="n">cuda</span><span class="p">()</span>
|
||||
<span class="n">p_hat</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">model</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">z_a</span><span class="p">,</span> <span class="n">z_b</span><span class="p">))</span>
|
||||
<span class="n">p_hat</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">stack</span><span class="p">(</span><span class="n">p_hat</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">p_hat</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="predict_cmap_interaction"><a class="viewcode-back" href="../../../api/dscript.commands.html#dscript.commands.train.predict_cmap_interaction">[docs]</a><span class="k">def</span> <span class="nf">predict_cmap_interaction</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">n0</span><span class="p">,</span> <span class="n">n1</span><span class="p">,</span> <span class="n">tensors</span><span class="p">,</span> <span class="n">use_cuda</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Predict whether a list of protein pairs will interact, as well as their contact map.</span>
|
||||
|
||||
<span class="sd"> :param model: Model to be trained</span>
|
||||
<span class="sd"> :type model: dscript.models.interaction.ModelInteraction</span>
|
||||
<span class="sd"> :param n0: First protein names</span>
|
||||
<span class="sd"> :type n0: list[str]</span>
|
||||
<span class="sd"> :param n1: Second protein names</span>
|
||||
<span class="sd"> :type n1: list[str]</span>
|
||||
<span class="sd"> :param tensors: Dictionary of protein names to embeddings</span>
|
||||
<span class="sd"> :type tensors: dict[str, torch.Tensor]</span>
|
||||
<span class="sd"> :param use_cuda: Whether to use GPU</span>
|
||||
<span class="sd"> :type use_cuda: bool</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">b</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">n0</span><span class="p">)</span>
|
||||
|
||||
<span class="n">p_hat</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="n">c_map_mag</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">b</span><span class="p">):</span>
|
||||
<span class="n">z_a</span> <span class="o">=</span> <span class="n">tensors</span><span class="p">[</span><span class="n">n0</span><span class="p">[</span><span class="n">i</span><span class="p">]]</span>
|
||||
<span class="n">z_b</span> <span class="o">=</span> <span class="n">tensors</span><span class="p">[</span><span class="n">n1</span><span class="p">[</span><span class="n">i</span><span class="p">]]</span>
|
||||
<span class="k">if</span> <span class="n">use_cuda</span><span class="p">:</span>
|
||||
<span class="n">z_a</span> <span class="o">=</span> <span class="n">z_a</span><span class="o">.</span><span class="n">cuda</span><span class="p">()</span>
|
||||
<span class="n">z_b</span> <span class="o">=</span> <span class="n">z_b</span><span class="o">.</span><span class="n">cuda</span><span class="p">()</span>
|
||||
<span class="n">cm</span><span class="p">,</span> <span class="n">ph</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">map_predict</span><span class="p">(</span><span class="n">z_a</span><span class="p">,</span> <span class="n">z_b</span><span class="p">)</span>
|
||||
<span class="n">p_hat</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">ph</span><span class="p">)</span>
|
||||
<span class="n">c_map_mag</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">cm</span><span class="p">))</span>
|
||||
<span class="n">p_hat</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">stack</span><span class="p">(</span><span class="n">p_hat</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
|
||||
<span class="n">c_map_mag</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">stack</span><span class="p">(</span><span class="n">c_map_mag</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">c_map_mag</span><span class="p">,</span> <span class="n">p_hat</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="interaction_grad"><a class="viewcode-back" href="../../../api/dscript.commands.html#dscript.commands.train.interaction_grad">[docs]</a><span class="k">def</span> <span class="nf">interaction_grad</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">n0</span><span class="p">,</span> <span class="n">n1</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">tensors</span><span class="p">,</span> <span class="n">use_cuda</span><span class="p">,</span> <span class="n">weight</span><span class="o">=</span><span class="mf">0.35</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Compute gradient and backpropagate loss for a batch.</span>
|
||||
|
||||
<span class="sd"> :param model: Model to be trained</span>
|
||||
<span class="sd"> :type model: dscript.models.interaction.ModelInteraction</span>
|
||||
<span class="sd"> :param n0: First protein names</span>
|
||||
<span class="sd"> :type n0: list[str]</span>
|
||||
<span class="sd"> :param n1: Second protein names</span>
|
||||
<span class="sd"> :type n1: list[str]</span>
|
||||
<span class="sd"> :param y: Interaction labels</span>
|
||||
<span class="sd"> :type y: torch.Tensor</span>
|
||||
<span class="sd"> :param tensors: Dictionary of protein names to embeddings</span>
|
||||
<span class="sd"> :type tensors: dict[str, torch.Tensor]</span>
|
||||
<span class="sd"> :param use_cuda: Whether to use GPU</span>
|
||||
<span class="sd"> :type use_cuda: bool</span>
|
||||
<span class="sd"> :param weight: Weight on the contact map magnitude objective. BCE loss is :math:`1 - \\text{weight}`.</span>
|
||||
<span class="sd"> :type weight: float</span>
|
||||
|
||||
<span class="sd"> :return: (Loss, number correct, mean square error, batch size)</span>
|
||||
<span class="sd"> :rtype: (torch.Tensor, int, torch.Tensor, int)</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">c_map_mag</span><span class="p">,</span> <span class="n">p_hat</span> <span class="o">=</span> <span class="n">predict_cmap_interaction</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">n0</span><span class="p">,</span> <span class="n">n1</span><span class="p">,</span> <span class="n">tensors</span><span class="p">,</span> <span class="n">use_cuda</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">use_cuda</span><span class="p">:</span>
|
||||
<span class="n">y</span> <span class="o">=</span> <span class="n">y</span><span class="o">.</span><span class="n">cuda</span><span class="p">()</span>
|
||||
<span class="n">y</span> <span class="o">=</span> <span class="n">Variable</span><span class="p">(</span><span class="n">y</span><span class="p">)</span>
|
||||
|
||||
<span class="n">p_hat</span> <span class="o">=</span> <span class="n">p_hat</span><span class="o">.</span><span class="n">float</span><span class="p">()</span>
|
||||
<span class="n">bce_loss</span> <span class="o">=</span> <span class="n">F</span><span class="o">.</span><span class="n">binary_cross_entropy</span><span class="p">(</span><span class="n">p_hat</span><span class="o">.</span><span class="n">float</span><span class="p">(),</span> <span class="n">y</span><span class="o">.</span><span class="n">float</span><span class="p">())</span>
|
||||
<span class="n">cmap_loss</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">c_map_mag</span><span class="p">)</span>
|
||||
<span class="n">loss</span> <span class="o">=</span> <span class="p">(</span><span class="n">weight</span> <span class="o">*</span> <span class="n">bce_loss</span><span class="p">)</span> <span class="o">+</span> <span class="p">((</span><span class="mi">1</span> <span class="o">-</span> <span class="n">weight</span><span class="p">)</span> <span class="o">*</span> <span class="n">cmap_loss</span><span class="p">)</span>
|
||||
<span class="n">b</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">p_hat</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># backprop loss</span>
|
||||
<span class="n">loss</span><span class="o">.</span><span class="n">backward</span><span class="p">()</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">use_cuda</span><span class="p">:</span>
|
||||
<span class="n">y</span> <span class="o">=</span> <span class="n">y</span><span class="o">.</span><span class="n">cpu</span><span class="p">()</span>
|
||||
<span class="n">p_hat</span> <span class="o">=</span> <span class="n">p_hat</span><span class="o">.</span><span class="n">cpu</span><span class="p">()</span>
|
||||
|
||||
<span class="k">with</span> <span class="n">torch</span><span class="o">.</span><span class="n">no_grad</span><span class="p">():</span>
|
||||
<span class="n">guess_cutoff</span> <span class="o">=</span> <span class="mf">0.5</span>
|
||||
<span class="n">p_hat</span> <span class="o">=</span> <span class="n">p_hat</span><span class="o">.</span><span class="n">float</span><span class="p">()</span>
|
||||
<span class="n">p_guess</span> <span class="o">=</span> <span class="p">(</span><span class="n">guess_cutoff</span> <span class="o">*</span> <span class="n">torch</span><span class="o">.</span><span class="n">ones</span><span class="p">(</span><span class="n">b</span><span class="p">)</span> <span class="o"><</span> <span class="n">p_hat</span><span class="p">)</span><span class="o">.</span><span class="n">float</span><span class="p">()</span>
|
||||
<span class="n">y</span> <span class="o">=</span> <span class="n">y</span><span class="o">.</span><span class="n">float</span><span class="p">()</span>
|
||||
<span class="n">correct</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">p_guess</span> <span class="o">==</span> <span class="n">y</span><span class="p">)</span><span class="o">.</span><span class="n">item</span><span class="p">()</span>
|
||||
<span class="n">mse</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">mean</span><span class="p">((</span><span class="n">y</span><span class="o">.</span><span class="n">float</span><span class="p">()</span> <span class="o">-</span> <span class="n">p_hat</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span><span class="o">.</span><span class="n">item</span><span class="p">()</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">loss</span><span class="p">,</span> <span class="n">correct</span><span class="p">,</span> <span class="n">mse</span><span class="p">,</span> <span class="n">b</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="interaction_eval"><a class="viewcode-back" href="../../../api/dscript.commands.html#dscript.commands.train.interaction_eval">[docs]</a><span class="k">def</span> <span class="nf">interaction_eval</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">test_iterator</span><span class="p">,</span> <span class="n">tensors</span><span class="p">,</span> <span class="n">use_cuda</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Evaluate test data set performance.</span>
|
||||
|
||||
<span class="sd"> :param model: Model to be trained</span>
|
||||
<span class="sd"> :type model: dscript.models.interaction.ModelInteraction</span>
|
||||
<span class="sd"> :param test_iterator: Test data iterator</span>
|
||||
<span class="sd"> :type test_iterator: torch.utils.data.DataLoader</span>
|
||||
<span class="sd"> :param tensors: Dictionary of protein names to embeddings</span>
|
||||
<span class="sd"> :type tensors: dict[str, torch.Tensor]</span>
|
||||
<span class="sd"> :param use_cuda: Whether to use GPU</span>
|
||||
<span class="sd"> :type use_cuda: bool</span>
|
||||
|
||||
<span class="sd"> :return: (Loss, number correct, mean square error, precision, recall, F1 Score, AUPR)</span>
|
||||
<span class="sd"> :rtype: (torch.Tensor, int, torch.Tensor, torch.Tensor, torch.Tensor, torch.Tensor, torch.Tensor)</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">p_hat</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="n">true_y</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">n0</span><span class="p">,</span> <span class="n">n1</span><span class="p">,</span> <span class="n">y</span> <span class="ow">in</span> <span class="n">test_iterator</span><span class="p">:</span>
|
||||
<span class="n">p_hat</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">predict_interaction</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">n0</span><span class="p">,</span> <span class="n">n1</span><span class="p">,</span> <span class="n">tensors</span><span class="p">,</span> <span class="n">use_cuda</span><span class="p">))</span>
|
||||
<span class="n">true_y</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">y</span><span class="p">)</span>
|
||||
|
||||
<span class="n">y</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">cat</span><span class="p">(</span><span class="n">true_y</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
|
||||
<span class="n">p_hat</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">cat</span><span class="p">(</span><span class="n">p_hat</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">use_cuda</span><span class="p">:</span>
|
||||
<span class="n">y</span><span class="o">.</span><span class="n">cuda</span><span class="p">()</span>
|
||||
<span class="n">p_hat</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">([</span><span class="n">x</span><span class="o">.</span><span class="n">cuda</span><span class="p">()</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">p_hat</span><span class="p">])</span>
|
||||
<span class="n">p_hat</span><span class="o">.</span><span class="n">cuda</span><span class="p">()</span>
|
||||
|
||||
<span class="n">loss</span> <span class="o">=</span> <span class="n">F</span><span class="o">.</span><span class="n">binary_cross_entropy</span><span class="p">(</span><span class="n">p_hat</span><span class="o">.</span><span class="n">float</span><span class="p">(),</span> <span class="n">y</span><span class="o">.</span><span class="n">float</span><span class="p">())</span><span class="o">.</span><span class="n">item</span><span class="p">()</span>
|
||||
<span class="n">b</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">y</span><span class="p">)</span>
|
||||
|
||||
<span class="k">with</span> <span class="n">torch</span><span class="o">.</span><span class="n">no_grad</span><span class="p">():</span>
|
||||
<span class="n">guess_cutoff</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">Tensor</span><span class="p">([</span><span class="mf">0.5</span><span class="p">])</span><span class="o">.</span><span class="n">float</span><span class="p">()</span>
|
||||
<span class="n">p_hat</span> <span class="o">=</span> <span class="n">p_hat</span><span class="o">.</span><span class="n">float</span><span class="p">()</span>
|
||||
<span class="n">y</span> <span class="o">=</span> <span class="n">y</span><span class="o">.</span><span class="n">float</span><span class="p">()</span>
|
||||
<span class="n">p_guess</span> <span class="o">=</span> <span class="p">(</span><span class="n">guess_cutoff</span> <span class="o">*</span> <span class="n">torch</span><span class="o">.</span><span class="n">ones</span><span class="p">(</span><span class="n">b</span><span class="p">)</span> <span class="o"><</span> <span class="n">p_hat</span><span class="p">)</span><span class="o">.</span><span class="n">float</span><span class="p">()</span>
|
||||
<span class="n">correct</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">p_guess</span> <span class="o">==</span> <span class="n">y</span><span class="p">)</span><span class="o">.</span><span class="n">item</span><span class="p">()</span>
|
||||
<span class="n">mse</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">mean</span><span class="p">((</span><span class="n">y</span><span class="o">.</span><span class="n">float</span><span class="p">()</span> <span class="o">-</span> <span class="n">p_hat</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span><span class="o">.</span><span class="n">item</span><span class="p">()</span>
|
||||
|
||||
<span class="n">tp</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">y</span> <span class="o">*</span> <span class="n">p_hat</span><span class="p">)</span><span class="o">.</span><span class="n">item</span><span class="p">()</span>
|
||||
<span class="n">pr</span> <span class="o">=</span> <span class="n">tp</span> <span class="o">/</span> <span class="n">torch</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">p_hat</span><span class="p">)</span><span class="o">.</span><span class="n">item</span><span class="p">()</span>
|
||||
<span class="n">re</span> <span class="o">=</span> <span class="n">tp</span> <span class="o">/</span> <span class="n">torch</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">y</span><span class="p">)</span><span class="o">.</span><span class="n">item</span><span class="p">()</span>
|
||||
<span class="n">f1</span> <span class="o">=</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">pr</span> <span class="o">*</span> <span class="n">re</span> <span class="o">/</span> <span class="p">(</span><span class="n">pr</span> <span class="o">+</span> <span class="n">re</span><span class="p">)</span>
|
||||
|
||||
<span class="n">y</span> <span class="o">=</span> <span class="n">y</span><span class="o">.</span><span class="n">cpu</span><span class="p">()</span><span class="o">.</span><span class="n">numpy</span><span class="p">()</span>
|
||||
<span class="n">p_hat</span> <span class="o">=</span> <span class="n">p_hat</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">cpu</span><span class="p">()</span><span class="o">.</span><span class="n">numpy</span><span class="p">()</span>
|
||||
|
||||
<span class="n">aupr</span> <span class="o">=</span> <span class="n">average_precision</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">p_hat</span><span class="p">)</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">loss</span><span class="p">,</span> <span class="n">correct</span><span class="p">,</span> <span class="n">mse</span><span class="p">,</span> <span class="n">pr</span><span class="p">,</span> <span class="n">re</span><span class="p">,</span> <span class="n">f1</span><span class="p">,</span> <span class="n">aupr</span></div>
|
||||
|
||||
<div class="viewcode-block" id="train_model"><a class="viewcode-back" href="../../../api/dscript.commands.html#dscript.commands.train.train_model">[docs]</a><span class="k">def</span> <span class="nf">train_model</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">output</span><span class="p">):</span>
|
||||
<span class="c1">## Create data sets</span>
|
||||
|
||||
<span class="n">batch_size</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">batch_size</span>
|
||||
<span class="n">use_cuda</span> <span class="o">=</span> <span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">device</span> <span class="o">></span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="ow">and</span> <span class="n">torch</span><span class="o">.</span><span class="n">cuda</span><span class="o">.</span><span class="n">is_available</span><span class="p">()</span>
|
||||
<span class="n">train_fi</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">train</span>
|
||||
<span class="n">test_fi</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">test</span>
|
||||
<span class="n">no_augment</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">no_augment</span>
|
||||
|
||||
<span class="n">embedding_h5</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">embedding</span>
|
||||
<span class="n">h5fi</span> <span class="o">=</span> <span class="n">h5py</span><span class="o">.</span><span class="n">File</span><span class="p">(</span><span class="n">embedding_h5</span><span class="p">,</span> <span class="s2">"r"</span><span class="p">)</span>
|
||||
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"# Loading training pairs from </span><span class="si">{</span><span class="n">train_fi</span><span class="si">}</span><span class="s2">..."</span><span class="p">,</span> <span class="n">file</span><span class="o">=</span><span class="n">output</span><span class="p">)</span>
|
||||
<span class="n">output</span><span class="o">.</span><span class="n">flush</span><span class="p">()</span>
|
||||
|
||||
<span class="n">train_df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="n">train_fi</span><span class="p">,</span><span class="n">sep</span><span class="o">=</span><span class="s1">'</span><span class="se">\t</span><span class="s1">'</span><span class="p">,</span><span class="n">header</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
|
||||
<span class="n">train_df</span><span class="o">.</span><span class="n">columns</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"prot1"</span><span class="p">,</span><span class="s2">"prot2"</span><span class="p">,</span><span class="s2">"label"</span><span class="p">]</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">no_augment</span><span class="p">:</span>
|
||||
<span class="n">train_p1</span> <span class="o">=</span> <span class="n">train_df</span><span class="p">[</span><span class="s2">"prot1"</span><span class="p">]</span>
|
||||
<span class="n">train_p2</span> <span class="o">=</span> <span class="n">train_df</span><span class="p">[</span><span class="s2">"prot2"</span><span class="p">]</span>
|
||||
<span class="n">train_y</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">from_numpy</span><span class="p">(</span><span class="n">train_df</span><span class="p">[</span><span class="s2">"label"</span><span class="p">]</span><span class="o">.</span><span class="n">values</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">train_p1</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">concat</span><span class="p">((</span><span class="n">train_df</span><span class="p">[</span><span class="s2">"prot1"</span><span class="p">],</span> <span class="n">train_df</span><span class="p">[</span><span class="s2">"prot2"</span><span class="p">]),</span> <span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">reset_index</span><span class="p">(</span><span class="n">drop</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">train_p2</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">concat</span><span class="p">((</span><span class="n">train_df</span><span class="p">[</span><span class="s2">"prot2"</span><span class="p">],</span> <span class="n">train_df</span><span class="p">[</span><span class="s2">"prot1"</span><span class="p">]),</span> <span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">reset_index</span><span class="p">(</span><span class="n">drop</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="n">train_y</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">from_numpy</span><span class="p">(</span><span class="n">pd</span><span class="o">.</span><span class="n">concat</span><span class="p">((</span><span class="n">train_df</span><span class="p">[</span><span class="s2">"label"</span><span class="p">],</span> <span class="n">train_df</span><span class="p">[</span><span class="s2">"label"</span><span class="p">]))</span><span class="o">.</span><span class="n">values</span><span class="p">)</span>
|
||||
|
||||
<span class="n">train_dataset</span> <span class="o">=</span> <span class="n">PairedDataset</span><span class="p">(</span><span class="n">train_p1</span><span class="p">,</span> <span class="n">train_p2</span><span class="p">,</span> <span class="n">train_y</span><span class="p">)</span>
|
||||
<span class="n">train_iterator</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">DataLoader</span><span class="p">(</span>
|
||||
<span class="n">train_dataset</span><span class="p">,</span>
|
||||
<span class="n">batch_size</span><span class="o">=</span><span class="n">batch_size</span><span class="p">,</span>
|
||||
<span class="n">collate_fn</span><span class="o">=</span><span class="n">collate_paired_sequences</span><span class="p">,</span>
|
||||
<span class="n">shuffle</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"# Loaded </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">train_p1</span><span class="p">)</span><span class="si">}</span><span class="s2"> training pairs"</span><span class="p">,</span> <span class="n">file</span><span class="o">=</span><span class="n">output</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"# Loading testing pairs from </span><span class="si">{</span><span class="n">test_fi</span><span class="si">}</span><span class="s2">..."</span><span class="p">,</span> <span class="n">file</span><span class="o">=</span><span class="n">output</span><span class="p">)</span>
|
||||
<span class="n">output</span><span class="o">.</span><span class="n">flush</span><span class="p">()</span>
|
||||
|
||||
<span class="n">test_df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="n">test_fi</span><span class="p">,</span><span class="n">sep</span><span class="o">=</span><span class="s1">'</span><span class="se">\t</span><span class="s1">'</span><span class="p">,</span><span class="n">header</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
|
||||
<span class="n">test_df</span><span class="o">.</span><span class="n">columns</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"prot1"</span><span class="p">,</span><span class="s2">"prot2"</span><span class="p">,</span><span class="s2">"label"</span><span class="p">]</span>
|
||||
<span class="n">test_p1</span> <span class="o">=</span> <span class="n">test_df</span><span class="p">[</span><span class="s2">"prot1"</span><span class="p">]</span>
|
||||
<span class="n">test_p2</span> <span class="o">=</span> <span class="n">test_df</span><span class="p">[</span><span class="s2">"prot2"</span><span class="p">]</span>
|
||||
<span class="n">test_y</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">from_numpy</span><span class="p">(</span><span class="n">test_df</span><span class="p">[</span><span class="s2">"label"</span><span class="p">]</span><span class="o">.</span><span class="n">values</span><span class="p">)</span>
|
||||
|
||||
<span class="n">test_dataset</span> <span class="o">=</span> <span class="n">PairedDataset</span><span class="p">(</span><span class="n">test_p1</span><span class="p">,</span> <span class="n">test_p2</span><span class="p">,</span> <span class="n">test_y</span><span class="p">)</span>
|
||||
<span class="n">test_iterator</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">DataLoader</span><span class="p">(</span>
|
||||
<span class="n">test_dataset</span><span class="p">,</span>
|
||||
<span class="n">batch_size</span><span class="o">=</span><span class="n">batch_size</span><span class="p">,</span>
|
||||
<span class="n">collate_fn</span><span class="o">=</span><span class="n">collate_paired_sequences</span><span class="p">,</span>
|
||||
<span class="n">shuffle</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"# Loaded </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">test_p1</span><span class="p">)</span><span class="si">}</span><span class="s2"> test pairs"</span><span class="p">,</span> <span class="n">file</span><span class="o">=</span><span class="n">output</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"# Loading embeddings"</span><span class="p">,</span> <span class="n">file</span><span class="o">=</span><span class="n">output</span><span class="p">)</span>
|
||||
<span class="n">output</span><span class="o">.</span><span class="n">flush</span><span class="p">()</span>
|
||||
|
||||
<span class="n">embeddings</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="n">all_proteins</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="nb">set</span><span class="p">(</span><span class="n">train_p1</span><span class="p">)</span>
|
||||
<span class="o">.</span><span class="n">union</span><span class="p">(</span><span class="n">train_p2</span><span class="p">)</span>
|
||||
<span class="o">.</span><span class="n">union</span><span class="p">(</span><span class="n">test_p1</span><span class="p">)</span>
|
||||
<span class="o">.</span><span class="n">union</span><span class="p">(</span><span class="n">test_p2</span><span class="p">)</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">prot_name</span> <span class="ow">in</span> <span class="n">tqdm</span><span class="p">(</span><span class="n">all_proteins</span><span class="p">):</span>
|
||||
<span class="n">embeddings</span><span class="p">[</span><span class="n">prot_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">from_numpy</span><span class="p">(</span><span class="n">h5fi</span><span class="p">[</span><span class="n">prot_name</span><span class="p">][:,</span> <span class="p">:])</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">checkpoint</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
|
||||
<span class="c1"># Create embedding model</span>
|
||||
<span class="n">input_dim</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">input_dim</span>
|
||||
<span class="n">projection_dim</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">projection_dim</span>
|
||||
<span class="n">dropout_p</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">dropout_p</span>
|
||||
<span class="n">embedding_model</span> <span class="o">=</span> <span class="n">FullyConnectedEmbed</span><span class="p">(</span><span class="n">input_dim</span><span class="p">,</span> <span class="n">projection_dim</span><span class="p">,</span> <span class="n">dropout</span><span class="o">=</span><span class="n">dropout_p</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"# Initializing embedding model with:"</span><span class="p">,</span> <span class="n">file</span><span class="o">=</span><span class="n">output</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="se">\t</span><span class="s2">projection_dim: </span><span class="si">{</span><span class="n">projection_dim</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> <span class="n">file</span><span class="o">=</span><span class="n">output</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="se">\t</span><span class="s2">dropout_p: </span><span class="si">{</span><span class="n">dropout_p</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> <span class="n">file</span><span class="o">=</span><span class="n">output</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Create contact model</span>
|
||||
<span class="n">hidden_dim</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">hidden_dim</span>
|
||||
<span class="n">kernel_width</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">kernel_width</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"# Initializing contact model with:"</span><span class="p">,</span> <span class="n">file</span><span class="o">=</span><span class="n">output</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="se">\t</span><span class="s2">hidden_dim: </span><span class="si">{</span><span class="n">hidden_dim</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> <span class="n">file</span><span class="o">=</span><span class="n">output</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="se">\t</span><span class="s2">kernel_width: </span><span class="si">{</span><span class="n">kernel_width</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> <span class="n">file</span><span class="o">=</span><span class="n">output</span><span class="p">)</span>
|
||||
|
||||
<span class="n">contact_model</span> <span class="o">=</span> <span class="n">ContactCNN</span><span class="p">(</span><span class="n">projection_dim</span><span class="p">,</span> <span class="n">hidden_dim</span><span class="p">,</span> <span class="n">kernel_width</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Create the full model</span>
|
||||
<span class="n">do_w</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">args</span><span class="o">.</span><span class="n">no_w</span>
|
||||
<span class="n">do_pool</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">do_pool</span>
|
||||
<span class="n">pool_width</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">pool_width</span>
|
||||
<span class="n">do_sigmoid</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">args</span><span class="o">.</span><span class="n">no_sigmoid</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"# Initializing interaction model with:"</span><span class="p">,</span> <span class="n">file</span><span class="o">=</span><span class="n">output</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="se">\t</span><span class="s2">do_poool: </span><span class="si">{</span><span class="n">do_pool</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> <span class="n">file</span><span class="o">=</span><span class="n">output</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="se">\t</span><span class="s2">pool_width: </span><span class="si">{</span><span class="n">pool_width</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> <span class="n">file</span><span class="o">=</span><span class="n">output</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="se">\t</span><span class="s2">do_w: </span><span class="si">{</span><span class="n">do_w</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> <span class="n">file</span><span class="o">=</span><span class="n">output</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="se">\t</span><span class="s2">do_sigmoid: </span><span class="si">{</span><span class="n">do_sigmoid</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> <span class="n">file</span><span class="o">=</span><span class="n">output</span><span class="p">)</span>
|
||||
<span class="n">model</span> <span class="o">=</span> <span class="n">ModelInteraction</span><span class="p">(</span>
|
||||
<span class="n">embedding_model</span><span class="p">,</span>
|
||||
<span class="n">contact_model</span><span class="p">,</span>
|
||||
<span class="n">use_cuda</span><span class="p">,</span>
|
||||
<span class="n">do_w</span><span class="o">=</span><span class="n">do_w</span><span class="p">,</span>
|
||||
<span class="n">pool_size</span><span class="o">=</span><span class="n">pool_width</span><span class="p">,</span>
|
||||
<span class="n">do_pool</span><span class="o">=</span><span class="n">do_pool</span><span class="p">,</span>
|
||||
<span class="n">do_sigmoid</span><span class="o">=</span><span class="n">do_sigmoid</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">file</span><span class="o">=</span><span class="n">output</span><span class="p">)</span>
|
||||
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"# Loading model from checkpoint </span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">checkpoint</span><span class="p">),</span> <span class="n">file</span><span class="o">=</span><span class="n">output</span><span class="p">)</span>
|
||||
<span class="n">model</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">checkpoint</span><span class="p">)</span>
|
||||
<span class="n">model</span><span class="o">.</span><span class="n">use_cuda</span> <span class="o">=</span> <span class="n">use_cuda</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">use_cuda</span><span class="p">:</span>
|
||||
<span class="n">model</span><span class="o">.</span><span class="n">cuda</span><span class="p">()</span>
|
||||
|
||||
<span class="c1"># Train the model</span>
|
||||
<span class="n">lr</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">lr</span>
|
||||
<span class="n">wd</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">weight_decay</span>
|
||||
<span class="n">num_epochs</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">num_epochs</span>
|
||||
<span class="n">batch_size</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">batch_size</span>
|
||||
<span class="n">inter_weight</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">lambda_</span>
|
||||
<span class="n">cmap_weight</span> <span class="o">=</span> <span class="mi">1</span> <span class="o">-</span> <span class="n">inter_weight</span>
|
||||
<span class="n">digits</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">floor</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">log10</span><span class="p">(</span><span class="n">num_epochs</span><span class="p">)))</span> <span class="o">+</span> <span class="mi">1</span>
|
||||
<span class="n">save_prefix</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">save_prefix</span>
|
||||
|
||||
<span class="n">params</span> <span class="o">=</span> <span class="p">[</span><span class="n">p</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">model</span><span class="o">.</span><span class="n">parameters</span><span class="p">()</span> <span class="k">if</span> <span class="n">p</span><span class="o">.</span><span class="n">requires_grad</span><span class="p">]</span>
|
||||
<span class="n">optim</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">optim</span><span class="o">.</span><span class="n">Adam</span><span class="p">(</span><span class="n">params</span><span class="p">,</span> <span class="n">lr</span><span class="o">=</span><span class="n">lr</span><span class="p">,</span> <span class="n">weight_decay</span><span class="o">=</span><span class="n">wd</span><span class="p">)</span>
|
||||
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s1">'# Using save prefix "</span><span class="si">{</span><span class="n">save_prefix</span><span class="si">}</span><span class="s1">"'</span><span class="p">,</span> <span class="n">file</span><span class="o">=</span><span class="n">output</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"# Training with Adam: lr=</span><span class="si">{</span><span class="n">lr</span><span class="si">}</span><span class="s2">, weight_decay=</span><span class="si">{</span><span class="n">wd</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> <span class="n">file</span><span class="o">=</span><span class="n">output</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="se">\t</span><span class="s2">num_epochs: </span><span class="si">{</span><span class="n">num_epochs</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> <span class="n">file</span><span class="o">=</span><span class="n">output</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="se">\t</span><span class="s2">batch_size: </span><span class="si">{</span><span class="n">batch_size</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> <span class="n">file</span><span class="o">=</span><span class="n">output</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="se">\t</span><span class="s2">interaction weight: </span><span class="si">{</span><span class="n">inter_weight</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> <span class="n">file</span><span class="o">=</span><span class="n">output</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="se">\t</span><span class="s2">contact map weight: </span><span class="si">{</span><span class="n">cmap_weight</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> <span class="n">file</span><span class="o">=</span><span class="n">output</span><span class="p">)</span>
|
||||
<span class="n">output</span><span class="o">.</span><span class="n">flush</span><span class="p">()</span>
|
||||
|
||||
<span class="n">batch_report_fmt</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="s2">"# [</span><span class="si">{}</span><span class="s2">/</span><span class="si">{}</span><span class="s2">] training </span><span class="si">{:.1%}</span><span class="s2">: Loss=</span><span class="si">{:.6}</span><span class="s2">, Accuracy=</span><span class="si">{:.3%}</span><span class="s2">, MSE=</span><span class="si">{:.6}</span><span class="s2">"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="n">epoch_report_fmt</span> <span class="o">=</span> <span class="s2">"# Finished Epoch </span><span class="si">{}</span><span class="s2">/</span><span class="si">{}</span><span class="s2">: Loss=</span><span class="si">{:.6}</span><span class="s2">, Accuracy=</span><span class="si">{:.3%}</span><span class="s2">, MSE=</span><span class="si">{:.6}</span><span class="s2">, Precision=</span><span class="si">{:.6}</span><span class="s2">, Recall=</span><span class="si">{:.6}</span><span class="s2">, F1=</span><span class="si">{:.6}</span><span class="s2">, AUPR=</span><span class="si">{:.6}</span><span class="s2">"</span>
|
||||
|
||||
<span class="n">N</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">train_iterator</span><span class="p">)</span> <span class="o">*</span> <span class="n">batch_size</span>
|
||||
<span class="k">for</span> <span class="n">epoch</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">num_epochs</span><span class="p">):</span>
|
||||
|
||||
<span class="n">model</span><span class="o">.</span><span class="n">train</span><span class="p">()</span>
|
||||
|
||||
<span class="n">n</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="n">loss_accum</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="n">acc_accum</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="n">mse_accum</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
|
||||
<span class="c1"># Train batches</span>
|
||||
<span class="k">for</span> <span class="p">(</span><span class="n">z0</span><span class="p">,</span> <span class="n">z1</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span> <span class="ow">in</span> <span class="n">train_iterator</span><span class="p">:</span>
|
||||
|
||||
<span class="n">loss</span><span class="p">,</span> <span class="n">correct</span><span class="p">,</span> <span class="n">mse</span><span class="p">,</span> <span class="n">b</span> <span class="o">=</span> <span class="n">interaction_grad</span><span class="p">(</span>
|
||||
<span class="n">model</span><span class="p">,</span>
|
||||
<span class="n">z0</span><span class="p">,</span>
|
||||
<span class="n">z1</span><span class="p">,</span>
|
||||
<span class="n">y</span><span class="p">,</span>
|
||||
<span class="n">embeddings</span><span class="p">,</span>
|
||||
<span class="n">use_cuda</span><span class="p">,</span>
|
||||
<span class="n">weight</span><span class="o">=</span><span class="n">inter_weight</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
|
||||
<span class="n">n</span> <span class="o">+=</span> <span class="n">b</span>
|
||||
<span class="n">delta</span> <span class="o">=</span> <span class="n">b</span> <span class="o">*</span> <span class="p">(</span><span class="n">loss</span> <span class="o">-</span> <span class="n">loss_accum</span><span class="p">)</span>
|
||||
<span class="n">loss_accum</span> <span class="o">+=</span> <span class="n">delta</span> <span class="o">/</span> <span class="n">n</span>
|
||||
|
||||
<span class="n">delta</span> <span class="o">=</span> <span class="n">correct</span> <span class="o">-</span> <span class="n">b</span> <span class="o">*</span> <span class="n">acc_accum</span>
|
||||
<span class="n">acc_accum</span> <span class="o">+=</span> <span class="n">delta</span> <span class="o">/</span> <span class="n">n</span>
|
||||
|
||||
<span class="n">delta</span> <span class="o">=</span> <span class="n">b</span> <span class="o">*</span> <span class="p">(</span><span class="n">mse</span> <span class="o">-</span> <span class="n">mse_accum</span><span class="p">)</span>
|
||||
<span class="n">mse_accum</span> <span class="o">+=</span> <span class="n">delta</span> <span class="o">/</span> <span class="n">n</span>
|
||||
|
||||
<span class="n">report</span> <span class="o">=</span> <span class="p">(</span><span class="n">n</span> <span class="o">-</span> <span class="n">b</span><span class="p">)</span> <span class="o">//</span> <span class="mi">100</span> <span class="o"><</span> <span class="n">n</span> <span class="o">//</span> <span class="mi">100</span>
|
||||
|
||||
<span class="n">optim</span><span class="o">.</span><span class="n">step</span><span class="p">()</span>
|
||||
<span class="n">optim</span><span class="o">.</span><span class="n">zero_grad</span><span class="p">()</span>
|
||||
<span class="n">model</span><span class="o">.</span><span class="n">clip</span><span class="p">()</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">report</span><span class="p">:</span>
|
||||
<span class="n">tokens</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="n">epoch</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span>
|
||||
<span class="n">num_epochs</span><span class="p">,</span>
|
||||
<span class="n">n</span> <span class="o">/</span> <span class="n">N</span><span class="p">,</span>
|
||||
<span class="n">loss_accum</span><span class="p">,</span>
|
||||
<span class="n">acc_accum</span><span class="p">,</span>
|
||||
<span class="n">mse_accum</span><span class="p">,</span>
|
||||
<span class="p">]</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">batch_report_fmt</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="o">*</span><span class="n">tokens</span><span class="p">),</span> <span class="n">file</span><span class="o">=</span><span class="n">output</span><span class="p">)</span>
|
||||
<span class="n">output</span><span class="o">.</span><span class="n">flush</span><span class="p">()</span>
|
||||
|
||||
<span class="n">model</span><span class="o">.</span><span class="n">eval</span><span class="p">()</span>
|
||||
|
||||
<span class="k">with</span> <span class="n">torch</span><span class="o">.</span><span class="n">no_grad</span><span class="p">():</span>
|
||||
|
||||
<span class="p">(</span>
|
||||
<span class="n">inter_loss</span><span class="p">,</span>
|
||||
<span class="n">inter_correct</span><span class="p">,</span>
|
||||
<span class="n">inter_mse</span><span class="p">,</span>
|
||||
<span class="n">inter_pr</span><span class="p">,</span>
|
||||
<span class="n">inter_re</span><span class="p">,</span>
|
||||
<span class="n">inter_f1</span><span class="p">,</span>
|
||||
<span class="n">inter_aupr</span><span class="p">,</span>
|
||||
<span class="p">)</span> <span class="o">=</span> <span class="n">interaction_eval</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">test_iterator</span><span class="p">,</span> <span class="n">embeddings</span><span class="p">,</span> <span class="n">use_cuda</span><span class="p">)</span>
|
||||
<span class="n">tokens</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="n">epoch</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span>
|
||||
<span class="n">num_epochs</span><span class="p">,</span>
|
||||
<span class="n">inter_loss</span><span class="p">,</span>
|
||||
<span class="n">inter_correct</span> <span class="o">/</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">test_iterator</span><span class="p">)</span> <span class="o">*</span> <span class="n">batch_size</span><span class="p">),</span>
|
||||
<span class="n">inter_mse</span><span class="p">,</span>
|
||||
<span class="n">inter_pr</span><span class="p">,</span>
|
||||
<span class="n">inter_re</span><span class="p">,</span>
|
||||
<span class="n">inter_f1</span><span class="p">,</span>
|
||||
<span class="n">inter_aupr</span><span class="p">,</span>
|
||||
<span class="p">]</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">epoch_report_fmt</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="o">*</span><span class="n">tokens</span><span class="p">),</span> <span class="n">file</span><span class="o">=</span><span class="n">output</span><span class="p">)</span>
|
||||
<span class="n">output</span><span class="o">.</span><span class="n">flush</span><span class="p">()</span>
|
||||
|
||||
<span class="c1"># Save the model</span>
|
||||
<span class="k">if</span> <span class="n">save_prefix</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">save_path</span> <span class="o">=</span> <span class="p">(</span>
|
||||
<span class="n">save_prefix</span> <span class="o">+</span> <span class="s2">"_epoch"</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">epoch</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">zfill</span><span class="p">(</span><span class="n">digits</span><span class="p">)</span> <span class="o">+</span> <span class="s2">".sav"</span>
|
||||
<span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"# Saving model to </span><span class="si">{</span><span class="n">save_path</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> <span class="n">file</span><span class="o">=</span><span class="n">output</span><span class="p">)</span>
|
||||
<span class="n">model</span><span class="o">.</span><span class="n">cpu</span><span class="p">()</span>
|
||||
<span class="n">torch</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">save_path</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">use_cuda</span><span class="p">:</span>
|
||||
<span class="n">model</span><span class="o">.</span><span class="n">cuda</span><span class="p">()</span>
|
||||
|
||||
<span class="n">output</span><span class="o">.</span><span class="n">flush</span><span class="p">()</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">save_prefix</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">save_path</span> <span class="o">=</span> <span class="n">save_prefix</span> <span class="o">+</span> <span class="s2">"_final.sav"</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"# Saving final model to </span><span class="si">{</span><span class="n">save_path</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> <span class="n">file</span><span class="o">=</span><span class="n">output</span><span class="p">)</span>
|
||||
<span class="n">model</span><span class="o">.</span><span class="n">cpu</span><span class="p">()</span>
|
||||
<span class="n">torch</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">save_path</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">use_cuda</span><span class="p">:</span>
|
||||
<span class="n">model</span><span class="o">.</span><span class="n">cuda</span><span class="p">()</span></div>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">main</span><span class="p">(</span><span class="n">args</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Run training from arguments.</span>
|
||||
|
||||
<span class="sd"> :meta private:</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">output</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">output</span>
|
||||
<span class="k">if</span> <span class="n">output</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">output</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">stdout</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">output</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">output</span><span class="p">,</span> <span class="s2">"w"</span><span class="p">)</span>
|
||||
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s1">'# Called as: </span><span class="si">{</span><span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">)</span><span class="si">}</span><span class="s1">'</span><span class="p">,</span> <span class="n">file</span><span class="o">=</span><span class="n">output</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">output</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s1">'Called as: </span><span class="si">{</span><span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">)</span><span class="si">}</span><span class="s1">'</span><span class="p">)</span>
|
||||
|
||||
<span class="c1">## Set the device</span>
|
||||
<span class="n">device</span> <span class="o">=</span> <span class="n">args</span><span class="o">.</span><span class="n">device</span>
|
||||
<span class="n">use_cuda</span> <span class="o">=</span> <span class="p">(</span><span class="n">device</span> <span class="o">></span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="ow">and</span> <span class="n">torch</span><span class="o">.</span><span class="n">cuda</span><span class="o">.</span><span class="n">is_available</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">use_cuda</span><span class="p">:</span>
|
||||
<span class="n">torch</span><span class="o">.</span><span class="n">cuda</span><span class="o">.</span><span class="n">set_device</span><span class="p">(</span><span class="n">device</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span>
|
||||
<span class="sa">f</span><span class="s2">"# Using CUDA device </span><span class="si">{</span><span class="n">device</span><span class="si">}</span><span class="s2"> - </span><span class="si">{</span><span class="n">torch</span><span class="o">.</span><span class="n">cuda</span><span class="o">.</span><span class="n">get_device_name</span><span class="p">(</span><span class="n">device</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span>
|
||||
<span class="n">file</span><span class="o">=</span><span class="n">output</span><span class="p">,</span>
|
||||
<span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"# Using CPU"</span><span class="p">,</span> <span class="n">file</span><span class="o">=</span><span class="n">output</span><span class="p">)</span>
|
||||
<span class="n">device</span> <span class="o">=</span> <span class="s2">"cpu"</span>
|
||||
|
||||
<span class="n">train_model</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">output</span><span class="p">)</span>
|
||||
|
||||
<span class="n">output</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
|
||||
|
||||
|
||||
<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">"__main__"</span><span class="p">:</span>
|
||||
<span class="n">parser</span> <span class="o">=</span> <span class="n">argparse</span><span class="o">.</span><span class="n">ArgumentParser</span><span class="p">(</span><span class="n">description</span><span class="o">=</span><span class="vm">__doc__</span><span class="p">)</span>
|
||||
<span class="n">add_args</span><span class="p">(</span><span class="n">parser</span><span class="p">)</span>
|
||||
<span class="n">main</span><span class="p">(</span><span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">())</span>
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2020, Samuel Sledzieski, Rohit Singh.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
297
docs/build/html/_modules/dscript/fasta.html
vendored
297
docs/build/html/_modules/dscript/fasta.html
vendored
@@ -1,297 +0,0 @@
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<title>dscript.fasta — D-SCRIPT v1.0-beta documentation</title>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../_static/js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
|
||||
<script src="../../_static/jquery.js"></script>
|
||||
<script src="../../_static/underscore.js"></script>
|
||||
<script src="../../_static/doctools.js"></script>
|
||||
|
||||
<script type="text/javascript" src="../../_static/js/theme.js"></script>
|
||||
|
||||
|
||||
<link rel="index" title="Index" href="../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../search.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../index.html" class="icon icon-home"> D-SCRIPT
|
||||
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../installation.html">Installation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../usage.html">Usage</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../data.html">Data</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api/index.html">API</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
|
||||
|
||||
<nav class="wy-nav-top" aria-label="top navigation">
|
||||
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../index.html">D-SCRIPT</a>
|
||||
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="wy-nav-content">
|
||||
|
||||
<div class="rst-content">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||
|
||||
<ul class="wy-breadcrumbs">
|
||||
|
||||
<li><a href="../../index.html" class="icon icon-home"></a> »</li>
|
||||
|
||||
<li><a href="../index.html">Module code</a> »</li>
|
||||
|
||||
<li>dscript.fasta</li>
|
||||
|
||||
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<h1>Source code for dscript.fasta</h1><div class="highlight"><pre>
|
||||
<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">print_function</span><span class="p">,</span> <span class="n">division</span>
|
||||
|
||||
<div class="viewcode-block" id="parse_stream"><a class="viewcode-back" href="../../api/index.html#dscript.fasta.parse_stream">[docs]</a><span class="k">def</span> <span class="nf">parse_stream</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">comment</span><span class="o">=</span><span class="sa">b</span><span class="s1">'#'</span><span class="p">):</span>
|
||||
|
||||
<span class="n">name</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="n">sequence</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">f</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">line</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="n">comment</span><span class="p">):</span>
|
||||
<span class="k">continue</span>
|
||||
<span class="n">line</span> <span class="o">=</span> <span class="n">line</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">line</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="sa">b</span><span class="s1">'>'</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">name</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="k">yield</span> <span class="n">name</span><span class="p">,</span> <span class="sa">b</span><span class="s1">''</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">sequence</span><span class="p">)</span>
|
||||
<span class="n">name</span> <span class="o">=</span> <span class="n">line</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span>
|
||||
<span class="n">sequence</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">sequence</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">line</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span>
|
||||
<span class="k">if</span> <span class="n">name</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="k">yield</span> <span class="n">name</span><span class="p">,</span> <span class="sa">b</span><span class="s1">''</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">sequence</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="parse"><a class="viewcode-back" href="../../api/index.html#dscript.fasta.parse">[docs]</a><span class="k">def</span> <span class="nf">parse</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">comment</span><span class="o">=</span><span class="s1">'#'</span><span class="p">):</span>
|
||||
<span class="n">starter</span> <span class="o">=</span> <span class="s1">'>'</span>
|
||||
<span class="n">empty</span> <span class="o">=</span> <span class="s1">''</span>
|
||||
<span class="k">if</span> <span class="s1">'b'</span> <span class="ow">in</span> <span class="n">f</span><span class="o">.</span><span class="n">mode</span><span class="p">:</span>
|
||||
<span class="n">comment</span> <span class="o">=</span> <span class="sa">b</span><span class="s1">'#'</span>
|
||||
<span class="n">starter</span> <span class="o">=</span> <span class="sa">b</span><span class="s1">'>'</span>
|
||||
<span class="n">empty</span> <span class="o">=</span> <span class="sa">b</span><span class="s1">''</span>
|
||||
<span class="n">names</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="n">sequences</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="n">name</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="n">sequence</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">f</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">line</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="n">comment</span><span class="p">):</span>
|
||||
<span class="k">continue</span>
|
||||
<span class="n">line</span> <span class="o">=</span> <span class="n">line</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">line</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="n">starter</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">name</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
||||
<span class="n">sequences</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">empty</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">sequence</span><span class="p">))</span>
|
||||
<span class="n">name</span> <span class="o">=</span> <span class="n">line</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span>
|
||||
<span class="n">sequence</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">sequence</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">line</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span>
|
||||
<span class="k">if</span> <span class="n">name</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
||||
<span class="n">sequences</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">empty</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">sequence</span><span class="p">))</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">names</span><span class="p">,</span> <span class="n">sequences</span></div>
|
||||
|
||||
<div class="viewcode-block" id="parse_directory"><a class="viewcode-back" href="../../api/index.html#dscript.fasta.parse_directory">[docs]</a><span class="k">def</span> <span class="nf">parse_directory</span><span class="p">(</span><span class="n">directory</span><span class="p">,</span> <span class="n">extension</span><span class="o">=</span><span class="s1">'.seq'</span><span class="p">):</span>
|
||||
<span class="n">names</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="n">sequences</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">seqPath</span> <span class="ow">in</span> <span class="n">os</span><span class="o">.</span><span class="n">listdir</span><span class="p">(</span><span class="n">directory</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">seqPath</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="n">extension</span><span class="p">):</span>
|
||||
<span class="n">n</span><span class="p">,</span> <span class="n">s</span> <span class="o">=</span> <span class="n">parse</span><span class="p">(</span><span class="nb">open</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">directory</span><span class="si">}</span><span class="s2">/</span><span class="si">{</span><span class="n">seqPath</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span><span class="s2">"rb"</span><span class="p">))</span>
|
||||
<span class="n">names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="s1">'utf-8'</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">())</span>
|
||||
<span class="n">sequences</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">s</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="s1">'utf-8'</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">())</span>
|
||||
<span class="k">return</span> <span class="n">names</span><span class="p">,</span> <span class="n">sequences</span></div>
|
||||
|
||||
<div class="viewcode-block" id="write"><a class="viewcode-back" href="../../api/index.html#dscript.fasta.write">[docs]</a><span class="k">def</span> <span class="nf">write</span><span class="p">(</span><span class="n">nam</span><span class="p">,</span> <span class="n">seq</span><span class="p">,</span> <span class="n">f</span><span class="p">):</span>
|
||||
<span class="k">for</span> <span class="n">n</span><span class="p">,</span><span class="n">s</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">nam</span><span class="p">,</span><span class="n">seq</span><span class="p">):</span>
|
||||
<span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">'></span><span class="si">{}</span><span class="se">\n</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">n</span><span class="p">))</span>
|
||||
<span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">'</span><span class="si">{}</span><span class="se">\n</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">s</span><span class="p">))</span></div>
|
||||
|
||||
<div class="viewcode-block" id="count_bins"><a class="viewcode-back" href="../../api/index.html#dscript.fasta.count_bins">[docs]</a><span class="k">def</span> <span class="nf">count_bins</span><span class="p">(</span><span class="n">array</span><span class="p">,</span> <span class="n">bins</span><span class="p">):</span>
|
||||
<span class="c1"># Check bins make sense</span>
|
||||
<span class="n">lastB</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="k">for</span> <span class="n">b</span> <span class="ow">in</span> <span class="n">bins</span><span class="p">:</span>
|
||||
<span class="k">assert</span> <span class="n">b</span> <span class="o">></span> <span class="n">lastB</span>
|
||||
<span class="n">lastB</span> <span class="o">=</span> <span class="n">b</span>
|
||||
<span class="k">if</span> <span class="n">bins</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">></span> <span class="nb">min</span><span class="p">(</span><span class="n">array</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">min</span><span class="p">(</span><span class="n">array</span><span class="p">)</span> <span class="o"><</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="n">bins</span> <span class="o">=</span> <span class="p">[</span><span class="nb">min</span><span class="p">(</span><span class="n">array</span><span class="p">)]</span> <span class="o">+</span> <span class="n">bins</span>
|
||||
<span class="k">if</span> <span class="n">bins</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o"><</span> <span class="nb">max</span><span class="p">(</span><span class="n">array</span><span class="p">):</span>
|
||||
<span class="n">bins</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">max</span><span class="p">(</span><span class="n">array</span><span class="p">))</span>
|
||||
|
||||
<span class="n">binDict</span> <span class="o">=</span> <span class="p">{</span><span class="n">b</span><span class="p">:</span> <span class="p">[]</span> <span class="k">for</span> <span class="n">b</span> <span class="ow">in</span> <span class="n">bins</span><span class="p">}</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">array</span><span class="p">:</span>
|
||||
<span class="k">for</span> <span class="n">b</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">bins</span><span class="p">)):</span>
|
||||
<span class="k">if</span> <span class="n">i</span> <span class="o">></span> <span class="n">bins</span><span class="p">[</span><span class="n">b</span><span class="p">]:</span>
|
||||
<span class="k">continue</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">binDict</span><span class="p">[</span><span class="n">bins</span><span class="p">[</span><span class="n">b</span><span class="p">]]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
|
||||
<span class="k">break</span>
|
||||
|
||||
<span class="n">binLens</span> <span class="o">=</span> <span class="p">{</span><span class="n">b</span><span class="p">:</span> <span class="nb">len</span><span class="p">(</span><span class="n">binDict</span><span class="p">[</span><span class="n">b</span><span class="p">])</span> <span class="k">for</span> <span class="n">b</span> <span class="ow">in</span> <span class="n">bins</span><span class="p">}</span>
|
||||
|
||||
<span class="n">s</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="k">for</span> <span class="n">b</span> <span class="ow">in</span> <span class="n">binDict</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
|
||||
<span class="n">s</span> <span class="o">+=</span> <span class="n">binLens</span><span class="p">[</span><span class="n">b</span><span class="p">]</span>
|
||||
<span class="k">assert</span> <span class="n">s</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="n">array</span><span class="p">)</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">binLens</span></div>
|
||||
|
||||
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2020, Samuel Sledzieski, Rohit Singh.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
327
docs/build/html/_modules/dscript/language_model.html
vendored
327
docs/build/html/_modules/dscript/language_model.html
vendored
@@ -1,327 +0,0 @@
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<title>dscript.language_model — D-SCRIPT v1.0-beta documentation</title>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../_static/js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
|
||||
<script src="../../_static/jquery.js"></script>
|
||||
<script src="../../_static/underscore.js"></script>
|
||||
<script src="../../_static/doctools.js"></script>
|
||||
|
||||
<script type="text/javascript" src="../../_static/js/theme.js"></script>
|
||||
|
||||
|
||||
<link rel="index" title="Index" href="../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../search.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../index.html" class="icon icon-home"> D-SCRIPT
|
||||
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../installation.html">Installation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../usage.html">Usage</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../data.html">Data</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api/index.html">API</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
|
||||
|
||||
<nav class="wy-nav-top" aria-label="top navigation">
|
||||
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../index.html">D-SCRIPT</a>
|
||||
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="wy-nav-content">
|
||||
|
||||
<div class="rst-content">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||
|
||||
<ul class="wy-breadcrumbs">
|
||||
|
||||
<li><a href="../../index.html" class="icon icon-home"></a> »</li>
|
||||
|
||||
<li><a href="../index.html">Module code</a> »</li>
|
||||
|
||||
<li>dscript.language_model</li>
|
||||
|
||||
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<h1>Source code for dscript.language_model</h1><div class="highlight"><pre>
|
||||
<span></span><span class="kn">import</span> <span class="nn">os</span><span class="o">,</span> <span class="nn">sys</span>
|
||||
<span class="kn">import</span> <span class="nn">subprocess</span> <span class="k">as</span> <span class="nn">sp</span>
|
||||
<span class="kn">import</span> <span class="nn">random</span>
|
||||
<span class="kn">import</span> <span class="nn">torch</span>
|
||||
<span class="kn">import</span> <span class="nn">h5py</span>
|
||||
<span class="kn">from</span> <span class="nn">tqdm</span> <span class="kn">import</span> <span class="n">tqdm</span>
|
||||
<span class="kn">from</span> <span class="nn">.fasta</span> <span class="kn">import</span> <span class="n">parse</span><span class="p">,</span> <span class="n">parse_directory</span><span class="p">,</span> <span class="n">write</span>
|
||||
<span class="kn">from</span> <span class="nn">.pretrained</span> <span class="kn">import</span> <span class="n">get_pretrained</span>
|
||||
<span class="kn">from</span> <span class="nn">.alphabets</span> <span class="kn">import</span> <span class="n">Uniprot21</span>
|
||||
<span class="kn">from</span> <span class="nn">.models.embedding</span> <span class="kn">import</span> <span class="n">SkipLSTM</span>
|
||||
<span class="kn">from</span> <span class="nn">datetime</span> <span class="kn">import</span> <span class="n">datetime</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="lm_embed"><a class="viewcode-back" href="../../api/index.html#dscript.language_model.lm_embed">[docs]</a><span class="k">def</span> <span class="nf">lm_embed</span><span class="p">(</span><span class="n">sequence</span><span class="p">,</span> <span class="n">use_cuda</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Embed a single sequence using pre-trained language model from `Bepler & Berger <https://github.com/tbepler/protein-sequence-embedding-iclr2019>`_.</span>
|
||||
|
||||
<span class="sd"> :param sequence: Input sequence to be embedded</span>
|
||||
<span class="sd"> :type sequence: str</span>
|
||||
<span class="sd"> :param use_cuda: Whether to generate embeddings using GPU device [default: False]</span>
|
||||
<span class="sd"> :type use_cuda: bool</span>
|
||||
<span class="sd"> :return: Embedded sequence</span>
|
||||
<span class="sd"> :rtype: torch.Tensor</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">model</span> <span class="o">=</span> <span class="n">get_pretrained</span><span class="p">(</span><span class="s2">"lm_v1"</span><span class="p">)</span>
|
||||
<span class="n">torch</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">init</span><span class="o">.</span><span class="n">normal_</span><span class="p">(</span><span class="n">model</span><span class="o">.</span><span class="n">proj</span><span class="o">.</span><span class="n">weight</span><span class="p">)</span>
|
||||
<span class="n">model</span><span class="o">.</span><span class="n">proj</span><span class="o">.</span><span class="n">bias</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">Parameter</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="mi">100</span><span class="p">))</span>
|
||||
<span class="k">if</span> <span class="n">use_cuda</span><span class="p">:</span>
|
||||
<span class="n">model</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">cuda</span><span class="p">()</span>
|
||||
<span class="n">model</span><span class="o">.</span><span class="n">eval</span><span class="p">()</span>
|
||||
|
||||
<span class="k">with</span> <span class="n">torch</span><span class="o">.</span><span class="n">no_grad</span><span class="p">():</span>
|
||||
<span class="n">alphabet</span> <span class="o">=</span> <span class="n">Uniprot21</span><span class="p">()</span>
|
||||
<span class="n">es</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">from_numpy</span><span class="p">(</span><span class="n">alphabet</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="n">sequence</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s1">'utf-8'</span><span class="p">)))</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">es</span><span class="o">.</span><span class="n">long</span><span class="p">()</span><span class="o">.</span><span class="n">unsqueeze</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">use_cuda</span><span class="p">:</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">x</span><span class="o">.</span><span class="n">cuda</span><span class="p">()</span>
|
||||
<span class="n">z</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">z</span><span class="o">.</span><span class="n">cpu</span><span class="p">()</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="embed_from_fasta"><a class="viewcode-back" href="../../api/index.html#dscript.language_model.embed_from_fasta">[docs]</a><span class="k">def</span> <span class="nf">embed_from_fasta</span><span class="p">(</span><span class="n">fastaPath</span><span class="p">,</span> <span class="n">outputPath</span><span class="p">,</span> <span class="n">device</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Embed sequences using pre-trained language model from `Bepler & Berger <https://github.com/tbepler/protein-sequence-embedding-iclr2019>`_.</span>
|
||||
|
||||
<span class="sd"> :param fastaPath: Input sequence file (``.fasta`` format)</span>
|
||||
<span class="sd"> :type fastaPath: str</span>
|
||||
<span class="sd"> :param outputPath: Output embedding file (``.h5`` format)</span>
|
||||
<span class="sd"> :type outputPath: str</span>
|
||||
<span class="sd"> :param device: Compute device to use for embeddings [default: 0]</span>
|
||||
<span class="sd"> :type device: int</span>
|
||||
<span class="sd"> :param verbose: Print embedding progress</span>
|
||||
<span class="sd"> :type verbose: bool</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">use_cuda</span> <span class="o">=</span> <span class="p">(</span><span class="n">device</span> <span class="o">>=</span> <span class="mi">0</span><span class="p">)</span> <span class="ow">and</span> <span class="n">torch</span><span class="o">.</span><span class="n">cuda</span><span class="o">.</span><span class="n">is_available</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">use_cuda</span><span class="p">:</span>
|
||||
<span class="n">torch</span><span class="o">.</span><span class="n">cuda</span><span class="o">.</span><span class="n">set_device</span><span class="p">(</span><span class="n">device</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">verbose</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"# Using CUDA device </span><span class="si">{</span><span class="n">device</span><span class="si">}</span><span class="s2"> - </span><span class="si">{</span><span class="n">torch</span><span class="o">.</span><span class="n">cuda</span><span class="o">.</span><span class="n">get_device_name</span><span class="p">(</span><span class="n">device</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">verbose</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"# Using CPU"</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">verbose</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"# Loading Model..."</span><span class="p">)</span>
|
||||
<span class="n">model</span> <span class="o">=</span> <span class="n">get_pretrained</span><span class="p">(</span><span class="s2">"lm_v1"</span><span class="p">)</span>
|
||||
<span class="n">torch</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">init</span><span class="o">.</span><span class="n">normal_</span><span class="p">(</span><span class="n">model</span><span class="o">.</span><span class="n">proj</span><span class="o">.</span><span class="n">weight</span><span class="p">)</span>
|
||||
<span class="n">model</span><span class="o">.</span><span class="n">proj</span><span class="o">.</span><span class="n">bias</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">Parameter</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="mi">100</span><span class="p">))</span>
|
||||
<span class="k">if</span> <span class="n">use_cuda</span><span class="p">:</span>
|
||||
<span class="n">model</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">cuda</span><span class="p">()</span>
|
||||
|
||||
<span class="n">model</span><span class="o">.</span><span class="n">eval</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">verbose</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"# Loading Sequences..."</span><span class="p">)</span>
|
||||
<span class="n">names</span><span class="p">,</span> <span class="n">seqs</span> <span class="o">=</span> <span class="n">parse</span><span class="p">(</span><span class="nb">open</span><span class="p">(</span><span class="n">fastaPath</span><span class="p">,</span> <span class="s2">"rb"</span><span class="p">))</span>
|
||||
<span class="n">alphabet</span> <span class="o">=</span> <span class="n">Uniprot21</span><span class="p">()</span>
|
||||
<span class="n">encoded_seqs</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="n">s</span> <span class="ow">in</span> <span class="n">tqdm</span><span class="p">(</span><span class="n">seqs</span><span class="p">):</span>
|
||||
<span class="n">es</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">from_numpy</span><span class="p">(</span><span class="n">alphabet</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="n">s</span><span class="p">))</span>
|
||||
<span class="k">if</span> <span class="n">use_cuda</span><span class="p">:</span>
|
||||
<span class="n">es</span> <span class="o">=</span> <span class="n">es</span><span class="o">.</span><span class="n">cuda</span><span class="p">()</span>
|
||||
<span class="n">encoded_seqs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">es</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">verbose</span><span class="p">:</span>
|
||||
<span class="n">num_seqs</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">encoded_seqs</span><span class="p">)</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"# </span><span class="si">{}</span><span class="s2"> Sequences Loaded"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">num_seqs</span><span class="p">))</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"# Approximate Storage Required (varies by average sequence length): ~</span><span class="si">{}</span><span class="s2">GB"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">num_seqs</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1</span><span class="o">/</span><span class="mi">125</span><span class="p">)))</span>
|
||||
|
||||
<span class="n">h5fi</span> <span class="o">=</span> <span class="n">h5py</span><span class="o">.</span><span class="n">File</span><span class="p">(</span><span class="n">outputPath</span><span class="p">,</span> <span class="s2">"w"</span><span class="p">)</span>
|
||||
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"# Storing to </span><span class="si">{}</span><span class="s2">..."</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">outputPath</span><span class="p">))</span>
|
||||
<span class="k">with</span> <span class="n">torch</span><span class="o">.</span><span class="n">no_grad</span><span class="p">():</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">for</span> <span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="n">x</span><span class="p">)</span> <span class="ow">in</span> <span class="n">tqdm</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">names</span><span class="p">,</span> <span class="n">encoded_seqs</span><span class="p">),</span><span class="n">total</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="n">names</span><span class="p">)):</span>
|
||||
<span class="n">name</span> <span class="o">=</span> <span class="n">n</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="s2">"utf-8"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">h5fi</span><span class="p">:</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">x</span><span class="o">.</span><span class="n">long</span><span class="p">()</span><span class="o">.</span><span class="n">unsqueeze</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
||||
<span class="n">z</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||||
<span class="n">h5fi</span><span class="o">.</span><span class="n">create_dataset</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="n">z</span><span class="o">.</span><span class="n">cpu</span><span class="p">()</span><span class="o">.</span><span class="n">numpy</span><span class="p">(),</span> <span class="n">compression</span><span class="o">=</span><span class="s2">"lzf"</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span>
|
||||
<span class="n">h5fi</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
|
||||
<span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
|
||||
<span class="n">h5fi</span><span class="o">.</span><span class="n">close</span><span class="p">()</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="embed_from_directory"><a class="viewcode-back" href="../../api/index.html#dscript.language_model.embed_from_directory">[docs]</a><span class="k">def</span> <span class="nf">embed_from_directory</span><span class="p">(</span><span class="n">directory</span><span class="p">,</span> <span class="n">outputPath</span><span class="p">,</span> <span class="n">device</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">extension</span><span class="o">=</span><span class="s2">".seq"</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Embed all files in a directory in ``.fasta`` format using pre-trained language model from `Bepler & Berger <https://github.com/tbepler/protein-sequence-embedding-iclr2019>`_.</span>
|
||||
|
||||
<span class="sd"> :param directory: Input directory (``.fasta`` format)</span>
|
||||
<span class="sd"> :type directory: str</span>
|
||||
<span class="sd"> :param outputPath: Output embedding file (``.h5`` format)</span>
|
||||
<span class="sd"> :type outputPath: str</span>
|
||||
<span class="sd"> :param device: Compute device to use for embeddings [default: 0]</span>
|
||||
<span class="sd"> :type device: int</span>
|
||||
<span class="sd"> :param verbose: Print embedding progress</span>
|
||||
<span class="sd"> :type verbose: bool</span>
|
||||
<span class="sd"> :param extension: Extension of all files to read in</span>
|
||||
<span class="sd"> :type extension: str</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">nam</span><span class="p">,</span> <span class="n">seq</span> <span class="o">=</span> <span class="n">parse_directory</span><span class="p">(</span><span class="n">directory</span><span class="p">,</span> <span class="n">extension</span><span class="o">=</span><span class="n">extension</span><span class="p">)</span>
|
||||
<span class="n">fastaPath</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">directory</span><span class="si">}</span><span class="s2">/allSeqs.fa"</span>
|
||||
<span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">fastaPath</span><span class="p">):</span>
|
||||
<span class="n">fastaPath</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">fastaPath</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="nb">int</span><span class="p">(</span><span class="n">datetime</span><span class="o">.</span><span class="n">utcnow</span><span class="p">()</span><span class="o">.</span><span class="n">timestamp</span><span class="p">())</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="n">write</span><span class="p">(</span><span class="n">nam</span><span class="p">,</span> <span class="n">seq</span><span class="p">,</span> <span class="nb">open</span><span class="p">(</span><span class="n">fastaPath</span><span class="p">,</span> <span class="s2">"w"</span><span class="p">))</span>
|
||||
<span class="n">embed_from_fasta</span><span class="p">(</span><span class="n">fastaPath</span><span class="p">,</span> <span class="n">outputPath</span><span class="p">,</span> <span class="n">device</span><span class="p">,</span> <span class="n">verbose</span><span class="p">)</span></div>
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2020, Samuel Sledzieski, Rohit Singh.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
329
docs/build/html/_modules/dscript/models/contact.html
vendored
329
docs/build/html/_modules/dscript/models/contact.html
vendored
@@ -1,329 +0,0 @@
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<title>dscript.models.contact — D-SCRIPT v1.0-beta documentation</title>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../../_static/js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></script>
|
||||
<script src="../../../_static/jquery.js"></script>
|
||||
<script src="../../../_static/underscore.js"></script>
|
||||
<script src="../../../_static/doctools.js"></script>
|
||||
|
||||
<script type="text/javascript" src="../../../_static/js/theme.js"></script>
|
||||
|
||||
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../../index.html" class="icon icon-home"> D-SCRIPT
|
||||
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../installation.html">Installation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../usage.html">Usage</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../data.html">Data</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../api/index.html">API</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
|
||||
|
||||
<nav class="wy-nav-top" aria-label="top navigation">
|
||||
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../../index.html">D-SCRIPT</a>
|
||||
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="wy-nav-content">
|
||||
|
||||
<div class="rst-content">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||
|
||||
<ul class="wy-breadcrumbs">
|
||||
|
||||
<li><a href="../../../index.html" class="icon icon-home"></a> »</li>
|
||||
|
||||
<li><a href="../../index.html">Module code</a> »</li>
|
||||
|
||||
<li>dscript.models.contact</li>
|
||||
|
||||
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<h1>Source code for dscript.models.contact</h1><div class="highlight"><pre>
|
||||
<span></span><span class="c1"># Input: C = NxMxH embedding contact matrix</span>
|
||||
<span class="c1"># Output: S = MxN contact prediction matrix</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">torch</span>
|
||||
<span class="kn">import</span> <span class="nn">torch.nn</span> <span class="k">as</span> <span class="nn">nn</span>
|
||||
<span class="kn">import</span> <span class="nn">torch.functional</span> <span class="k">as</span> <span class="nn">F</span>
|
||||
|
||||
<div class="viewcode-block" id="FullyConnected"><a class="viewcode-back" href="../../../api/dscript.models.html#dscript.models.contact.FullyConnected">[docs]</a><span class="k">class</span> <span class="nc">FullyConnected</span><span class="p">(</span><span class="n">nn</span><span class="o">.</span><span class="n">Module</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Performs part 1 of Contact Prediction Module. Takes embeddings from Projection module and produces broadcast tensor.</span>
|
||||
|
||||
<span class="sd"> Input embeddings of dimension :math:`d` are combined into a :math:`2d` length MLP input :math:`z_{cat}`, where :math:`z_{cat} = [z_0 \\ominus z_1 | z_0 \\odot z_1]`</span>
|
||||
|
||||
<span class="sd"> :param embed_dim: Output dimension of `dscript.models.embedding <#module-dscript.models.embedding>`_ model :math:`d` [default: 100]</span>
|
||||
<span class="sd"> :type embed_dim: int</span>
|
||||
<span class="sd"> :param hidden_dim: Hidden dimension :math:`h` [default: 50]</span>
|
||||
<span class="sd"> :type hidden_dim: int</span>
|
||||
<span class="sd"> :param activation: Activation function for broadcast tensor [default: torch.nn.ReLU()]</span>
|
||||
<span class="sd"> :type activation: torch.nn.Module</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">embed_dim</span><span class="p">,</span> <span class="n">hidden_dim</span><span class="p">,</span> <span class="n">activation</span><span class="o">=</span><span class="n">nn</span><span class="o">.</span><span class="n">ReLU</span><span class="p">()):</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">FullyConnected</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">D</span> <span class="o">=</span> <span class="n">embed_dim</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">H</span> <span class="o">=</span> <span class="n">hidden_dim</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">conv</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Conv2d</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="bp">self</span><span class="o">.</span><span class="n">D</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">H</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">batchnorm</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">BatchNorm2d</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">H</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">activation</span> <span class="o">=</span> <span class="n">activation</span>
|
||||
|
||||
<div class="viewcode-block" id="FullyConnected.forward"><a class="viewcode-back" href="../../../api/dscript.models.html#dscript.models.contact.FullyConnected.forward">[docs]</a> <span class="k">def</span> <span class="nf">forward</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">z0</span><span class="p">,</span> <span class="n">z1</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> :param z0: Projection module embedding :math:`(b \\times N \\times d)`</span>
|
||||
<span class="sd"> :type z0: torch.Tensor</span>
|
||||
<span class="sd"> :param z1: Projection module embedding :math:`(b \\times M \\times d)`</span>
|
||||
<span class="sd"> :type z1: torch.Tensor</span>
|
||||
<span class="sd"> :return: Predicted broadcast tensor :math:`(b \\times N \\times M \\times h)`</span>
|
||||
<span class="sd"> :rtype: torch.Tensor</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="c1"># z0 is (b,N,d), z1 is (b,M,d)</span>
|
||||
<span class="n">z0</span> <span class="o">=</span> <span class="n">z0</span><span class="o">.</span><span class="n">transpose</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span>
|
||||
<span class="n">z1</span> <span class="o">=</span> <span class="n">z1</span><span class="o">.</span><span class="n">transpose</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span>
|
||||
<span class="c1"># z0 is (b,d,N), z1 is (b,d,M)</span>
|
||||
|
||||
<span class="n">z_dif</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="n">z0</span><span class="o">.</span><span class="n">unsqueeze</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span> <span class="o">-</span> <span class="n">z1</span><span class="o">.</span><span class="n">unsqueeze</span><span class="p">(</span><span class="mi">2</span><span class="p">))</span>
|
||||
<span class="n">z_mul</span> <span class="o">=</span> <span class="n">z0</span><span class="o">.</span><span class="n">unsqueeze</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span> <span class="o">*</span> <span class="n">z1</span><span class="o">.</span><span class="n">unsqueeze</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
|
||||
<span class="n">z_cat</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">cat</span><span class="p">([</span><span class="n">z_dif</span><span class="p">,</span> <span class="n">z_mul</span><span class="p">],</span> <span class="mi">1</span><span class="p">)</span>
|
||||
|
||||
<span class="n">c</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">conv</span><span class="p">(</span><span class="n">z_cat</span><span class="p">)</span>
|
||||
<span class="n">c</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">activation</span><span class="p">(</span><span class="n">c</span><span class="p">)</span>
|
||||
<span class="n">c</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">batchnorm</span><span class="p">(</span><span class="n">c</span><span class="p">)</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">c</span></div></div>
|
||||
|
||||
<div class="viewcode-block" id="ContactCNN"><a class="viewcode-back" href="../../../api/dscript.models.html#dscript.models.contact.ContactCNN">[docs]</a><span class="k">class</span> <span class="nc">ContactCNN</span><span class="p">(</span><span class="n">nn</span><span class="o">.</span><span class="n">Module</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Residue Contact Prediction Module. Takes embeddings from Projection module and produces contact map, output of Contact module.</span>
|
||||
|
||||
<span class="sd"> :param embed_dim: Output dimension of `dscript.models.embedding <#module-dscript.models.embedding>`_ model :math:`d` [default: 100]</span>
|
||||
<span class="sd"> :type embed_dim: int</span>
|
||||
<span class="sd"> :param hidden_dim: Hidden dimension :math:`h` [default: 50]</span>
|
||||
<span class="sd"> :type hidden_dim: int</span>
|
||||
<span class="sd"> :param width: Width of convolutional filter :math:`2w+1` [default: 7]</span>
|
||||
<span class="sd"> :type width: int</span>
|
||||
<span class="sd"> :param activation: Activation function for final contact map [default: torch.nn.Sigmoid()]</span>
|
||||
<span class="sd"> :type activation: torch.nn.Module</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">embed_dim</span><span class="p">,</span> <span class="n">hidden_dim</span><span class="o">=</span><span class="mi">50</span><span class="p">,</span> <span class="n">width</span><span class="o">=</span><span class="mi">7</span><span class="p">,</span> <span class="n">activation</span><span class="o">=</span><span class="n">nn</span><span class="o">.</span><span class="n">Sigmoid</span><span class="p">()):</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">ContactCNN</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">hidden</span> <span class="o">=</span> <span class="n">FullyConnected</span><span class="p">(</span><span class="n">embed_dim</span><span class="p">,</span> <span class="n">hidden_dim</span><span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">conv</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Conv2d</span><span class="p">(</span><span class="n">hidden_dim</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">width</span><span class="p">,</span> <span class="n">padding</span><span class="o">=</span><span class="n">width</span><span class="o">//</span><span class="mi">2</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">batchnorm</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">BatchNorm2d</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">activation</span> <span class="o">=</span> <span class="n">activation</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">clip</span><span class="p">()</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">clip</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Force the convolutional layer to be transpose invariant.</span>
|
||||
|
||||
<span class="sd"> :meta private:</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">w</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">conv</span><span class="o">.</span><span class="n">weight</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">conv</span><span class="o">.</span><span class="n">weight</span><span class="o">.</span><span class="n">data</span><span class="p">[:]</span> <span class="o">=</span> <span class="mf">0.5</span><span class="o">*</span><span class="p">(</span><span class="n">w</span> <span class="o">+</span> <span class="n">w</span><span class="o">.</span><span class="n">transpose</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">))</span>
|
||||
|
||||
<div class="viewcode-block" id="ContactCNN.forward"><a class="viewcode-back" href="../../../api/dscript.models.html#dscript.models.contact.ContactCNN.forward">[docs]</a> <span class="k">def</span> <span class="nf">forward</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">z0</span><span class="p">,</span> <span class="n">z1</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> :param z0: Projection module embedding :math:`(b \\times N \\times d)`</span>
|
||||
<span class="sd"> :type z0: torch.Tensor</span>
|
||||
<span class="sd"> :param z1: Projection module embedding :math:`(b \\times M \\times d)`</span>
|
||||
<span class="sd"> :type z1: torch.Tensor</span>
|
||||
<span class="sd"> :return: Predicted contact map :math:`(b \\times N \\times M)`</span>
|
||||
<span class="sd"> :rtype: torch.Tensor</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">C</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">cmap</span><span class="p">(</span><span class="n">z0</span><span class="p">,</span> <span class="n">z1</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">C</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="ContactCNN.cmap"><a class="viewcode-back" href="../../../api/dscript.models.html#dscript.models.contact.ContactCNN.cmap">[docs]</a> <span class="k">def</span> <span class="nf">cmap</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">z0</span><span class="p">,</span> <span class="n">z1</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Calls `dscript.models.contact.FullyConnected <#module-dscript.models.contact.FullyConnected>`_.</span>
|
||||
|
||||
<span class="sd"> :param z0: Projection module embedding :math:`(b \\times N \\times d)`</span>
|
||||
<span class="sd"> :type z0: torch.Tensor</span>
|
||||
<span class="sd"> :param z1: Projection module embedding :math:`(b \\times M \\times d)`</span>
|
||||
<span class="sd"> :type z1: torch.Tensor</span>
|
||||
<span class="sd"> :return: Predicted contact broadcast tensor :math:`(b \\times N \\times M \\times h)`</span>
|
||||
<span class="sd"> :rtype: torch.Tensor</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">C</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">hidden</span><span class="p">(</span><span class="n">z0</span><span class="p">,</span> <span class="n">z1</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">C</span></div>
|
||||
|
||||
<div class="viewcode-block" id="ContactCNN.predict"><a class="viewcode-back" href="../../../api/dscript.models.html#dscript.models.contact.ContactCNN.predict">[docs]</a> <span class="k">def</span> <span class="nf">predict</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">C</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Predict contact map from broadcast tensor.</span>
|
||||
|
||||
<span class="sd"> :param B: Predicted contact broadcast :math:`(b \\times N \\times M \\times h)`</span>
|
||||
<span class="sd"> :type B: torch.Tensor</span>
|
||||
<span class="sd"> :return: Predicted contact map :math:`(b \\times N \\times M)`</span>
|
||||
<span class="sd"> :rtype: torch.Tensor</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="c1"># S is (b,N,M)</span>
|
||||
<span class="n">s</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">conv</span><span class="p">(</span><span class="n">C</span><span class="p">)</span>
|
||||
<span class="n">s</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">batchnorm</span><span class="p">(</span><span class="n">s</span><span class="p">)</span>
|
||||
<span class="n">s</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">activation</span><span class="p">(</span><span class="n">s</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">s</span></div></div>
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2020, Samuel Sledzieski, Rohit Singh.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,400 +0,0 @@
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<title>dscript.models.embedding — D-SCRIPT v1.0-beta documentation</title>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../../_static/js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></script>
|
||||
<script src="../../../_static/jquery.js"></script>
|
||||
<script src="../../../_static/underscore.js"></script>
|
||||
<script src="../../../_static/doctools.js"></script>
|
||||
|
||||
<script type="text/javascript" src="../../../_static/js/theme.js"></script>
|
||||
|
||||
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../../index.html" class="icon icon-home"> D-SCRIPT
|
||||
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../installation.html">Installation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../usage.html">Usage</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../data.html">Data</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../api/index.html">API</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
|
||||
|
||||
<nav class="wy-nav-top" aria-label="top navigation">
|
||||
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../../index.html">D-SCRIPT</a>
|
||||
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="wy-nav-content">
|
||||
|
||||
<div class="rst-content">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||
|
||||
<ul class="wy-breadcrumbs">
|
||||
|
||||
<li><a href="../../../index.html" class="icon icon-home"></a> »</li>
|
||||
|
||||
<li><a href="../../index.html">Module code</a> »</li>
|
||||
|
||||
<li>dscript.models.embedding</li>
|
||||
|
||||
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<h1>Source code for dscript.models.embedding</h1><div class="highlight"><pre>
|
||||
<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">print_function</span><span class="p">,</span><span class="n">division</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">torch</span>
|
||||
<span class="kn">import</span> <span class="nn">torch.nn</span> <span class="k">as</span> <span class="nn">nn</span>
|
||||
<span class="kn">import</span> <span class="nn">torch.nn.functional</span> <span class="k">as</span> <span class="nn">F</span>
|
||||
<span class="kn">from</span> <span class="nn">torch.nn.utils.rnn</span> <span class="kn">import</span> <span class="n">PackedSequence</span>
|
||||
|
||||
<div class="viewcode-block" id="IdentityEmbed"><a class="viewcode-back" href="../../../api/dscript.models.html#dscript.models.embedding.IdentityEmbed">[docs]</a><span class="k">class</span> <span class="nc">IdentityEmbed</span><span class="p">(</span><span class="n">nn</span><span class="o">.</span><span class="n">Module</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Does not reduce the dimension of the language model embeddings, just passes them through to the contact model.</span>
|
||||
<span class="sd"> """</span>
|
||||
<div class="viewcode-block" id="IdentityEmbed.forward"><a class="viewcode-back" href="../../../api/dscript.models.html#dscript.models.embedding.IdentityEmbed.forward">[docs]</a> <span class="k">def</span> <span class="nf">forward</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> :param x: Input language model embedding :math:`(b \\times N \\times d_0)`</span>
|
||||
<span class="sd"> :type x: torch.Tensor</span>
|
||||
<span class="sd"> :return: Same embedding</span>
|
||||
<span class="sd"> :rtype: torch.Tensor</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">x</span></div></div>
|
||||
|
||||
<div class="viewcode-block" id="FullyConnectedEmbed"><a class="viewcode-back" href="../../../api/dscript.models.html#dscript.models.embedding.FullyConnectedEmbed">[docs]</a><span class="k">class</span> <span class="nc">FullyConnectedEmbed</span><span class="p">(</span><span class="n">nn</span><span class="o">.</span><span class="n">Module</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Protein Projection Module. Takes embedding from language model and outputs low-dimensional interaction aware projection.</span>
|
||||
|
||||
<span class="sd"> :param nin: Size of language model output</span>
|
||||
<span class="sd"> :type nin: int</span>
|
||||
<span class="sd"> :param nout: Dimension of projection</span>
|
||||
<span class="sd"> :type nout: int</span>
|
||||
<span class="sd"> :param dropout: Proportion of weights to drop out [default: 0.5]</span>
|
||||
<span class="sd"> :type dropout: float</span>
|
||||
<span class="sd"> :param activation: Activation for linear projection model</span>
|
||||
<span class="sd"> :type activation: torch.nn.Module</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">nin</span><span class="p">,</span> <span class="n">nout</span><span class="p">,</span> <span class="n">dropout</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">activation</span><span class="o">=</span><span class="n">nn</span><span class="o">.</span><span class="n">ReLU</span><span class="p">()):</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">FullyConnectedEmbed</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">nin</span> <span class="o">=</span> <span class="n">nin</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">nout</span> <span class="o">=</span> <span class="n">nout</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">dropout_p</span> <span class="o">=</span> <span class="n">dropout</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">transform</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Linear</span><span class="p">(</span><span class="n">nin</span><span class="p">,</span> <span class="n">nout</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">drop</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Dropout</span><span class="p">(</span><span class="n">p</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dropout_p</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">activation</span> <span class="o">=</span> <span class="n">activation</span>
|
||||
|
||||
<div class="viewcode-block" id="FullyConnectedEmbed.forward"><a class="viewcode-back" href="../../../api/dscript.models.html#dscript.models.embedding.FullyConnectedEmbed.forward">[docs]</a> <span class="k">def</span> <span class="nf">forward</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> :param x: Input language model embedding :math:`(b \\times N \\times d_0)`</span>
|
||||
<span class="sd"> :type x: torch.Tensor</span>
|
||||
<span class="sd"> :return: Low dimensional projection of embedding</span>
|
||||
<span class="sd"> :rtype: torch.Tensor</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">t</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||||
<span class="n">t</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">activation</span><span class="p">(</span><span class="n">t</span><span class="p">)</span>
|
||||
<span class="n">t</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">drop</span><span class="p">(</span><span class="n">t</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">t</span></div></div>
|
||||
|
||||
<div class="viewcode-block" id="LSTMEmbed"><a class="viewcode-back" href="../../../api/dscript.models.html#dscript.models.embedding.LSTMEmbed">[docs]</a><span class="k">class</span> <span class="nc">LSTMEmbed</span><span class="p">(</span><span class="n">nn</span><span class="o">.</span><span class="n">Module</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">nout</span><span class="p">,</span> <span class="n">activation</span><span class="o">=</span><span class="s1">'ReLU'</span><span class="p">,</span> <span class="n">sparse</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">p</span><span class="o">=</span><span class="mf">0.5</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">LSTMEmbed</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">activation</span> <span class="o">=</span> <span class="n">activation</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">sparse</span> <span class="o">=</span> <span class="n">sparse</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">p</span> <span class="o">=</span> <span class="n">p</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">embedding</span> <span class="o">=</span> <span class="n">SkipLSTM</span><span class="p">(</span><span class="mi">21</span><span class="p">,</span> <span class="n">nout</span><span class="p">,</span> <span class="mi">1024</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">embedding</span><span class="o">.</span><span class="n">load_state_dict</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">EMBEDDING_STATE_DICT</span><span class="p">))</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">param</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">embedding</span><span class="o">.</span><span class="n">parameters</span><span class="p">():</span>
|
||||
<span class="n">param</span><span class="o">.</span><span class="n">requires_grad</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
<span class="n">torch</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">init</span><span class="o">.</span><span class="n">normal_</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">embedding</span><span class="o">.</span><span class="n">proj</span><span class="o">.</span><span class="n">weight</span><span class="p">)</span>
|
||||
<span class="n">torch</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">init</span><span class="o">.</span><span class="n">uniform_</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">embedding</span><span class="o">.</span><span class="n">proj</span><span class="o">.</span><span class="n">bias</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">embedding</span><span class="o">.</span><span class="n">proj</span><span class="o">.</span><span class="n">weight</span><span class="o">.</span><span class="n">requires_grad</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">embedding</span><span class="o">.</span><span class="n">proj</span><span class="o">.</span><span class="n">bias</span><span class="o">.</span><span class="n">requires_grad</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">activationDict</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">ModuleDict</span><span class="p">({</span>
|
||||
<span class="s1">'None'</span><span class="p">:</span> <span class="n">IdentityEmbed</span><span class="p">(),</span>
|
||||
<span class="s1">'ReLU'</span><span class="p">:</span> <span class="n">nn</span><span class="o">.</span><span class="n">ReLU</span><span class="p">(),</span>
|
||||
<span class="s1">'Sigmoid'</span><span class="p">:</span> <span class="n">nn</span><span class="o">.</span><span class="n">Sigmoid</span><span class="p">()</span>
|
||||
<span class="p">})</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">dropout</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Dropout</span><span class="p">(</span><span class="n">p</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">p</span><span class="p">)</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="LSTMEmbed.forward"><a class="viewcode-back" href="../../../api/dscript.models.html#dscript.models.embedding.LSTMEmbed.forward">[docs]</a> <span class="k">def</span> <span class="nf">forward</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
|
||||
|
||||
<span class="n">t</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">embedding</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">activation</span><span class="p">:</span> <span class="n">t</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">activationDict</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">activation</span><span class="p">](</span><span class="n">t</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">sparse</span><span class="p">:</span> <span class="n">t</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dropout</span><span class="p">(</span><span class="n">t</span><span class="p">)</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">t</span></div>
|
||||
|
||||
<div class="viewcode-block" id="LSTMEmbed.long_embed"><a class="viewcode-back" href="../../../api/dscript.models.html#dscript.models.embedding.LSTMEmbed.long_embed">[docs]</a> <span class="k">def</span> <span class="nf">long_embed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">embedding</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">x</span><span class="p">)</span></div></div>
|
||||
|
||||
<div class="viewcode-block" id="SkipLSTM"><a class="viewcode-back" href="../../../api/dscript.models.html#dscript.models.embedding.SkipLSTM">[docs]</a><span class="k">class</span> <span class="nc">SkipLSTM</span><span class="p">(</span><span class="n">nn</span><span class="o">.</span><span class="n">Module</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Language model from `Bepler & Berger <https://github.com/tbepler/protein-sequence-embedding-iclr2019>`_.</span>
|
||||
|
||||
<span class="sd"> Loaded with pre-trained weights in embedding function.</span>
|
||||
|
||||
<span class="sd"> :param nin: Input dimension of amino acid one-hot [default: 21]</span>
|
||||
<span class="sd"> :type nin: int</span>
|
||||
<span class="sd"> :param nout: Output dimension of final layer [default: 100]</span>
|
||||
<span class="sd"> :type nout: int</span>
|
||||
<span class="sd"> :param hidden_dim: Size of hidden dimension [default: 1024]</span>
|
||||
<span class="sd"> :type hidden_dim: int</span>
|
||||
<span class="sd"> :param num_layers: Number of stacked LSTM models [default: 3]</span>
|
||||
<span class="sd"> :type num_layers: int</span>
|
||||
<span class="sd"> :param dropout: Proportion of weights to drop out [default: 0]</span>
|
||||
<span class="sd"> :type dropout: float</span>
|
||||
<span class="sd"> :param bidirectional: Whether to use biLSTM vs. LSTM</span>
|
||||
<span class="sd"> :type bidirectional: bool</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">nin</span><span class="p">,</span> <span class="n">nout</span><span class="p">,</span> <span class="n">hidden_dim</span><span class="p">,</span> <span class="n">num_layers</span><span class="p">,</span> <span class="n">dropout</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">bidirectional</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">SkipLSTM</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">nin</span> <span class="o">=</span> <span class="n">nin</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">nout</span> <span class="o">=</span> <span class="n">nout</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">dropout</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Dropout</span><span class="p">(</span><span class="n">p</span><span class="o">=</span><span class="n">dropout</span><span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">layers</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">ModuleList</span><span class="p">()</span>
|
||||
<span class="n">dim</span> <span class="o">=</span> <span class="n">nin</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">num_layers</span><span class="p">):</span>
|
||||
<span class="n">f</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">LSTM</span><span class="p">(</span><span class="n">dim</span><span class="p">,</span> <span class="n">hidden_dim</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">batch_first</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">bidirectional</span><span class="o">=</span><span class="n">bidirectional</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">layers</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">f</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">bidirectional</span><span class="p">:</span>
|
||||
<span class="n">dim</span> <span class="o">=</span> <span class="mi">2</span><span class="o">*</span><span class="n">hidden_dim</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">dim</span> <span class="o">=</span> <span class="n">hidden_dim</span>
|
||||
|
||||
<span class="n">n</span> <span class="o">=</span> <span class="n">hidden_dim</span><span class="o">*</span><span class="n">num_layers</span> <span class="o">+</span> <span class="n">nin</span>
|
||||
<span class="k">if</span> <span class="n">bidirectional</span><span class="p">:</span>
|
||||
<span class="n">n</span> <span class="o">=</span> <span class="mi">2</span><span class="o">*</span><span class="n">hidden_dim</span><span class="o">*</span><span class="n">num_layers</span> <span class="o">+</span> <span class="n">nin</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">proj</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Linear</span><span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="n">nout</span><span class="p">)</span>
|
||||
|
||||
<div class="viewcode-block" id="SkipLSTM.to_one_hot"><a class="viewcode-back" href="../../../api/dscript.models.html#dscript.models.embedding.SkipLSTM.to_one_hot">[docs]</a> <span class="k">def</span> <span class="nf">to_one_hot</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Transform numeric encoded amino acid vector to one-hot encoded vector</span>
|
||||
|
||||
<span class="sd"> :param x: Input numeric amino acid encoding :math:`(N)`</span>
|
||||
<span class="sd"> :type x: torch.Tensor</span>
|
||||
<span class="sd"> :return: One-hot encoding vector :math:`(N \\times n_{in})`</span>
|
||||
<span class="sd"> :rtype: torch.Tensor</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">packed</span> <span class="o">=</span> <span class="nb">type</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="ow">is</span> <span class="n">PackedSequence</span>
|
||||
<span class="k">if</span> <span class="n">packed</span><span class="p">:</span>
|
||||
<span class="n">one_hot</span> <span class="o">=</span> <span class="n">x</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="n">x</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">size</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">nin</span><span class="p">)</span><span class="o">.</span><span class="n">float</span><span class="p">()</span><span class="o">.</span><span class="n">zero_</span><span class="p">()</span>
|
||||
<span class="n">one_hot</span><span class="o">.</span><span class="n">scatter_</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">x</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">unsqueeze</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="n">one_hot</span> <span class="o">=</span> <span class="n">PackedSequence</span><span class="p">(</span><span class="n">one_hot</span><span class="p">,</span> <span class="n">x</span><span class="o">.</span><span class="n">batch_sizes</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">one_hot</span> <span class="o">=</span> <span class="n">x</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="n">x</span><span class="o">.</span><span class="n">size</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="n">x</span><span class="o">.</span><span class="n">size</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">nin</span><span class="p">)</span><span class="o">.</span><span class="n">float</span><span class="p">()</span><span class="o">.</span><span class="n">zero_</span><span class="p">()</span>
|
||||
<span class="n">one_hot</span><span class="o">.</span><span class="n">scatter_</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="n">x</span><span class="o">.</span><span class="n">unsqueeze</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">one_hot</span></div>
|
||||
|
||||
<div class="viewcode-block" id="SkipLSTM.transform"><a class="viewcode-back" href="../../../api/dscript.models.html#dscript.models.embedding.SkipLSTM.transform">[docs]</a> <span class="k">def</span> <span class="nf">transform</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> :param x: Input numeric amino acid encoding :math:`(N)`</span>
|
||||
<span class="sd"> :type x: torch.Tensor</span>
|
||||
<span class="sd"> :return: Concatenation of all hidden layers :math:`(N \\times (n_{in} + 2 \\times \\text{num_layers} \\times \\text{hidden_dim}))`</span>
|
||||
<span class="sd"> :rtype: torch.Tensor</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">one_hot</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">to_one_hot</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||||
<span class="n">hs</span> <span class="o">=</span> <span class="p">[</span><span class="n">one_hot</span><span class="p">]</span> <span class="c1"># []</span>
|
||||
<span class="n">h_</span> <span class="o">=</span> <span class="n">one_hot</span>
|
||||
<span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">layers</span><span class="p">:</span>
|
||||
<span class="n">h</span><span class="p">,</span><span class="n">_</span> <span class="o">=</span> <span class="n">f</span><span class="p">(</span><span class="n">h_</span><span class="p">)</span>
|
||||
<span class="c1">#h = self.dropout(h)</span>
|
||||
<span class="n">hs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">h</span><span class="p">)</span>
|
||||
<span class="n">h_</span> <span class="o">=</span> <span class="n">h</span>
|
||||
<span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="ow">is</span> <span class="n">PackedSequence</span><span class="p">:</span>
|
||||
<span class="n">h</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">cat</span><span class="p">([</span><span class="n">z</span><span class="o">.</span><span class="n">data</span> <span class="k">for</span> <span class="n">z</span> <span class="ow">in</span> <span class="n">hs</span><span class="p">],</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="n">h</span> <span class="o">=</span> <span class="n">PackedSequence</span><span class="p">(</span><span class="n">h</span><span class="p">,</span> <span class="n">x</span><span class="o">.</span><span class="n">batch_sizes</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">h</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">cat</span><span class="p">([</span><span class="n">z</span> <span class="k">for</span> <span class="n">z</span> <span class="ow">in</span> <span class="n">hs</span><span class="p">],</span> <span class="mi">2</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">h</span></div>
|
||||
|
||||
<span class="k">def</span> <span class="nf">forward</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> :meta private:</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">one_hot</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">to_one_hot</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||||
<span class="n">hs</span> <span class="o">=</span> <span class="p">[</span><span class="n">one_hot</span><span class="p">]</span>
|
||||
<span class="n">h_</span> <span class="o">=</span> <span class="n">one_hot</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">layers</span><span class="p">:</span>
|
||||
<span class="n">h</span><span class="p">,</span><span class="n">_</span> <span class="o">=</span> <span class="n">f</span><span class="p">(</span><span class="n">h_</span><span class="p">)</span>
|
||||
<span class="c1">#h = self.dropout(h)</span>
|
||||
<span class="n">hs</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">h</span><span class="p">)</span>
|
||||
<span class="n">h_</span> <span class="o">=</span> <span class="n">h</span>
|
||||
|
||||
<span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="ow">is</span> <span class="n">PackedSequence</span><span class="p">:</span>
|
||||
<span class="n">h</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">cat</span><span class="p">([</span><span class="n">z</span><span class="o">.</span><span class="n">data</span> <span class="k">for</span> <span class="n">z</span> <span class="ow">in</span> <span class="n">hs</span><span class="p">],</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="n">z</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">proj</span><span class="p">(</span><span class="n">h</span><span class="p">)</span>
|
||||
<span class="n">z</span> <span class="o">=</span> <span class="n">PackedSequence</span><span class="p">(</span><span class="n">z</span><span class="p">,</span> <span class="n">x</span><span class="o">.</span><span class="n">batch_sizes</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">h</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">cat</span><span class="p">([</span><span class="n">z</span> <span class="k">for</span> <span class="n">z</span> <span class="ow">in</span> <span class="n">hs</span><span class="p">],</span> <span class="mi">2</span><span class="p">)</span>
|
||||
<span class="n">z</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">proj</span><span class="p">(</span><span class="n">h</span><span class="o">.</span><span class="n">view</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="n">h</span><span class="o">.</span><span class="n">size</span><span class="p">(</span><span class="mi">2</span><span class="p">)))</span>
|
||||
<span class="n">z</span> <span class="o">=</span> <span class="n">z</span><span class="o">.</span><span class="n">view</span><span class="p">(</span><span class="n">x</span><span class="o">.</span><span class="n">size</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="n">x</span><span class="o">.</span><span class="n">size</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">z</span></div>
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2020, Samuel Sledzieski, Rohit Singh.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,407 +0,0 @@
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<title>dscript.models.interaction — D-SCRIPT v1.0-beta documentation</title>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../../_static/js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></script>
|
||||
<script src="../../../_static/jquery.js"></script>
|
||||
<script src="../../../_static/underscore.js"></script>
|
||||
<script src="../../../_static/doctools.js"></script>
|
||||
|
||||
<script type="text/javascript" src="../../../_static/js/theme.js"></script>
|
||||
|
||||
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../../index.html" class="icon icon-home"> D-SCRIPT
|
||||
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../installation.html">Installation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../usage.html">Usage</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../data.html">Data</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../api/index.html">API</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
|
||||
|
||||
<nav class="wy-nav-top" aria-label="top navigation">
|
||||
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../../index.html">D-SCRIPT</a>
|
||||
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="wy-nav-content">
|
||||
|
||||
<div class="rst-content">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||
|
||||
<ul class="wy-breadcrumbs">
|
||||
|
||||
<li><a href="../../../index.html" class="icon icon-home"></a> »</li>
|
||||
|
||||
<li><a href="../../index.html">Module code</a> »</li>
|
||||
|
||||
<li>dscript.models.interaction</li>
|
||||
|
||||
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<h1>Source code for dscript.models.interaction</h1><div class="highlight"><pre>
|
||||
<span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">torch</span>
|
||||
<span class="kn">import</span> <span class="nn">torch.nn</span> <span class="k">as</span> <span class="nn">nn</span>
|
||||
<span class="kn">import</span> <span class="nn">torch.functional</span> <span class="k">as</span> <span class="nn">F</span>
|
||||
|
||||
<div class="viewcode-block" id="LogisticActivation"><a class="viewcode-back" href="../../../api/dscript.models.html#dscript.models.interaction.LogisticActivation">[docs]</a><span class="k">class</span> <span class="nc">LogisticActivation</span><span class="p">(</span><span class="n">nn</span><span class="o">.</span><span class="n">Module</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Implementation of Generalized Sigmoid</span>
|
||||
<span class="sd"> Applies the element-wise function:</span>
|
||||
|
||||
<span class="sd"> :math:`\\sigma(x) = \\frac{1}{1 + \\exp(-k(x-x_0))}`</span>
|
||||
|
||||
<span class="sd"> :param x0: The value of the sigmoid midpoint</span>
|
||||
<span class="sd"> :type x0: float</span>
|
||||
<span class="sd"> :param k: The slope of the sigmoid - trainable - :math:`k \\geq 0`</span>
|
||||
<span class="sd"> :type k: float</span>
|
||||
<span class="sd"> :param train: Whether :math:`k` is a trainable parameter</span>
|
||||
<span class="sd"> :type train: bool</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x0</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">k</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> <span class="n">train</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">LogisticActivation</span><span class="p">,</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">x0</span> <span class="o">=</span> <span class="n">x0</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">k</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Parameter</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">FloatTensor</span><span class="p">([</span><span class="nb">float</span><span class="p">(</span><span class="n">k</span><span class="p">)]))</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">k</span><span class="o">.</span><span class="n">requiresGrad</span> <span class="o">=</span> <span class="n">train</span>
|
||||
|
||||
<div class="viewcode-block" id="LogisticActivation.forward"><a class="viewcode-back" href="../../../api/dscript.models.html#dscript.models.interaction.LogisticActivation.forward">[docs]</a> <span class="k">def</span> <span class="nf">forward</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Applies the function to the input elementwise</span>
|
||||
|
||||
<span class="sd"> :param x: :math:`(N \\times *)` where :math:`*` means, any number of additional dimensions</span>
|
||||
<span class="sd"> :type x: torch.Tensor</span>
|
||||
<span class="sd"> :return: :math:`(N \\times *)`, same shape as the input</span>
|
||||
<span class="sd"> :rtype: torch.Tensor</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">o</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">clamp</span><span class="p">(</span><span class="mi">1</span> <span class="o">/</span> <span class="p">(</span><span class="mi">1</span> <span class="o">+</span> <span class="n">torch</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="o">-</span><span class="bp">self</span><span class="o">.</span><span class="n">k</span> <span class="o">*</span> <span class="p">(</span><span class="n">x</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">x0</span><span class="p">))),</span> <span class="nb">min</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="nb">max</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">squeeze</span><span class="p">()</span>
|
||||
<span class="k">return</span> <span class="n">o</span></div>
|
||||
|
||||
<span class="k">def</span> <span class="nf">clip</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Restricts sigmoid slope :math:`k` to be greater than or equal to 0, if :math:`k` is trained.</span>
|
||||
|
||||
<span class="sd"> :meta private:</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">k</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">clamp_</span><span class="p">(</span><span class="nb">min</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="ModelInteraction"><a class="viewcode-back" href="../../../api/dscript.models.html#dscript.models.interaction.ModelInteraction">[docs]</a><span class="k">class</span> <span class="nc">ModelInteraction</span><span class="p">(</span><span class="n">nn</span><span class="o">.</span><span class="n">Module</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">embedding</span><span class="p">,</span> <span class="n">contact</span><span class="p">,</span> <span class="n">use_cuda</span><span class="p">,</span> <span class="n">do_pool</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">pool_size</span><span class="o">=</span><span class="mi">9</span><span class="p">,</span> <span class="n">theta_init</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">lambda_init</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">gamma_init</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">do_w</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">do_sigmoid</span> <span class="o">=</span> <span class="kc">False</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Main D-SCRIPT model. Contains an embedding and contact model and offers access to those models. Computes pooling operations on contact map to generate interaction probability.</span>
|
||||
|
||||
<span class="sd"> :param embedding: Embedding model</span>
|
||||
<span class="sd"> :type embedding: dscript.models.embedding.FullyConnectedEmbed</span>
|
||||
<span class="sd"> :param contact: Contact model</span>
|
||||
<span class="sd"> :type contact: dscript.models.contact.ContactCNN</span>
|
||||
<span class="sd"> :param use_cuda: Whether the model should be run on GPU</span>
|
||||
<span class="sd"> :type use_cuda: bool</span>
|
||||
<span class="sd"> :param pool_size: width of max-pool [default 9]</span>
|
||||
<span class="sd"> :type pool_size: bool</span>
|
||||
<span class="sd"> :param theta_init: initialization value of :math:`\\theta` for weight matrix [default: 1]</span>
|
||||
<span class="sd"> :type theta_init: float</span>
|
||||
<span class="sd"> :param lambda_init: initialization value of :math:`\\lambda` for weight matrix [default: 0]</span>
|
||||
<span class="sd"> :type lambda_init: float</span>
|
||||
<span class="sd"> :param gamma_init: initialization value of :math:`\\gamma` for global pooling [default: 0]</span>
|
||||
<span class="sd"> :type gamma_init: float</span>
|
||||
<span class="sd"> :param do_w: whether to use the weighting matrix [default: True]</span>
|
||||
<span class="sd"> :type do_w: bool</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">ModelInteraction</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">use_cuda</span> <span class="o">=</span> <span class="n">use_cuda</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">do_w</span> <span class="o">=</span> <span class="n">do_w</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">do_sigmoid</span> <span class="o">=</span> <span class="n">do_sigmoid</span>
|
||||
<span class="k">if</span> <span class="n">do_sigmoid</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">activation</span> <span class="o">=</span> <span class="n">LogisticActivation</span><span class="p">(</span><span class="n">x0</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">k</span> <span class="o">=</span> <span class="mi">20</span><span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">embedding</span> <span class="o">=</span> <span class="n">embedding</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">contact</span> <span class="o">=</span> <span class="n">contact</span>
|
||||
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">do_w</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">theta</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Parameter</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">FloatTensor</span><span class="p">([</span><span class="n">theta_init</span><span class="p">]))</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">lambda_</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Parameter</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">FloatTensor</span><span class="p">([</span><span class="n">lambda_init</span><span class="p">]))</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">doPool</span> <span class="o">=</span> <span class="n">do_pool</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">maxPool</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">MaxPool2d</span><span class="p">(</span><span class="n">pool_size</span><span class="p">,</span><span class="n">padding</span><span class="o">=</span><span class="n">pool_size</span><span class="o">//</span><span class="mi">2</span><span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">gamma</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Parameter</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">FloatTensor</span><span class="p">([</span><span class="n">gamma_init</span><span class="p">]))</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">clip</span><span class="p">()</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">clip</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Clamp model values</span>
|
||||
|
||||
<span class="sd"> :meta private:</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">contact</span><span class="o">.</span><span class="n">clip</span><span class="p">()</span>
|
||||
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">do_w</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">theta</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">clamp_</span><span class="p">(</span><span class="nb">min</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="nb">max</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">lambda_</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">clamp_</span><span class="p">(</span><span class="nb">min</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">gamma</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">clamp_</span><span class="p">(</span><span class="nb">min</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
|
||||
|
||||
<div class="viewcode-block" id="ModelInteraction.embed"><a class="viewcode-back" href="../../../api/dscript.models.html#dscript.models.interaction.ModelInteraction.embed">[docs]</a> <span class="k">def</span> <span class="nf">embed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Project down input language model embeddings into low dimension using projection module</span>
|
||||
|
||||
<span class="sd"> :param z: Language model embedding :math:`(b \\times N \\times d_0)`</span>
|
||||
<span class="sd"> :type z: torch.Tensor</span>
|
||||
<span class="sd"> :return: D-SCRIPT projection :math:`(b \\times N \\times d)`</span>
|
||||
<span class="sd"> :rtype: torch.Tensor</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">embedding</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">x</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">embedding</span><span class="p">(</span><span class="n">x</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="ModelInteraction.cpred"><a class="viewcode-back" href="../../../api/dscript.models.html#dscript.models.interaction.ModelInteraction.cpred">[docs]</a> <span class="k">def</span> <span class="nf">cpred</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">z0</span><span class="p">,</span> <span class="n">z1</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Project down input language model embeddings into low dimension using projection module</span>
|
||||
|
||||
<span class="sd"> :param z0: Language model embedding :math:`(b \\times N \\times d_0)`</span>
|
||||
<span class="sd"> :type z0: torch.Tensor</span>
|
||||
<span class="sd"> :param z1: Language model embedding :math:`(b \\times N \\times d_0)`</span>
|
||||
<span class="sd"> :type z1: torch.Tensor</span>
|
||||
<span class="sd"> :return: Predicted contact map :math:`(b \\times N \\times M)`</span>
|
||||
<span class="sd"> :rtype: torch.Tensor</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">e0</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">embed</span><span class="p">(</span><span class="n">z0</span><span class="p">)</span>
|
||||
<span class="n">e1</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">embed</span><span class="p">(</span><span class="n">z1</span><span class="p">)</span>
|
||||
<span class="n">B</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">contact</span><span class="o">.</span><span class="n">cmap</span><span class="p">(</span><span class="n">e0</span><span class="p">,</span> <span class="n">e1</span><span class="p">)</span>
|
||||
<span class="n">C</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">contact</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">B</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">C</span></div>
|
||||
|
||||
<div class="viewcode-block" id="ModelInteraction.map_predict"><a class="viewcode-back" href="../../../api/dscript.models.html#dscript.models.interaction.ModelInteraction.map_predict">[docs]</a> <span class="k">def</span> <span class="nf">map_predict</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">z0</span><span class="p">,</span> <span class="n">z1</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Project down input language model embeddings into low dimension using projection module</span>
|
||||
|
||||
<span class="sd"> :param z0: Language model embedding :math:`(b \\times N \\times d_0)`</span>
|
||||
<span class="sd"> :type z0: torch.Tensor</span>
|
||||
<span class="sd"> :param z1: Language model embedding :math:`(b \\times N \\times d_0)`</span>
|
||||
<span class="sd"> :type z1: torch.Tensor</span>
|
||||
<span class="sd"> :return: Predicted contact map, predicted probability of interaction :math:`(b \\times N \\times d_0), (1)`</span>
|
||||
<span class="sd"> :rtype: torch.Tensor, torch.Tensor</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">C</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">cpred</span><span class="p">(</span><span class="n">z0</span><span class="p">,</span> <span class="n">z1</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">do_w</span><span class="p">:</span>
|
||||
<span class="c1"># Create contact weighting matrix</span>
|
||||
<span class="n">N</span><span class="p">,</span> <span class="n">M</span> <span class="o">=</span> <span class="n">C</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">2</span><span class="p">:]</span>
|
||||
|
||||
<span class="n">x1</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">from_numpy</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span> <span class="o">*</span> <span class="p">((</span><span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">N</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span> <span class="o">-</span> <span class="p">((</span><span class="n">N</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span><span class="p">))</span> <span class="o">/</span> <span class="p">(</span><span class="o">-</span><span class="mi">1</span> <span class="o">*</span> <span class="p">((</span><span class="n">N</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span><span class="p">)))</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span><span class="o">.</span><span class="n">float</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">use_cuda</span><span class="p">:</span>
|
||||
<span class="n">x1</span> <span class="o">=</span> <span class="n">x1</span><span class="o">.</span><span class="n">cuda</span><span class="p">()</span>
|
||||
<span class="c1">#x1 = torch.exp(self.lambda1 * x1)</span>
|
||||
<span class="n">x1</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lambda_</span> <span class="o">*</span> <span class="n">x1</span><span class="p">)</span>
|
||||
|
||||
<span class="n">x2</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">from_numpy</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span> <span class="o">*</span> <span class="p">((</span><span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="n">M</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span> <span class="o">-</span> <span class="p">((</span><span class="n">M</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span><span class="p">))</span> <span class="o">/</span> <span class="p">(</span><span class="o">-</span><span class="mi">1</span> <span class="o">*</span> <span class="p">((</span><span class="n">M</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span><span class="p">)))</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span><span class="o">.</span><span class="n">float</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">use_cuda</span><span class="p">:</span>
|
||||
<span class="n">x2</span> <span class="o">=</span> <span class="n">x2</span><span class="o">.</span><span class="n">cuda</span><span class="p">()</span>
|
||||
<span class="c1">#x2 = torch.exp(self.lambda2 * x2)</span>
|
||||
<span class="n">x2</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">lambda_</span> <span class="o">*</span> <span class="n">x2</span><span class="p">)</span>
|
||||
|
||||
<span class="n">W</span> <span class="o">=</span> <span class="n">x1</span><span class="o">.</span><span class="n">unsqueeze</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="n">x2</span>
|
||||
<span class="n">W</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">theta</span><span class="p">)</span> <span class="o">*</span> <span class="n">W</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">theta</span>
|
||||
|
||||
<span class="n">yhat</span> <span class="o">=</span> <span class="n">C</span> <span class="o">*</span> <span class="n">W</span>
|
||||
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">yhat</span> <span class="o">=</span> <span class="n">C</span>
|
||||
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">doPool</span><span class="p">:</span>
|
||||
<span class="n">yhat</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">maxPool</span><span class="p">(</span><span class="n">yhat</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Mean of contact predictions where p_ij > mu + gamma*sigma</span>
|
||||
<span class="n">mu</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">yhat</span><span class="p">)</span>
|
||||
<span class="n">sigma</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">yhat</span><span class="p">)</span>
|
||||
<span class="c1">#Q = torch.relu(yhat - mu)</span>
|
||||
<span class="n">Q</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">relu</span><span class="p">(</span><span class="n">yhat</span> <span class="o">-</span> <span class="n">mu</span> <span class="o">-</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">gamma</span> <span class="o">*</span> <span class="n">sigma</span><span class="p">))</span>
|
||||
<span class="n">phat</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">Q</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">sign</span><span class="p">(</span><span class="n">Q</span><span class="p">))</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">do_sigmoid</span><span class="p">:</span>
|
||||
<span class="n">phat</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">activation</span><span class="p">(</span><span class="n">phat</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">C</span><span class="p">,</span> <span class="n">phat</span></div>
|
||||
|
||||
<div class="viewcode-block" id="ModelInteraction.predict"><a class="viewcode-back" href="../../../api/dscript.models.html#dscript.models.interaction.ModelInteraction.predict">[docs]</a> <span class="k">def</span> <span class="nf">predict</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">z0</span><span class="p">,</span> <span class="n">z1</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Project down input language model embeddings into low dimension using projection module</span>
|
||||
|
||||
<span class="sd"> :param z0: Language model embedding :math:`(b \\times N \\times d_0)`</span>
|
||||
<span class="sd"> :type z0: torch.Tensor</span>
|
||||
<span class="sd"> :param z1: Language model embedding :math:`(b \\times N \\times d_0)`</span>
|
||||
<span class="sd"> :type z1: torch.Tensor</span>
|
||||
<span class="sd"> :return: Predicted probability of interaction</span>
|
||||
<span class="sd"> :rtype: torch.Tensor, torch.Tensor</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">_</span><span class="p">,</span> <span class="n">phat</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">map_predict</span><span class="p">(</span><span class="n">z0</span><span class="p">,</span><span class="n">z1</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">phat</span></div>
|
||||
|
||||
<span class="k">def</span> <span class="nf">forward</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">z0</span><span class="p">,</span> <span class="n">z1</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> :meta private:</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">z0</span><span class="p">,</span> <span class="n">z1</span><span class="p">)</span></div>
|
||||
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2020, Samuel Sledzieski, Rohit Singh.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
291
docs/build/html/_modules/dscript/pretrained.html
vendored
291
docs/build/html/_modules/dscript/pretrained.html
vendored
@@ -1,291 +0,0 @@
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<title>dscript.pretrained — D-SCRIPT v1.0-beta documentation</title>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../_static/js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
|
||||
<script src="../../_static/jquery.js"></script>
|
||||
<script src="../../_static/underscore.js"></script>
|
||||
<script src="../../_static/doctools.js"></script>
|
||||
|
||||
<script type="text/javascript" src="../../_static/js/theme.js"></script>
|
||||
|
||||
|
||||
<link rel="index" title="Index" href="../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../search.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../index.html" class="icon icon-home"> D-SCRIPT
|
||||
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../installation.html">Installation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../usage.html">Usage</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../data.html">Data</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api/index.html">API</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
|
||||
|
||||
<nav class="wy-nav-top" aria-label="top navigation">
|
||||
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../index.html">D-SCRIPT</a>
|
||||
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="wy-nav-content">
|
||||
|
||||
<div class="rst-content">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||
|
||||
<ul class="wy-breadcrumbs">
|
||||
|
||||
<li><a href="../../index.html" class="icon icon-home"></a> »</li>
|
||||
|
||||
<li><a href="../index.html">Module code</a> »</li>
|
||||
|
||||
<li>dscript.pretrained</li>
|
||||
|
||||
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<h1>Source code for dscript.pretrained</h1><div class="highlight"><pre>
|
||||
<span></span><span class="kn">import</span> <span class="nn">os</span><span class="o">,</span> <span class="nn">sys</span>
|
||||
<span class="kn">import</span> <span class="nn">torch</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">.models.embedding</span> <span class="kn">import</span> <span class="n">FullyConnectedEmbed</span><span class="p">,</span> <span class="n">SkipLSTM</span>
|
||||
<span class="kn">from</span> <span class="nn">.models.contact</span> <span class="kn">import</span> <span class="n">ContactCNN</span>
|
||||
<span class="kn">from</span> <span class="nn">.models.interaction</span> <span class="kn">import</span> <span class="n">ModelInteraction</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">build_lm_1</span><span class="p">(</span><span class="n">state_dict_path</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> :meta private:</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">model</span> <span class="o">=</span> <span class="n">SkipLSTM</span><span class="p">(</span><span class="mi">21</span><span class="p">,</span> <span class="mi">100</span><span class="p">,</span> <span class="mi">1024</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span>
|
||||
<span class="n">state_dict</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">state_dict_path</span><span class="p">)</span>
|
||||
<span class="n">model</span><span class="o">.</span><span class="n">load_state_dict</span><span class="p">(</span><span class="n">state_dict</span><span class="p">)</span>
|
||||
<span class="n">model</span><span class="o">.</span><span class="n">eval</span><span class="p">()</span>
|
||||
<span class="k">return</span> <span class="n">model</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">build_human_1</span><span class="p">(</span><span class="n">state_dict_path</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> :meta private:</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">embModel</span> <span class="o">=</span> <span class="n">FullyConnectedEmbed</span><span class="p">(</span><span class="mi">6165</span><span class="p">,</span> <span class="mi">100</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">)</span>
|
||||
<span class="n">conModel</span> <span class="o">=</span> <span class="n">ContactCNN</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span> <span class="mi">50</span><span class="p">,</span> <span class="mi">7</span><span class="p">)</span>
|
||||
<span class="n">model</span> <span class="o">=</span> <span class="n">ModelInteraction</span><span class="p">(</span><span class="n">embModel</span><span class="p">,</span> <span class="n">conModel</span><span class="p">,</span> <span class="n">use_W</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">pool_size</span><span class="o">=</span><span class="mi">9</span><span class="p">)</span>
|
||||
<span class="n">state_dict</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">state_dict_path</span><span class="p">)</span>
|
||||
<span class="n">model</span><span class="o">.</span><span class="n">load_state_dict</span><span class="p">(</span><span class="n">state_dict</span><span class="p">)</span>
|
||||
<span class="n">model</span><span class="o">.</span><span class="n">eval</span><span class="p">()</span>
|
||||
<span class="k">return</span> <span class="n">model</span>
|
||||
|
||||
|
||||
<span class="n">VALID_MODELS</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="s2">"lm_v1"</span><span class="p">:</span> <span class="n">build_lm_1</span><span class="p">,</span>
|
||||
<span class="s2">"human_v1"</span><span class="p">:</span> <span class="n">build_human_1</span>
|
||||
<span class="p">}</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="get_state_dict"><a class="viewcode-back" href="../../api/index.html#dscript.pretrained.get_state_dict">[docs]</a><span class="k">def</span> <span class="nf">get_state_dict</span><span class="p">(</span><span class="n">version</span><span class="o">=</span><span class="s2">"human_v1"</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Download a pre-trained model if not already exists on local device.</span>
|
||||
|
||||
<span class="sd"> :param version: Version of trained model to download [default: human_1]</span>
|
||||
<span class="sd"> :type version: str</span>
|
||||
<span class="sd"> :param verbose: Print model download status on stdout [default: True]</span>
|
||||
<span class="sd"> :type verbose: bool</span>
|
||||
<span class="sd"> :return: Path to state dictionary for pre-trained language model</span>
|
||||
<span class="sd"> :rtype: str</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">state_dict_basename</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"dscript_</span><span class="si">{</span><span class="n">version</span><span class="si">}</span><span class="s2">.pt"</span>
|
||||
<span class="n">state_dict_basedir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">realpath</span><span class="p">(</span><span class="vm">__file__</span><span class="p">))</span>
|
||||
<span class="n">state_dict_fullname</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">state_dict_basedir</span><span class="si">}</span><span class="s2">/</span><span class="si">{</span><span class="n">state_dict_basename</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="n">state_dict_url</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"http://cb.csail.mit.edu/cb/dscript/data/models/</span><span class="si">{</span><span class="n">state_dict_basename</span><span class="si">}</span><span class="s2">"</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">state_dict_fullname</span><span class="p">):</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="kn">import</span> <span class="nn">urllib.request</span>
|
||||
<span class="kn">import</span> <span class="nn">shutil</span>
|
||||
<span class="k">if</span> <span class="n">verbose</span><span class="p">:</span> <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Downloading model </span><span class="si">{</span><span class="n">version</span><span class="si">}</span><span class="s2"> from </span><span class="si">{</span><span class="n">state_dict_url</span><span class="si">}</span><span class="s2">..."</span><span class="p">)</span>
|
||||
<span class="k">with</span> <span class="n">urllib</span><span class="o">.</span><span class="n">request</span><span class="o">.</span><span class="n">urlopen</span><span class="p">(</span><span class="n">state_dict_url</span><span class="p">)</span> <span class="k">as</span> <span class="n">response</span><span class="p">,</span> <span class="nb">open</span><span class="p">(</span><span class="n">state_dict_fullname</span><span class="p">,</span> <span class="s1">'wb'</span><span class="p">)</span> <span class="k">as</span> <span class="n">out_file</span><span class="p">:</span>
|
||||
<span class="n">shutil</span><span class="o">.</span><span class="n">copyfileobj</span><span class="p">(</span><span class="n">response</span><span class="p">,</span> <span class="n">out_file</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"Unable to download model - </span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">e</span><span class="p">))</span>
|
||||
<span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">state_dict_fullname</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="get_pretrained"><a class="viewcode-back" href="../../api/index.html#dscript.pretrained.get_pretrained">[docs]</a><span class="k">def</span> <span class="nf">get_pretrained</span><span class="p">(</span><span class="n">version</span><span class="o">=</span><span class="s2">"human_v1"</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Get pre-trained model object.</span>
|
||||
|
||||
<span class="sd"> Currently Available Models</span>
|
||||
<span class="sd"> ==========================</span>
|
||||
|
||||
<span class="sd"> See the `documentation <https://d-script.readthedocs.io/en/main/data.html#trained-models>`_ for most up-to-date list.</span>
|
||||
|
||||
<span class="sd"> - ``lm_v1`` - Language model from `Bepler & Berger <https://github.com/tbepler/protein-sequence-embedding-iclr2019>`_.</span>
|
||||
<span class="sd"> - ``human_v1`` - Human trained model from D-SCRIPT manuscript.</span>
|
||||
|
||||
<span class="sd"> Default: ``human_v1``</span>
|
||||
|
||||
<span class="sd"> :param version: Version of pre-trained model to get</span>
|
||||
<span class="sd"> :type version: str</span>
|
||||
<span class="sd"> :return: Pre-trained model</span>
|
||||
<span class="sd"> :rtype: dscript.models.*</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">version</span> <span class="ow">in</span> <span class="n">VALID_MODELS</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Model </span><span class="si">{}</span><span class="s2"> does not exist"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">version</span><span class="p">))</span>
|
||||
|
||||
<span class="n">state_dict_path</span> <span class="o">=</span> <span class="n">get_state_dict</span><span class="p">(</span><span class="n">version</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">VALID_MODELS</span><span class="p">[</span><span class="n">version</span><span class="p">](</span><span class="n">state_dict_path</span><span class="p">)</span></div>
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2020, Samuel Sledzieski, Rohit Singh.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
267
docs/build/html/_modules/dscript/utils.html
vendored
267
docs/build/html/_modules/dscript/utils.html
vendored
@@ -1,267 +0,0 @@
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<title>dscript.utils — D-SCRIPT v1.0-beta documentation</title>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../../_static/js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
|
||||
<script src="../../_static/jquery.js"></script>
|
||||
<script src="../../_static/underscore.js"></script>
|
||||
<script src="../../_static/doctools.js"></script>
|
||||
|
||||
<script type="text/javascript" src="../../_static/js/theme.js"></script>
|
||||
|
||||
|
||||
<link rel="index" title="Index" href="../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../search.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../index.html" class="icon icon-home"> D-SCRIPT
|
||||
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../installation.html">Installation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../usage.html">Usage</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../data.html">Data</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../api/index.html">API</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
|
||||
|
||||
<nav class="wy-nav-top" aria-label="top navigation">
|
||||
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../index.html">D-SCRIPT</a>
|
||||
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="wy-nav-content">
|
||||
|
||||
<div class="rst-content">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||
|
||||
<ul class="wy-breadcrumbs">
|
||||
|
||||
<li><a href="../../index.html" class="icon icon-home"></a> »</li>
|
||||
|
||||
<li><a href="../index.html">Module code</a> »</li>
|
||||
|
||||
<li>dscript.utils</li>
|
||||
|
||||
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<h1>Source code for dscript.utils</h1><div class="highlight"><pre>
|
||||
<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">print_function</span><span class="p">,</span><span class="n">division</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">torch</span>
|
||||
<span class="kn">import</span> <span class="nn">torch.utils.data</span>
|
||||
<span class="kn">from</span> <span class="nn">torch.nn.utils.rnn</span> <span class="kn">import</span> <span class="n">PackedSequence</span><span class="p">,</span> <span class="n">pack_padded_sequence</span><span class="p">,</span> <span class="n">pad_packed_sequence</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">.fasta</span> <span class="kn">import</span> <span class="n">parse</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||||
<span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
|
||||
<span class="kn">import</span> <span class="nn">subprocess</span> <span class="k">as</span> <span class="nn">sp</span>
|
||||
<span class="kn">import</span> <span class="nn">sys</span>
|
||||
<span class="kn">import</span> <span class="nn">gzip</span> <span class="k">as</span> <span class="nn">gz</span>
|
||||
|
||||
<div class="viewcode-block" id="log"><a class="viewcode-back" href="../../api/index.html#dscript.utils.log">[docs]</a><span class="k">def</span> <span class="nf">log</span><span class="p">(</span><span class="n">m</span><span class="p">,</span><span class="n">file</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">file</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">m</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="n">m</span><span class="p">,</span><span class="n">file</span><span class="o">=</span><span class="n">file</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="RBF"><a class="viewcode-back" href="../../api/index.html#dscript.utils.RBF">[docs]</a><span class="k">def</span> <span class="nf">RBF</span><span class="p">(</span><span class="n">D</span><span class="p">,</span> <span class="n">sigma</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Convert distance matrix into similarity matrix using Radial Basis Function (RBF) Kernel.</span>
|
||||
|
||||
<span class="sd"> :math:`RBF(x,x') = \\exp{\\frac{-(x - x')^{2}}{2\\sigma^{2}}}`</span>
|
||||
|
||||
<span class="sd"> :param D: Distance matrix</span>
|
||||
<span class="sd"> :type D: np.ndarray</span>
|
||||
<span class="sd"> :param sigma: Bandwith of RBF Kernel [default: :math:`\\sqrt{\\text{max}(D)}`]</span>
|
||||
<span class="sd"> :type sigma: float</span>
|
||||
<span class="sd"> :return: Similarity matrix</span>
|
||||
<span class="sd"> :rtype: np.ndarray</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">sigma</span> <span class="o">=</span> <span class="n">sigma</span> <span class="ow">or</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">max</span><span class="p">(</span><span class="n">D</span><span class="p">))</span>
|
||||
<span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span> <span class="o">*</span> <span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">square</span><span class="p">(</span><span class="n">D</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="n">sigma</span><span class="o">**</span><span class="mi">2</span><span class="p">)))</span> </div>
|
||||
|
||||
<div class="viewcode-block" id="PairedDataset"><a class="viewcode-back" href="../../api/index.html#dscript.utils.PairedDataset">[docs]</a><span class="k">class</span> <span class="nc">PairedDataset</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">Dataset</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Dataset to be used by the PyTorch data loader for pairs of sequences and their labels.</span>
|
||||
|
||||
<span class="sd"> :param X0: List of first item in the pair</span>
|
||||
<span class="sd"> :param X1: List of second item in the pair</span>
|
||||
<span class="sd"> :param Y: List of labels</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">X0</span><span class="p">,</span> <span class="n">X1</span><span class="p">,</span> <span class="n">Y</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">X0</span> <span class="o">=</span> <span class="n">X0</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">X1</span> <span class="o">=</span> <span class="n">X1</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">Y</span> <span class="o">=</span> <span class="n">Y</span>
|
||||
<span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="n">X0</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="n">X1</span><span class="p">),</span> <span class="s2">"X0: "</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">X0</span><span class="p">))</span><span class="o">+</span><span class="s2">" X1: "</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">X1</span><span class="p">))</span><span class="o">+</span><span class="s2">" Y: "</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">Y</span><span class="p">))</span>
|
||||
<span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="n">X0</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="n">Y</span><span class="p">),</span> <span class="s2">"X0: "</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">X0</span><span class="p">))</span><span class="o">+</span><span class="s2">" X1: "</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">X1</span><span class="p">))</span><span class="o">+</span><span class="s2">" Y: "</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">Y</span><span class="p">))</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__len__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">X0</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">i</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">X0</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">X1</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">Y</span><span class="p">[</span><span class="n">i</span><span class="p">]</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="collate_paired_sequences"><a class="viewcode-back" href="../../api/index.html#dscript.utils.collate_paired_sequences">[docs]</a><span class="k">def</span> <span class="nf">collate_paired_sequences</span><span class="p">(</span><span class="n">args</span><span class="p">):</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd"> Collate function for PyTorch data loader.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">x0</span> <span class="o">=</span> <span class="p">[</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">args</span><span class="p">]</span>
|
||||
<span class="n">x1</span> <span class="o">=</span> <span class="p">[</span><span class="n">a</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">args</span><span class="p">]</span>
|
||||
<span class="n">y</span> <span class="o">=</span> <span class="p">[</span><span class="n">a</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">args</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="n">x0</span><span class="p">,</span> <span class="n">x1</span><span class="p">,</span> <span class="n">torch</span><span class="o">.</span><span class="n">stack</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span></div>
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2020, Samuel Sledzieski, Rohit Singh.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
208
docs/build/html/_modules/index.html
vendored
208
docs/build/html/_modules/index.html
vendored
@@ -1,208 +0,0 @@
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" >
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<title>Overview: module code — D-SCRIPT v1.0-beta documentation</title>
|
||||
|
||||
|
||||
|
||||
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
|
||||
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../_static/js/html5shiv.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
|
||||
<script src="../_static/jquery.js"></script>
|
||||
<script src="../_static/underscore.js"></script>
|
||||
<script src="../_static/doctools.js"></script>
|
||||
|
||||
<script type="text/javascript" src="../_static/js/theme.js"></script>
|
||||
|
||||
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../index.html" class="icon icon-home"> D-SCRIPT
|
||||
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../installation.html">Installation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../usage.html">Usage</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../data.html">Data</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../api/index.html">API</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
|
||||
|
||||
<nav class="wy-nav-top" aria-label="top navigation">
|
||||
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../index.html">D-SCRIPT</a>
|
||||
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="wy-nav-content">
|
||||
|
||||
<div class="rst-content">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||
|
||||
<ul class="wy-breadcrumbs">
|
||||
|
||||
<li><a href="../index.html" class="icon icon-home"></a> »</li>
|
||||
|
||||
<li>Overview: module code</li>
|
||||
|
||||
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<h1>All modules for which code is available</h1>
|
||||
<ul><li><a href="dscript/alphabets.html">dscript.alphabets</a></li>
|
||||
<li><a href="dscript/commands/train.html">dscript.commands.train</a></li>
|
||||
<li><a href="dscript/fasta.html">dscript.fasta</a></li>
|
||||
<li><a href="dscript/language_model.html">dscript.language_model</a></li>
|
||||
<li><a href="dscript/models/contact.html">dscript.models.contact</a></li>
|
||||
<li><a href="dscript/models/embedding.html">dscript.models.embedding</a></li>
|
||||
<li><a href="dscript/models/interaction.html">dscript.models.interaction</a></li>
|
||||
<li><a href="dscript/pretrained.html">dscript.pretrained</a></li>
|
||||
<li><a href="dscript/utils.html">dscript.utils</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© Copyright 2020, Samuel Sledzieski, Rohit Singh.
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,42 +0,0 @@
|
||||
dscript.commands
|
||||
================
|
||||
|
||||
dscript.commands.predict
|
||||
------------------------
|
||||
|
||||
See `Prediction <../usage.html#prediction>`_ for full usage details.
|
||||
|
||||
.. automodule:: dscript.commands.predict
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
dscript.commands.embed
|
||||
----------------------
|
||||
|
||||
See `Embedding <../usage.html#embedding>`_ for full usage details.
|
||||
|
||||
.. automodule:: dscript.commands.embed
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
dscript.commands.train
|
||||
----------------------
|
||||
|
||||
See `Training <../usage.html#training>`_ for full usage details.
|
||||
|
||||
.. automodule:: dscript.commands.train
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
dscript.commands.eval
|
||||
---------------------
|
||||
|
||||
See `Evaluation <../usage.html#evaluation>`_ for full usage details.
|
||||
|
||||
.. automodule:: dscript.commands.eval
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
@@ -1,26 +0,0 @@
|
||||
dscript.models
|
||||
==============
|
||||
|
||||
dscript.models.embedding
|
||||
------------------------
|
||||
|
||||
.. automodule:: dscript.models.embedding
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
dscript.models.contact
|
||||
----------------------
|
||||
|
||||
.. automodule:: dscript.models.contact
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
dscript.models.interaction
|
||||
--------------------------
|
||||
|
||||
.. automodule:: dscript.models.interaction
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
48
docs/build/html/_sources/api/index.rst.txt
vendored
48
docs/build/html/_sources/api/index.rst.txt
vendored
@@ -1,48 +0,0 @@
|
||||
API
|
||||
===
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 4
|
||||
|
||||
dscript.commands
|
||||
dscript.models
|
||||
|
||||
dscript.alphabets
|
||||
-----------------
|
||||
|
||||
.. automodule:: dscript.alphabets
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
dscript.fasta
|
||||
-------------
|
||||
|
||||
.. automodule:: dscript.fasta
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
dscript.language\_model
|
||||
-----------------------
|
||||
|
||||
.. automodule:: dscript.language_model
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
dscript.pretrained
|
||||
------------------
|
||||
|
||||
.. automodule:: dscript.pretrained
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
dscript.utils
|
||||
-------------
|
||||
|
||||
.. automodule:: dscript.utils
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
47
docs/build/html/_sources/data.rst.txt
vendored
47
docs/build/html/_sources/data.rst.txt
vendored
@@ -1,47 +0,0 @@
|
||||
Data
|
||||
====
|
||||
|
||||
Trained Models
|
||||
--------------
|
||||
|
||||
- `Bepler & Berger language model <http://cb.csail.mit.edu/cb/dscript/data/models/lm_v1.sav>`_
|
||||
- `Human data trained model <http://cb.csail.mit.edu/cb/dscript/data/models/human_v1.sav>`_
|
||||
|
||||
Sample Data
|
||||
-----------
|
||||
|
||||
Sequences
|
||||
~~~~~~~~~
|
||||
|
||||
- `Human`_
|
||||
- `Mouse`_
|
||||
- `Fly`_
|
||||
- `Yeast`_
|
||||
- `Worm`_
|
||||
- `E.coli`_
|
||||
|
||||
Interactions
|
||||
~~~~~~~~~~~~
|
||||
|
||||
- `Human Train`_
|
||||
- `Human Test`_
|
||||
- `Mouse Test`_
|
||||
- `Fly Test`_
|
||||
- `Yeast Test`_
|
||||
- `Worm Test`_
|
||||
- `E. coli Test`_
|
||||
|
||||
.. _`Human`: https://github.com/samsledje/D-SCRIPT/blob/main/data/seqs/human.fasta
|
||||
.. _`Mouse`: https://github.com/samsledje/D-SCRIPT/blob/main/data/seqs/mouse.fasta
|
||||
.. _`Fly`: https://github.com/samsledje/D-SCRIPT/blob/main/data/seqs/fly.fasta
|
||||
.. _`Yeast`: https://github.com/samsledje/D-SCRIPT/blob/main/data/seqs/yeast.fasta
|
||||
.. _`Worm`: https://github.com/samsledje/D-SCRIPT/blob/main/data/seqs/worm.fasta
|
||||
.. _`E.coli`: https://github.com/samsledje/D-SCRIPT/blob/main/data/seqs/ecoli.fasta
|
||||
.. _`Human Train`: https://github.com/samsledje/D-SCRIPT/blob/main/data/pairs/human_train.tsv
|
||||
.. _`Human Test`: https://github.com/samsledje/D-SCRIPT/blob/main/data/pairs/human_test.tsv
|
||||
.. _`Mouse Test`: https://github.com/samsledje/D-SCRIPT/blob/main/data/pairs/mouse_test.tsv
|
||||
.. _`Fly Test`: https://github.com/samsledje/D-SCRIPT/blob/main/data/pairs/fly_test.tsv
|
||||
.. _`Yeast Test`: https://github.com/samsledje/D-SCRIPT/blob/main/data/pairs/yeast_test.tsv
|
||||
.. _`Worm Test`: https://github.com/samsledje/D-SCRIPT/blob/main/data/pairs/worm_test.tsv
|
||||
.. _`E. coli Test`: https://github.com/samsledje/D-SCRIPT/blob/main/data/pairs/ecoli_test.tsv
|
||||
|
||||
39
docs/build/html/_sources/index.rst.txt
vendored
39
docs/build/html/_sources/index.rst.txt
vendored
@@ -1,39 +0,0 @@
|
||||
D-SCRIPT: Deep Learning PPI Prediction
|
||||
=======================================
|
||||
|
||||
- `D-SCRIPT Home Page`_
|
||||
|
||||
- `Quick Start <usage.html#quick-start>`_
|
||||
|
||||
D-SCRIPT is a deep learning method for predicting a physical interaction between two proteins given just their sequences.
|
||||
It generalizes well to new species and is robust to limitations in training data size.
|
||||
Its design reflects the intuition that for two proteins to physically interact, a subset of amino acids from each protein should be in contact with the other.
|
||||
The intermediate stages of D-SCRIPT directly implement this intuition, with the penultimate stage in D-SCRIPT being a rough estimate of the inter-protein
|
||||
contact map of the protein dimer. This structurally-motivated design enhances the interpretability of the results and, since structure is more conserved
|
||||
evolutionarily than sequence, improves generalizability across species.
|
||||
|
||||
If you use D-SCRIPT, please cite `"D-SCRIPT translates genome to phenome with sequence-based, structure-aware, genome-scale predictions of protein-protein interactions" <https://www.cell.com/cell-systems/fulltext/S2405-4712(21)00333-1>`_
|
||||
by `Sam Sledzieski`_, `Rohit Singh`_, `Lenore Cowen`_, and `Bonnie Berger`_.
|
||||
|
||||
.. _`D-SCRIPT Home Page`: http://dscript.csail.mit.edu
|
||||
.. _`Sam Sledzieski`: http://samsledje.github.io/
|
||||
.. _`Rohit Singh`: http://people.csail.mit.edu/rsingh/
|
||||
.. _`Lenore Cowen`: http://www.cs.tufts.edu/~cowen/
|
||||
.. _`Bonnie Berger`: http://people.csail.mit.edu/bab/
|
||||
|
||||
Table of contents
|
||||
=================
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
installation
|
||||
usage
|
||||
data
|
||||
api/index
|
||||
|
||||
Indices and tables
|
||||
==================
|
||||
|
||||
* :ref:`genindex`
|
||||
* :ref:`modindex`
|
||||
49
docs/build/html/_sources/installation.rst.txt
vendored
49
docs/build/html/_sources/installation.rst.txt
vendored
@@ -1,49 +0,0 @@
|
||||
Installation
|
||||
============
|
||||
|
||||
Requirements
|
||||
------------
|
||||
- python 3.7
|
||||
- pytorch 1.5
|
||||
- h5py
|
||||
- matplotlib
|
||||
- numpy
|
||||
- pandas
|
||||
- scikit-learn
|
||||
- scipy
|
||||
- seaborn
|
||||
- setuptools
|
||||
- tqdm
|
||||
|
||||
Optional GPU support: CUDA Toolkit, cuDNN
|
||||
|
||||
Set up environment
|
||||
------------------
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ git clone https://github.com/samsledje/D-SCRIPT.git
|
||||
|
||||
$ cd D-SCRIPT
|
||||
|
||||
$ conda env create --file environment.yml # Edit this file to change CUDA version if necessary
|
||||
|
||||
$ conda activate dscript
|
||||
|
||||
Install from pip
|
||||
----------------
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
pip install dscript
|
||||
|
||||
Build from source
|
||||
-----------------
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ git clone https://github.com/samsledje/D-SCRIPT.git
|
||||
|
||||
$ cd D-SCRIPT
|
||||
|
||||
$ python setup.py build; python setup.py install
|
||||
181
docs/build/html/_sources/usage.rst.txt
vendored
181
docs/build/html/_sources/usage.rst.txt
vendored
@@ -1,181 +0,0 @@
|
||||
Usage
|
||||
=====
|
||||
|
||||
Quick Start
|
||||
~~~~~~~~~~~
|
||||
|
||||
Predict a new network using a trained model
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Pre-trained models can be downloaded from `here <https://d-script.readthedocs.io/en/main/data.html#trained-models>`_.
|
||||
Candidate pairs should be in tab-separated (``.tsv``) format with no header, and columns for [protein name 1], [protein name 2].
|
||||
Optionally, a third column with [label] can be provided, so predictions can be made using training or test data files (but the label will not affect the predictions).
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
dscript predict --pairs [input data] --seqs [sequences, .fasta format] --model [model file]
|
||||
|
||||
Embed sequences with language model
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Sequences should be in ``.fasta`` format.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
dscript embed --seqs [sequences] --outfile [embedding file]
|
||||
|
||||
Train and save a model
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Training and validation data should be in tab-separated (``.tsv``) format with no header, and columns for [protein name 1], [protein name 2], [label].
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
dscript train --train [training data] --val [validation data] --embedding [embedding file] --save-prefix [prefix]
|
||||
|
||||
|
||||
Evaluate a trained model
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
dscript eval --model [model file] --test [test data] --embedding [embedding file] --outfile [result file]
|
||||
|
||||
|
||||
Prediction
|
||||
~~~~~~~~~~
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
usage: dscript predict [-h] --pairs PAIRS --model MODEL [--seqs SEQS]
|
||||
[--embeddings EMBEDDINGS] [-o OUTFILE] [-d DEVICE]
|
||||
[--thresh THRESH]
|
||||
|
||||
Make new predictions with a pre-trained model. One of --seqs and --embeddings is required.
|
||||
|
||||
optional arguments:
|
||||
-h, --help show this help message and exit
|
||||
--pairs PAIRS Candidate protein pairs to predict
|
||||
--model MODEL Pretrained Model
|
||||
--seqs SEQS Protein sequences in .fasta format
|
||||
--embeddings EMBEDDINGS
|
||||
h5 file with embedded sequences
|
||||
-o OUTFILE, --outfile OUTFILE
|
||||
File for predictions
|
||||
-d DEVICE, --device DEVICE
|
||||
Compute device to use
|
||||
--thresh THRESH Positive prediction threshold - used to store contact
|
||||
maps and predictions in a separate file. [default:
|
||||
0.5]
|
||||
|
||||
Embedding
|
||||
~~~~~~~~~
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
usage: dscript embed [-h] --seqs SEQS --outfile OUTFILE [-d DEVICE]
|
||||
|
||||
Generate new embeddings using pre-trained language model
|
||||
|
||||
optional arguments:
|
||||
-h, --help show this help message and exit
|
||||
--seqs SEQS Sequences to be embedded
|
||||
--outfile OUTFILE h5 file to write results
|
||||
-d DEVICE, --device DEVICE
|
||||
Compute device to use
|
||||
|
||||
Training
|
||||
~~~~~~~~
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
usage: dscript train [-h] --train TRAIN --val VAL --embedding EMBEDDING
|
||||
[--no-augment] [--projection-dim PROJECTION_DIM]
|
||||
[--dropout-p DROPOUT_P] [--hidden-dim HIDDEN_DIM]
|
||||
[--kernel-width KERNEL_WIDTH] [--no-w]
|
||||
[--pool-width POOL_WIDTH]
|
||||
[--negative-ratio NEGATIVE_RATIO]
|
||||
[--epoch-scale EPOCH_SCALE] [--num-epochs NUM_EPOCHS]
|
||||
[--batch-size BATCH_SIZE] [--weight-decay WEIGHT_DECAY]
|
||||
[--lr LR] [--lambda LAMBDA_] [-o OUTFILE]
|
||||
[--save-prefix SAVE_PREFIX] [-d DEVICE]
|
||||
[--checkpoint CHECKPOINT]
|
||||
|
||||
Train a new model
|
||||
|
||||
optional arguments:
|
||||
-h, --help show this help message and exit
|
||||
|
||||
Data:
|
||||
--train TRAIN Training data
|
||||
--val VAL Validation data
|
||||
--embedding EMBEDDING
|
||||
h5 file with embedded sequences
|
||||
--no-augment Set flag to not augment data by adding (B A) for all pairs
|
||||
(A B)
|
||||
|
||||
Projection Module:
|
||||
--projection-dim PROJECTION_DIM
|
||||
Dimension of embedding projection layer (default: 100)
|
||||
--dropout-p DROPOUT_P
|
||||
Parameter p for embedding dropout layer (default: 0.5)
|
||||
|
||||
Contact Module:
|
||||
--hidden-dim HIDDEN_DIM
|
||||
Number of hidden units for comparison layer in contact
|
||||
prediction (default: 50)
|
||||
--kernel-width KERNEL_WIDTH
|
||||
Width of convolutional filter for contact prediction
|
||||
(default: 7)
|
||||
|
||||
Interaction Module:
|
||||
--no-w Don't use weight matrix in interaction prediction model
|
||||
--pool-width POOL_WIDTH
|
||||
Size of max-pool in interaction model (default: 9)
|
||||
|
||||
Training:
|
||||
--negative-ratio NEGATIVE_RATIO
|
||||
Number of negative training samples for each positive
|
||||
training sample (default: 10)
|
||||
--epoch-scale EPOCH_SCALE
|
||||
Report heldout performance every this many epochs
|
||||
(default: 5)
|
||||
--num-epochs NUM_EPOCHS
|
||||
Number of epochs (default: 100)
|
||||
--batch-size BATCH_SIZE
|
||||
Minibatch size (default: 25)
|
||||
--weight-decay WEIGHT_DECAY
|
||||
L2 regularization (default: 0)
|
||||
--lr LR Learning rate (default: 0.001)
|
||||
--lambda LAMBDA_ Weight on the similarity objective (default: 0.35)
|
||||
|
||||
Output and Device:
|
||||
-o OUTPUT, --output OUTPUT
|
||||
Output file path (default: stdout)
|
||||
--save-prefix SAVE_PREFIX
|
||||
Path prefix for saving models
|
||||
-d DEVICE, --device DEVICE
|
||||
Compute device to use
|
||||
--checkpoint CHECKPOINT
|
||||
Checkpoint model to start training from``
|
||||
|
||||
Evaluation
|
||||
~~~~~~~~~~
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
usage: dscript eval [-h] --model MODEL --test TEST --embedding EMBEDDING
|
||||
[-o OUTFILE] [-d DEVICE]
|
||||
|
||||
Evaluate a trained model
|
||||
|
||||
optional arguments:
|
||||
-h, --help show this help message and exit
|
||||
--model MODEL Trained prediction model
|
||||
--test TEST Test Data
|
||||
--embedding EMBEDDING
|
||||
h5 file with embedded sequences
|
||||
-o OUTFILE, --outfile OUTFILE
|
||||
Output file to write results
|
||||
-d DEVICE, --device DEVICE
|
||||
Compute device to use
|
||||
856
docs/build/html/_static/basic.css
vendored
856
docs/build/html/_static/basic.css
vendored
@@ -1,856 +0,0 @@
|
||||
/*
|
||||
* basic.css
|
||||
* ~~~~~~~~~
|
||||
*
|
||||
* Sphinx stylesheet -- basic theme.
|
||||
*
|
||||
* :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
|
||||
* :license: BSD, see LICENSE for details.
|
||||
*
|
||||
*/
|
||||
|
||||
/* -- main layout ----------------------------------------------------------- */
|
||||
|
||||
div.clearer {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
div.section::after {
|
||||
display: block;
|
||||
content: '';
|
||||
clear: left;
|
||||
}
|
||||
|
||||
/* -- relbar ---------------------------------------------------------------- */
|
||||
|
||||
div.related {
|
||||
width: 100%;
|
||||
font-size: 90%;
|
||||
}
|
||||
|
||||
div.related h3 {
|
||||
display: none;
|
||||
}
|
||||
|
||||
div.related ul {
|
||||
margin: 0;
|
||||
padding: 0 0 0 10px;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
div.related li {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
div.related li.right {
|
||||
float: right;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
/* -- sidebar --------------------------------------------------------------- */
|
||||
|
||||
div.sphinxsidebarwrapper {
|
||||
padding: 10px 5px 0 10px;
|
||||
}
|
||||
|
||||
div.sphinxsidebar {
|
||||
float: left;
|
||||
width: 230px;
|
||||
margin-left: -100%;
|
||||
font-size: 90%;
|
||||
word-wrap: break-word;
|
||||
overflow-wrap : break-word;
|
||||
}
|
||||
|
||||
div.sphinxsidebar ul {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
div.sphinxsidebar ul ul,
|
||||
div.sphinxsidebar ul.want-points {
|
||||
margin-left: 20px;
|
||||
list-style: square;
|
||||
}
|
||||
|
||||
div.sphinxsidebar ul ul {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
div.sphinxsidebar form {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
div.sphinxsidebar input {
|
||||
border: 1px solid #98dbcc;
|
||||
font-family: sans-serif;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
div.sphinxsidebar #searchbox form.search {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
div.sphinxsidebar #searchbox input[type="text"] {
|
||||
float: left;
|
||||
width: 80%;
|
||||
padding: 0.25em;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
div.sphinxsidebar #searchbox input[type="submit"] {
|
||||
float: left;
|
||||
width: 20%;
|
||||
border-left: none;
|
||||
padding: 0.25em;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
|
||||
img {
|
||||
border: 0;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
/* -- search page ----------------------------------------------------------- */
|
||||
|
||||
ul.search {
|
||||
margin: 10px 0 0 20px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
ul.search li {
|
||||
padding: 5px 0 5px 20px;
|
||||
background-image: url(file.png);
|
||||
background-repeat: no-repeat;
|
||||
background-position: 0 7px;
|
||||
}
|
||||
|
||||
ul.search li a {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
ul.search li div.context {
|
||||
color: #888;
|
||||
margin: 2px 0 0 30px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
ul.keywordmatches li.goodmatch a {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* -- index page ------------------------------------------------------------ */
|
||||
|
||||
table.contentstable {
|
||||
width: 90%;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
table.contentstable p.biglink {
|
||||
line-height: 150%;
|
||||
}
|
||||
|
||||
a.biglink {
|
||||
font-size: 1.3em;
|
||||
}
|
||||
|
||||
span.linkdescr {
|
||||
font-style: italic;
|
||||
padding-top: 5px;
|
||||
font-size: 90%;
|
||||
}
|
||||
|
||||
/* -- general index --------------------------------------------------------- */
|
||||
|
||||
table.indextable {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
table.indextable td {
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
table.indextable ul {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
table.indextable > tbody > tr > td > ul {
|
||||
padding-left: 0em;
|
||||
}
|
||||
|
||||
table.indextable tr.pcap {
|
||||
height: 10px;
|
||||
}
|
||||
|
||||
table.indextable tr.cap {
|
||||
margin-top: 10px;
|
||||
background-color: #f2f2f2;
|
||||
}
|
||||
|
||||
img.toggler {
|
||||
margin-right: 3px;
|
||||
margin-top: 3px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
div.modindex-jumpbox {
|
||||
border-top: 1px solid #ddd;
|
||||
border-bottom: 1px solid #ddd;
|
||||
margin: 1em 0 1em 0;
|
||||
padding: 0.4em;
|
||||
}
|
||||
|
||||
div.genindex-jumpbox {
|
||||
border-top: 1px solid #ddd;
|
||||
border-bottom: 1px solid #ddd;
|
||||
margin: 1em 0 1em 0;
|
||||
padding: 0.4em;
|
||||
}
|
||||
|
||||
/* -- domain module index --------------------------------------------------- */
|
||||
|
||||
table.modindextable td {
|
||||
padding: 2px;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
/* -- general body styles --------------------------------------------------- */
|
||||
|
||||
div.body {
|
||||
min-width: 450px;
|
||||
max-width: 800px;
|
||||
}
|
||||
|
||||
div.body p, div.body dd, div.body li, div.body blockquote {
|
||||
-moz-hyphens: auto;
|
||||
-ms-hyphens: auto;
|
||||
-webkit-hyphens: auto;
|
||||
hyphens: auto;
|
||||
}
|
||||
|
||||
a.headerlink {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
a.brackets:before,
|
||||
span.brackets > a:before{
|
||||
content: "[";
|
||||
}
|
||||
|
||||
a.brackets:after,
|
||||
span.brackets > a:after {
|
||||
content: "]";
|
||||
}
|
||||
|
||||
h1:hover > a.headerlink,
|
||||
h2:hover > a.headerlink,
|
||||
h3:hover > a.headerlink,
|
||||
h4:hover > a.headerlink,
|
||||
h5:hover > a.headerlink,
|
||||
h6:hover > a.headerlink,
|
||||
dt:hover > a.headerlink,
|
||||
caption:hover > a.headerlink,
|
||||
p.caption:hover > a.headerlink,
|
||||
div.code-block-caption:hover > a.headerlink {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
div.body p.caption {
|
||||
text-align: inherit;
|
||||
}
|
||||
|
||||
div.body td {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.first {
|
||||
margin-top: 0 !important;
|
||||
}
|
||||
|
||||
p.rubric {
|
||||
margin-top: 30px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
img.align-left, .figure.align-left, object.align-left {
|
||||
clear: left;
|
||||
float: left;
|
||||
margin-right: 1em;
|
||||
}
|
||||
|
||||
img.align-right, .figure.align-right, object.align-right {
|
||||
clear: right;
|
||||
float: right;
|
||||
margin-left: 1em;
|
||||
}
|
||||
|
||||
img.align-center, .figure.align-center, object.align-center {
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
img.align-default, .figure.align-default {
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.align-left {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.align-center {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.align-default {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.align-right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
/* -- sidebars -------------------------------------------------------------- */
|
||||
|
||||
div.sidebar {
|
||||
margin: 0 0 0.5em 1em;
|
||||
border: 1px solid #ddb;
|
||||
padding: 7px;
|
||||
background-color: #ffe;
|
||||
width: 40%;
|
||||
float: right;
|
||||
clear: right;
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
p.sidebar-title {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
div.admonition, div.topic, blockquote {
|
||||
clear: left;
|
||||
}
|
||||
|
||||
/* -- topics ---------------------------------------------------------------- */
|
||||
|
||||
div.topic {
|
||||
border: 1px solid #ccc;
|
||||
padding: 7px;
|
||||
margin: 10px 0 10px 0;
|
||||
}
|
||||
|
||||
p.topic-title {
|
||||
font-size: 1.1em;
|
||||
font-weight: bold;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
/* -- admonitions ----------------------------------------------------------- */
|
||||
|
||||
div.admonition {
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
padding: 7px;
|
||||
}
|
||||
|
||||
div.admonition dt {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
p.admonition-title {
|
||||
margin: 0px 10px 5px 0px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
div.body p.centered {
|
||||
text-align: center;
|
||||
margin-top: 25px;
|
||||
}
|
||||
|
||||
/* -- content of sidebars/topics/admonitions -------------------------------- */
|
||||
|
||||
div.sidebar > :last-child,
|
||||
div.topic > :last-child,
|
||||
div.admonition > :last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
div.sidebar::after,
|
||||
div.topic::after,
|
||||
div.admonition::after,
|
||||
blockquote::after {
|
||||
display: block;
|
||||
content: '';
|
||||
clear: both;
|
||||
}
|
||||
|
||||
/* -- tables ---------------------------------------------------------------- */
|
||||
|
||||
table.docutils {
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
border: 0;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
table.align-center {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
table.align-default {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
table caption span.caption-number {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
table caption span.caption-text {
|
||||
}
|
||||
|
||||
table.docutils td, table.docutils th {
|
||||
padding: 1px 8px 1px 5px;
|
||||
border-top: 0;
|
||||
border-left: 0;
|
||||
border-right: 0;
|
||||
border-bottom: 1px solid #aaa;
|
||||
}
|
||||
|
||||
table.footnote td, table.footnote th {
|
||||
border: 0 !important;
|
||||
}
|
||||
|
||||
th {
|
||||
text-align: left;
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
table.citation {
|
||||
border-left: solid 1px gray;
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
table.citation td {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
th > :first-child,
|
||||
td > :first-child {
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
th > :last-child,
|
||||
td > :last-child {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
/* -- figures --------------------------------------------------------------- */
|
||||
|
||||
div.figure {
|
||||
margin: 0.5em;
|
||||
padding: 0.5em;
|
||||
}
|
||||
|
||||
div.figure p.caption {
|
||||
padding: 0.3em;
|
||||
}
|
||||
|
||||
div.figure p.caption span.caption-number {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
div.figure p.caption span.caption-text {
|
||||
}
|
||||
|
||||
/* -- field list styles ----------------------------------------------------- */
|
||||
|
||||
table.field-list td, table.field-list th {
|
||||
border: 0 !important;
|
||||
}
|
||||
|
||||
.field-list ul {
|
||||
margin: 0;
|
||||
padding-left: 1em;
|
||||
}
|
||||
|
||||
.field-list p {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.field-name {
|
||||
-moz-hyphens: manual;
|
||||
-ms-hyphens: manual;
|
||||
-webkit-hyphens: manual;
|
||||
hyphens: manual;
|
||||
}
|
||||
|
||||
/* -- hlist styles ---------------------------------------------------------- */
|
||||
|
||||
table.hlist {
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
table.hlist td {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
|
||||
/* -- other body styles ----------------------------------------------------- */
|
||||
|
||||
ol.arabic {
|
||||
list-style: decimal;
|
||||
}
|
||||
|
||||
ol.loweralpha {
|
||||
list-style: lower-alpha;
|
||||
}
|
||||
|
||||
ol.upperalpha {
|
||||
list-style: upper-alpha;
|
||||
}
|
||||
|
||||
ol.lowerroman {
|
||||
list-style: lower-roman;
|
||||
}
|
||||
|
||||
ol.upperroman {
|
||||
list-style: upper-roman;
|
||||
}
|
||||
|
||||
:not(li) > ol > li:first-child > :first-child,
|
||||
:not(li) > ul > li:first-child > :first-child {
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
:not(li) > ol > li:last-child > :last-child,
|
||||
:not(li) > ul > li:last-child > :last-child {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
ol.simple ol p,
|
||||
ol.simple ul p,
|
||||
ul.simple ol p,
|
||||
ul.simple ul p {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
ol.simple > li:not(:first-child) > p,
|
||||
ul.simple > li:not(:first-child) > p {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
ol.simple p,
|
||||
ul.simple p {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
dl.footnote > dt,
|
||||
dl.citation > dt {
|
||||
float: left;
|
||||
margin-right: 0.5em;
|
||||
}
|
||||
|
||||
dl.footnote > dd,
|
||||
dl.citation > dd {
|
||||
margin-bottom: 0em;
|
||||
}
|
||||
|
||||
dl.footnote > dd:after,
|
||||
dl.citation > dd:after {
|
||||
content: "";
|
||||
clear: both;
|
||||
}
|
||||
|
||||
dl.field-list {
|
||||
display: grid;
|
||||
grid-template-columns: fit-content(30%) auto;
|
||||
}
|
||||
|
||||
dl.field-list > dt {
|
||||
font-weight: bold;
|
||||
word-break: break-word;
|
||||
padding-left: 0.5em;
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
dl.field-list > dt:after {
|
||||
content: ":";
|
||||
}
|
||||
|
||||
dl.field-list > dd {
|
||||
padding-left: 0.5em;
|
||||
margin-top: 0em;
|
||||
margin-left: 0em;
|
||||
margin-bottom: 0em;
|
||||
}
|
||||
|
||||
dl {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
dd > :first-child {
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
dd ul, dd table {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
dd {
|
||||
margin-top: 3px;
|
||||
margin-bottom: 10px;
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
dl > dd:last-child,
|
||||
dl > dd:last-child > :last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
dt:target, span.highlighted {
|
||||
background-color: #fbe54e;
|
||||
}
|
||||
|
||||
rect.highlighted {
|
||||
fill: #fbe54e;
|
||||
}
|
||||
|
||||
dl.glossary dt {
|
||||
font-weight: bold;
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
.optional {
|
||||
font-size: 1.3em;
|
||||
}
|
||||
|
||||
.sig-paren {
|
||||
font-size: larger;
|
||||
}
|
||||
|
||||
.versionmodified {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.system-message {
|
||||
background-color: #fda;
|
||||
padding: 5px;
|
||||
border: 3px solid red;
|
||||
}
|
||||
|
||||
.footnote:target {
|
||||
background-color: #ffa;
|
||||
}
|
||||
|
||||
.line-block {
|
||||
display: block;
|
||||
margin-top: 1em;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
.line-block .line-block {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
margin-left: 1.5em;
|
||||
}
|
||||
|
||||
.guilabel, .menuselection {
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
.accelerator {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.classifier {
|
||||
font-style: oblique;
|
||||
}
|
||||
|
||||
.classifier:before {
|
||||
font-style: normal;
|
||||
margin: 0.5em;
|
||||
content: ":";
|
||||
}
|
||||
|
||||
abbr, acronym {
|
||||
border-bottom: dotted 1px;
|
||||
cursor: help;
|
||||
}
|
||||
|
||||
/* -- code displays --------------------------------------------------------- */
|
||||
|
||||
pre {
|
||||
overflow: auto;
|
||||
overflow-y: hidden; /* fixes display issues on Chrome browsers */
|
||||
}
|
||||
|
||||
pre, div[class*="highlight-"] {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
span.pre {
|
||||
-moz-hyphens: none;
|
||||
-ms-hyphens: none;
|
||||
-webkit-hyphens: none;
|
||||
hyphens: none;
|
||||
}
|
||||
|
||||
div[class*="highlight-"] {
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
td.linenos pre {
|
||||
border: 0;
|
||||
background-color: transparent;
|
||||
color: #aaa;
|
||||
}
|
||||
|
||||
table.highlighttable {
|
||||
display: block;
|
||||
}
|
||||
|
||||
table.highlighttable tbody {
|
||||
display: block;
|
||||
}
|
||||
|
||||
table.highlighttable tr {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
table.highlighttable td {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
table.highlighttable td.linenos {
|
||||
padding-right: 0.5em;
|
||||
}
|
||||
|
||||
table.highlighttable td.code {
|
||||
flex: 1;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.highlight .hll {
|
||||
display: block;
|
||||
}
|
||||
|
||||
div.highlight pre,
|
||||
table.highlighttable pre {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
div.code-block-caption + div {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
div.code-block-caption {
|
||||
margin-top: 1em;
|
||||
padding: 2px 5px;
|
||||
font-size: small;
|
||||
}
|
||||
|
||||
div.code-block-caption code {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
table.highlighttable td.linenos,
|
||||
span.linenos,
|
||||
div.doctest > div.highlight span.gp { /* gp: Generic.Prompt */
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
div.code-block-caption span.caption-number {
|
||||
padding: 0.1em 0.3em;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
div.code-block-caption span.caption-text {
|
||||
}
|
||||
|
||||
div.literal-block-wrapper {
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
code.descname {
|
||||
background-color: transparent;
|
||||
font-weight: bold;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
code.descclassname {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
code.xref, a code {
|
||||
background-color: transparent;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.viewcode-link {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.viewcode-back {
|
||||
float: right;
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
div.viewcode-block:target {
|
||||
margin: -1px -10px;
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
/* -- math display ---------------------------------------------------------- */
|
||||
|
||||
img.math {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
div.body div.math p {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
span.eqno {
|
||||
float: right;
|
||||
}
|
||||
|
||||
span.eqno a.headerlink {
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
div.math:hover a.headerlink {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
/* -- printout stylesheet --------------------------------------------------- */
|
||||
|
||||
@media print {
|
||||
div.document,
|
||||
div.documentwrapper,
|
||||
div.bodywrapper {
|
||||
margin: 0 !important;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
div.sphinxsidebar,
|
||||
div.related,
|
||||
div.footer,
|
||||
#top-link {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
1
docs/build/html/_static/css/badge_only.css
vendored
1
docs/build/html/_static/css/badge_only.css
vendored
@@ -1 +0,0 @@
|
||||
.fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
|
Before Width: | Height: | Size: 434 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
docs/build/html/_static/css/fonts/lato-bold.woff
vendored
BIN
docs/build/html/_static/css/fonts/lato-bold.woff
vendored
Binary file not shown.
BIN
docs/build/html/_static/css/fonts/lato-bold.woff2
vendored
BIN
docs/build/html/_static/css/fonts/lato-bold.woff2
vendored
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
docs/build/html/_static/css/fonts/lato-normal.woff
vendored
BIN
docs/build/html/_static/css/fonts/lato-normal.woff
vendored
Binary file not shown.
BIN
docs/build/html/_static/css/fonts/lato-normal.woff2
vendored
BIN
docs/build/html/_static/css/fonts/lato-normal.woff2
vendored
Binary file not shown.
4
docs/build/html/_static/css/theme.css
vendored
4
docs/build/html/_static/css/theme.css
vendored
File diff suppressed because one or more lines are too long
321
docs/build/html/_static/doctools.js
vendored
321
docs/build/html/_static/doctools.js
vendored
@@ -1,321 +0,0 @@
|
||||
/*
|
||||
* doctools.js
|
||||
* ~~~~~~~~~~~
|
||||
*
|
||||
* Sphinx JavaScript utilities for all documentation.
|
||||
*
|
||||
* :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
|
||||
* :license: BSD, see LICENSE for details.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* select a different prefix for underscore
|
||||
*/
|
||||
$u = _.noConflict();
|
||||
|
||||
/**
|
||||
* make the code below compatible with browsers without
|
||||
* an installed firebug like debugger
|
||||
if (!window.console || !console.firebug) {
|
||||
var names = ["log", "debug", "info", "warn", "error", "assert", "dir",
|
||||
"dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace",
|
||||
"profile", "profileEnd"];
|
||||
window.console = {};
|
||||
for (var i = 0; i < names.length; ++i)
|
||||
window.console[names[i]] = function() {};
|
||||
}
|
||||
*/
|
||||
|
||||
/**
|
||||
* small helper function to urldecode strings
|
||||
*
|
||||
* See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL
|
||||
*/
|
||||
jQuery.urldecode = function(x) {
|
||||
if (!x) {
|
||||
return x
|
||||
}
|
||||
return decodeURIComponent(x.replace(/\+/g, ' '));
|
||||
};
|
||||
|
||||
/**
|
||||
* small helper function to urlencode strings
|
||||
*/
|
||||
jQuery.urlencode = encodeURIComponent;
|
||||
|
||||
/**
|
||||
* This function returns the parsed url parameters of the
|
||||
* current request. Multiple values per key are supported,
|
||||
* it will always return arrays of strings for the value parts.
|
||||
*/
|
||||
jQuery.getQueryParameters = function(s) {
|
||||
if (typeof s === 'undefined')
|
||||
s = document.location.search;
|
||||
var parts = s.substr(s.indexOf('?') + 1).split('&');
|
||||
var result = {};
|
||||
for (var i = 0; i < parts.length; i++) {
|
||||
var tmp = parts[i].split('=', 2);
|
||||
var key = jQuery.urldecode(tmp[0]);
|
||||
var value = jQuery.urldecode(tmp[1]);
|
||||
if (key in result)
|
||||
result[key].push(value);
|
||||
else
|
||||
result[key] = [value];
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
/**
|
||||
* highlight a given string on a jquery object by wrapping it in
|
||||
* span elements with the given class name.
|
||||
*/
|
||||
jQuery.fn.highlightText = function(text, className) {
|
||||
function highlight(node, addItems) {
|
||||
if (node.nodeType === 3) {
|
||||
var val = node.nodeValue;
|
||||
var pos = val.toLowerCase().indexOf(text);
|
||||
if (pos >= 0 &&
|
||||
!jQuery(node.parentNode).hasClass(className) &&
|
||||
!jQuery(node.parentNode).hasClass("nohighlight")) {
|
||||
var span;
|
||||
var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg");
|
||||
if (isInSVG) {
|
||||
span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
|
||||
} else {
|
||||
span = document.createElement("span");
|
||||
span.className = className;
|
||||
}
|
||||
span.appendChild(document.createTextNode(val.substr(pos, text.length)));
|
||||
node.parentNode.insertBefore(span, node.parentNode.insertBefore(
|
||||
document.createTextNode(val.substr(pos + text.length)),
|
||||
node.nextSibling));
|
||||
node.nodeValue = val.substr(0, pos);
|
||||
if (isInSVG) {
|
||||
var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
|
||||
var bbox = node.parentElement.getBBox();
|
||||
rect.x.baseVal.value = bbox.x;
|
||||
rect.y.baseVal.value = bbox.y;
|
||||
rect.width.baseVal.value = bbox.width;
|
||||
rect.height.baseVal.value = bbox.height;
|
||||
rect.setAttribute('class', className);
|
||||
addItems.push({
|
||||
"parent": node.parentNode,
|
||||
"target": rect});
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (!jQuery(node).is("button, select, textarea")) {
|
||||
jQuery.each(node.childNodes, function() {
|
||||
highlight(this, addItems);
|
||||
});
|
||||
}
|
||||
}
|
||||
var addItems = [];
|
||||
var result = this.each(function() {
|
||||
highlight(this, addItems);
|
||||
});
|
||||
for (var i = 0; i < addItems.length; ++i) {
|
||||
jQuery(addItems[i].parent).before(addItems[i].target);
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
/*
|
||||
* backward compatibility for jQuery.browser
|
||||
* This will be supported until firefox bug is fixed.
|
||||
*/
|
||||
if (!jQuery.browser) {
|
||||
jQuery.uaMatch = function(ua) {
|
||||
ua = ua.toLowerCase();
|
||||
|
||||
var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
|
||||
/(webkit)[ \/]([\w.]+)/.exec(ua) ||
|
||||
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
|
||||
/(msie) ([\w.]+)/.exec(ua) ||
|
||||
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
|
||||
[];
|
||||
|
||||
return {
|
||||
browser: match[ 1 ] || "",
|
||||
version: match[ 2 ] || "0"
|
||||
};
|
||||
};
|
||||
jQuery.browser = {};
|
||||
jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Small JavaScript module for the documentation.
|
||||
*/
|
||||
var Documentation = {
|
||||
|
||||
init : function() {
|
||||
this.fixFirefoxAnchorBug();
|
||||
this.highlightSearchWords();
|
||||
this.initIndexTable();
|
||||
if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) {
|
||||
this.initOnKeyListeners();
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* i18n support
|
||||
*/
|
||||
TRANSLATIONS : {},
|
||||
PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; },
|
||||
LOCALE : 'unknown',
|
||||
|
||||
// gettext and ngettext don't access this so that the functions
|
||||
// can safely bound to a different name (_ = Documentation.gettext)
|
||||
gettext : function(string) {
|
||||
var translated = Documentation.TRANSLATIONS[string];
|
||||
if (typeof translated === 'undefined')
|
||||
return string;
|
||||
return (typeof translated === 'string') ? translated : translated[0];
|
||||
},
|
||||
|
||||
ngettext : function(singular, plural, n) {
|
||||
var translated = Documentation.TRANSLATIONS[singular];
|
||||
if (typeof translated === 'undefined')
|
||||
return (n == 1) ? singular : plural;
|
||||
return translated[Documentation.PLURALEXPR(n)];
|
||||
},
|
||||
|
||||
addTranslations : function(catalog) {
|
||||
for (var key in catalog.messages)
|
||||
this.TRANSLATIONS[key] = catalog.messages[key];
|
||||
this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')');
|
||||
this.LOCALE = catalog.locale;
|
||||
},
|
||||
|
||||
/**
|
||||
* add context elements like header anchor links
|
||||
*/
|
||||
addContextElements : function() {
|
||||
$('div[id] > :header:first').each(function() {
|
||||
$('<a class="headerlink">\u00B6</a>').
|
||||
attr('href', '#' + this.id).
|
||||
attr('title', _('Permalink to this headline')).
|
||||
appendTo(this);
|
||||
});
|
||||
$('dt[id]').each(function() {
|
||||
$('<a class="headerlink">\u00B6</a>').
|
||||
attr('href', '#' + this.id).
|
||||
attr('title', _('Permalink to this definition')).
|
||||
appendTo(this);
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* workaround a firefox stupidity
|
||||
* see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075
|
||||
*/
|
||||
fixFirefoxAnchorBug : function() {
|
||||
if (document.location.hash && $.browser.mozilla)
|
||||
window.setTimeout(function() {
|
||||
document.location.href += '';
|
||||
}, 10);
|
||||
},
|
||||
|
||||
/**
|
||||
* highlight the search words provided in the url in the text
|
||||
*/
|
||||
highlightSearchWords : function() {
|
||||
var params = $.getQueryParameters();
|
||||
var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
|
||||
if (terms.length) {
|
||||
var body = $('div.body');
|
||||
if (!body.length) {
|
||||
body = $('body');
|
||||
}
|
||||
window.setTimeout(function() {
|
||||
$.each(terms, function() {
|
||||
body.highlightText(this.toLowerCase(), 'highlighted');
|
||||
});
|
||||
}, 10);
|
||||
$('<p class="highlight-link"><a href="javascript:Documentation.' +
|
||||
'hideSearchWords()">' + _('Hide Search Matches') + '</a></p>')
|
||||
.appendTo($('#searchbox'));
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* init the domain index toggle buttons
|
||||
*/
|
||||
initIndexTable : function() {
|
||||
var togglers = $('img.toggler').click(function() {
|
||||
var src = $(this).attr('src');
|
||||
var idnum = $(this).attr('id').substr(7);
|
||||
$('tr.cg-' + idnum).toggle();
|
||||
if (src.substr(-9) === 'minus.png')
|
||||
$(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
|
||||
else
|
||||
$(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
|
||||
}).css('display', '');
|
||||
if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) {
|
||||
togglers.click();
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* helper function to hide the search marks again
|
||||
*/
|
||||
hideSearchWords : function() {
|
||||
$('#searchbox .highlight-link').fadeOut(300);
|
||||
$('span.highlighted').removeClass('highlighted');
|
||||
},
|
||||
|
||||
/**
|
||||
* make the url absolute
|
||||
*/
|
||||
makeURL : function(relativeURL) {
|
||||
return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL;
|
||||
},
|
||||
|
||||
/**
|
||||
* get the current relative url
|
||||
*/
|
||||
getCurrentURL : function() {
|
||||
var path = document.location.pathname;
|
||||
var parts = path.split(/\//);
|
||||
$.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() {
|
||||
if (this === '..')
|
||||
parts.pop();
|
||||
});
|
||||
var url = parts.join('/');
|
||||
return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
|
||||
},
|
||||
|
||||
initOnKeyListeners: function() {
|
||||
$(document).keydown(function(event) {
|
||||
var activeElementType = document.activeElement.tagName;
|
||||
// don't navigate when in search box, textarea, dropdown or button
|
||||
if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT'
|
||||
&& activeElementType !== 'BUTTON' && !event.altKey && !event.ctrlKey && !event.metaKey
|
||||
&& !event.shiftKey) {
|
||||
switch (event.keyCode) {
|
||||
case 37: // left
|
||||
var prevHref = $('link[rel="prev"]').prop('href');
|
||||
if (prevHref) {
|
||||
window.location.href = prevHref;
|
||||
return false;
|
||||
}
|
||||
case 39: // right
|
||||
var nextHref = $('link[rel="next"]').prop('href');
|
||||
if (nextHref) {
|
||||
window.location.href = nextHref;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
// quick alias for translations
|
||||
_ = Documentation.gettext;
|
||||
|
||||
$(document).ready(function() {
|
||||
Documentation.init();
|
||||
});
|
||||
12
docs/build/html/_static/documentation_options.js
vendored
12
docs/build/html/_static/documentation_options.js
vendored
@@ -1,12 +0,0 @@
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
|
||||
VERSION: 'v1.0-beta',
|
||||
LANGUAGE: 'None',
|
||||
COLLAPSE_INDEX: false,
|
||||
BUILDER: 'html',
|
||||
FILE_SUFFIX: '.html',
|
||||
LINK_SUFFIX: '.html',
|
||||
HAS_SOURCE: true,
|
||||
SOURCELINK_SUFFIX: '.txt',
|
||||
NAVIGATION_WITH_KEYS: false
|
||||
};
|
||||
BIN
docs/build/html/_static/dscript_architecture1.png
vendored
BIN
docs/build/html/_static/dscript_architecture1.png
vendored
Binary file not shown.
|
Before Width: | Height: | Size: 82 KiB |
BIN
docs/build/html/_static/file.png
vendored
BIN
docs/build/html/_static/file.png
vendored
Binary file not shown.
|
Before Width: | Height: | Size: 286 B |
BIN
docs/build/html/_static/fonts/FontAwesome.otf
vendored
BIN
docs/build/html/_static/fonts/FontAwesome.otf
vendored
Binary file not shown.
BIN
docs/build/html/_static/fonts/Lato/lato-bold.eot
vendored
BIN
docs/build/html/_static/fonts/Lato/lato-bold.eot
vendored
Binary file not shown.
BIN
docs/build/html/_static/fonts/Lato/lato-bold.ttf
vendored
BIN
docs/build/html/_static/fonts/Lato/lato-bold.ttf
vendored
Binary file not shown.
BIN
docs/build/html/_static/fonts/Lato/lato-bold.woff
vendored
BIN
docs/build/html/_static/fonts/Lato/lato-bold.woff
vendored
Binary file not shown.
BIN
docs/build/html/_static/fonts/Lato/lato-bold.woff2
vendored
BIN
docs/build/html/_static/fonts/Lato/lato-bold.woff2
vendored
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
docs/build/html/_static/fonts/Lato/lato-italic.eot
vendored
BIN
docs/build/html/_static/fonts/Lato/lato-italic.eot
vendored
Binary file not shown.
BIN
docs/build/html/_static/fonts/Lato/lato-italic.ttf
vendored
BIN
docs/build/html/_static/fonts/Lato/lato-italic.ttf
vendored
Binary file not shown.
BIN
docs/build/html/_static/fonts/Lato/lato-italic.woff
vendored
BIN
docs/build/html/_static/fonts/Lato/lato-italic.woff
vendored
Binary file not shown.
BIN
docs/build/html/_static/fonts/Lato/lato-italic.woff2
vendored
BIN
docs/build/html/_static/fonts/Lato/lato-italic.woff2
vendored
Binary file not shown.
BIN
docs/build/html/_static/fonts/Lato/lato-regular.eot
vendored
BIN
docs/build/html/_static/fonts/Lato/lato-regular.eot
vendored
Binary file not shown.
BIN
docs/build/html/_static/fonts/Lato/lato-regular.ttf
vendored
BIN
docs/build/html/_static/fonts/Lato/lato-regular.ttf
vendored
Binary file not shown.
BIN
docs/build/html/_static/fonts/Lato/lato-regular.woff
vendored
BIN
docs/build/html/_static/fonts/Lato/lato-regular.woff
vendored
Binary file not shown.
Binary file not shown.
BIN
docs/build/html/_static/fonts/Roboto-Slab-Bold.woff
vendored
BIN
docs/build/html/_static/fonts/Roboto-Slab-Bold.woff
vendored
Binary file not shown.
BIN
docs/build/html/_static/fonts/Roboto-Slab-Bold.woff2
vendored
BIN
docs/build/html/_static/fonts/Roboto-Slab-Bold.woff2
vendored
Binary file not shown.
BIN
docs/build/html/_static/fonts/Roboto-Slab-Light.woff
vendored
BIN
docs/build/html/_static/fonts/Roboto-Slab-Light.woff
vendored
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
docs/build/html/_static/fonts/Roboto-Slab-Thin.woff
vendored
BIN
docs/build/html/_static/fonts/Roboto-Slab-Thin.woff
vendored
Binary file not shown.
BIN
docs/build/html/_static/fonts/Roboto-Slab-Thin.woff2
vendored
BIN
docs/build/html/_static/fonts/Roboto-Slab-Thin.woff2
vendored
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
2671
docs/build/html/_static/fonts/fontawesome-webfont.svg
vendored
2671
docs/build/html/_static/fonts/fontawesome-webfont.svg
vendored
File diff suppressed because it is too large
Load Diff
|
Before Width: | Height: | Size: 434 KiB |
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user