From 4ea4173abd4625304048cb1fa9ae075d9566610e Mon Sep 17 00:00:00 2001
From: Tim O'Donnell <timodonnell@gmail.com>
Date: Sun, 10 Dec 2017 20:54:23 -0500
Subject: [PATCH] Refactor to simplify directory structure

---
 .gitignore                                    |  2 ++
 mhcflurry/__init__.py                         |  6 ++---
 .../class1_affinity_prediction/__init__.py    |  9 -------
 .../class1_affinity_predictor.py              | 24 +++++++++----------
 .../class1_neural_network.py                  |  8 +++----
 mhcflurry/predict_command.py                  |  2 +-
 .../train_allele_specific_models_command.py   | 12 +++++-----
 test/test_class1_neural_network.py            |  2 +-
 test/test_hyperparameters.py                  |  2 +-
 ...st_train_allele_specific_models_command.py | 11 ++++-----
 10 files changed, 34 insertions(+), 44 deletions(-)
 delete mode 100644 mhcflurry/class1_affinity_prediction/__init__.py
 rename mhcflurry/{class1_affinity_prediction => }/class1_affinity_predictor.py (99%)
 rename mhcflurry/{class1_affinity_prediction => }/class1_neural_network.py (98%)
 rename mhcflurry/{class1_affinity_prediction => }/train_allele_specific_models_command.py (98%)

diff --git a/.gitignore b/.gitignore
index e44e3907..f09f2154 100644
--- a/.gitignore
+++ b/.gitignore
@@ -58,6 +58,8 @@ coverage.xml
 
 # Sphinx documentation
 docs/_build/
+docs/_static
+docs/_templates
 
 # PyBuilder
 target/
diff --git a/mhcflurry/__init__.py b/mhcflurry/__init__.py
index b909f853..e743fb33 100644
--- a/mhcflurry/__init__.py
+++ b/mhcflurry/__init__.py
@@ -12,10 +12,10 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from .class1_affinity_prediction.class1_neural_network import (
-    Class1NeuralNetwork)
-from .class1_affinity_prediction.class1_affinity_predictor import (
+from mhcflurry.class1_affinity_predictor import (
     Class1AffinityPredictor)
+from mhcflurry.class1_neural_network import (
+    Class1NeuralNetwork)
 
 __version__ = "1.0.0"
 
diff --git a/mhcflurry/class1_affinity_prediction/__init__.py b/mhcflurry/class1_affinity_prediction/__init__.py
deleted file mode 100644
index 96707e88..00000000
--- a/mhcflurry/class1_affinity_prediction/__init__.py
+++ /dev/null
@@ -1,9 +0,0 @@
-from __future__ import absolute_import
-
-from .class1_neural_network import Class1NeuralNetwork
-from .class1_affinity_predictor import Class1AffinityPredictor
-
-__all__ = [
-    'Class1NeuralNetwork',
-    'Class1AffinityPredictor',
-]
diff --git a/mhcflurry/class1_affinity_prediction/class1_affinity_predictor.py b/mhcflurry/class1_affinity_predictor.py
similarity index 99%
rename from mhcflurry/class1_affinity_prediction/class1_affinity_predictor.py
rename to mhcflurry/class1_affinity_predictor.py
index af94cfa0..f1251282 100644
--- a/mhcflurry/class1_affinity_prediction/class1_affinity_predictor.py
+++ b/mhcflurry/class1_affinity_predictor.py
@@ -1,26 +1,24 @@
 import collections
-import time
 import hashlib
 import json
-from os.path import join, exists
-from six import string_types
 import logging
-import warnings
 import sys
+import time
+import warnings
+from os.path import join, exists
 
+import mhcnames
 import numpy
 import pandas
 from numpy.testing import assert_equal
+from six import string_types
 
-import mhcnames
-
-from ..encodable_sequences import EncodableSequences
-from ..downloads import get_path
-from ..common import random_peptides
-from ..percent_rank_transform import PercentRankTransform
-from ..regression_target import to_ic50
-
-from .class1_neural_network import Class1NeuralNetwork
+from mhcflurry.class1_neural_network import Class1NeuralNetwork
+from mhcflurry.common import random_peptides
+from mhcflurry.downloads import get_path
+from mhcflurry.encodable_sequences import EncodableSequences
+from mhcflurry.percent_rank_transform import PercentRankTransform
+from mhcflurry.regression_target import to_ic50
 
 
 class Class1AffinityPredictor(object):
diff --git a/mhcflurry/class1_affinity_prediction/class1_neural_network.py b/mhcflurry/class1_neural_network.py
similarity index 98%
rename from mhcflurry/class1_affinity_prediction/class1_neural_network.py
rename to mhcflurry/class1_neural_network.py
index a30d30b3..07ee5a30 100644
--- a/mhcflurry/class1_affinity_prediction/class1_neural_network.py
+++ b/mhcflurry/class1_neural_network.py
@@ -7,10 +7,10 @@ import pandas
 
 from mhcflurry.hyperparameters import HyperparameterDefaults
 
-from ..encodable_sequences import EncodableSequences
-from ..amino_acid import available_vector_encodings, vector_encoding_length
-from ..regression_target import to_ic50, from_ic50
-from ..common import random_peptides, amino_acid_distribution
+from mhcflurry.encodable_sequences import EncodableSequences
+from mhcflurry.amino_acid import available_vector_encodings, vector_encoding_length
+from mhcflurry.regression_target import to_ic50, from_ic50
+from mhcflurry.common import random_peptides, amino_acid_distribution
 
 
 class Class1NeuralNetwork(object):
diff --git a/mhcflurry/predict_command.py b/mhcflurry/predict_command.py
index f3a4a201..0b35d348 100644
--- a/mhcflurry/predict_command.py
+++ b/mhcflurry/predict_command.py
@@ -47,7 +47,7 @@ import logging
 import pandas
 
 from .downloads import get_path
-from .class1_affinity_prediction import Class1AffinityPredictor
+from .class1_affinity_predictor import Class1AffinityPredictor
 
 
 parser = argparse.ArgumentParser(
diff --git a/mhcflurry/class1_affinity_prediction/train_allele_specific_models_command.py b/mhcflurry/train_allele_specific_models_command.py
similarity index 98%
rename from mhcflurry/class1_affinity_prediction/train_allele_specific_models_command.py
rename to mhcflurry/train_allele_specific_models_command.py
index 46680fbf..8345ec9f 100644
--- a/mhcflurry/class1_affinity_prediction/train_allele_specific_models_command.py
+++ b/mhcflurry/train_allele_specific_models_command.py
@@ -2,21 +2,20 @@
 Train Class1 single allele models.
 
 """
+import argparse
 import os
+import signal
 import sys
-import argparse
-import yaml
 import time
-import signal
 import traceback
 from multiprocessing import Pool
 
 import pandas
+import yaml
 from mhcnames import normalize_allele_name
 
-from .class1_affinity_predictor import Class1AffinityPredictor
-from ..common import configure_logging
-
+from mhcflurry.class1_affinity_predictor import Class1AffinityPredictor
+from mhcflurry.common import configure_logging
 
 parser = argparse.ArgumentParser(usage=__doc__)
 
@@ -89,6 +88,7 @@ parser.add_argument(
     "Set to 1 for serial run. Set to 0 to use number of cores. "
     "Default: %(default)s.")
 
+
 def run(argv=sys.argv[1:]):
     # On sigusr1 print stack trace
     print("To show stack trace, run:\nkill -s USR1 %d" % os.getpid())
diff --git a/test/test_class1_neural_network.py b/test/test_class1_neural_network.py
index 8747f7e0..835c632d 100644
--- a/test/test_class1_neural_network.py
+++ b/test/test_class1_neural_network.py
@@ -2,7 +2,7 @@ import numpy
 import pandas
 numpy.random.seed(0)
 
-from mhcflurry import Class1NeuralNetwork
+from mhcflurry.class1_neural_network import Class1NeuralNetwork
 
 from nose.tools import eq_
 from numpy import testing
diff --git a/test/test_hyperparameters.py b/test/test_hyperparameters.py
index c1af6cac..0b887236 100644
--- a/test/test_hyperparameters.py
+++ b/test/test_hyperparameters.py
@@ -1,6 +1,6 @@
 from numpy.testing import assert_equal
 
-from mhcflurry.class1_affinity_prediction import Class1NeuralNetwork
+from mhcflurry.class1_neural_network import Class1NeuralNetwork
 
 
 def test_all_combinations_of_hyperparameters():
diff --git a/test/test_train_allele_specific_models_command.py b/test/test_train_allele_specific_models_command.py
index a556cc9a..affcde75 100644
--- a/test/test_train_allele_specific_models_command.py
+++ b/test/test_train_allele_specific_models_command.py
@@ -1,15 +1,14 @@
-import tempfile
-import shutil
-import os
 import json
+import os
+import shutil
+import tempfile
 
 from numpy.testing import assert_array_less, assert_equal
 
-from mhcflurry.class1_affinity_prediction import (
-    train_allele_specific_models_command, Class1AffinityPredictor)
+from mhcflurry import train_allele_specific_models_command
+from mhcflurry import Class1AffinityPredictor
 from mhcflurry.downloads import get_path
 
-
 HYPERPARAMETERS = [
     {
         "n_models": 2,
-- 
GitLab