diff --git a/Makefile b/Makefile index 5e24d14..ff8fd94 100644 --- a/Makefile +++ b/Makefile @@ -82,6 +82,8 @@ data-rfam-learn: requirements: ./thirdparty/miniconda/make_miniconda.sh conda env create -f environment.yml + @source activate learna && \ + pip install . ################################################################################ diff --git a/environment.yml b/environment.yml index cb49e7c..1c861b6 100644 --- a/environment.yml +++ b/environment.yml @@ -17,5 +17,4 @@ dependencies: - tqdm - black - Distance - - tensorforce==0.3.3 - dataclasses diff --git a/learna/__init__.py b/learna/__init__.py new file mode 100644 index 0000000..99c4176 --- /dev/null +++ b/learna/__init__.py @@ -0,0 +1 @@ +__version__ = '0.0.1' \ No newline at end of file diff --git a/src/__init__.py b/learna/analyse/__init__.py similarity index 100% rename from src/__init__.py rename to learna/analyse/__init__.py diff --git a/src/analyse/analyse_experiment_group.py b/learna/analyse/analyse_experiment_group.py similarity index 100% rename from src/analyse/analyse_experiment_group.py rename to learna/analyse/analyse_experiment_group.py diff --git a/src/analyse/plot.py b/learna/analyse/plot.py similarity index 100% rename from src/analyse/plot.py rename to learna/analyse/plot.py diff --git a/src/analyse/process_data.py b/learna/analyse/process_data.py similarity index 100% rename from src/analyse/process_data.py rename to learna/analyse/process_data.py diff --git a/src/analyse/read_data.py b/learna/analyse/read_data.py similarity index 100% rename from src/analyse/read_data.py rename to learna/analyse/read_data.py diff --git a/src/analyse/tables.py b/learna/analyse/tables.py similarity index 100% rename from src/analyse/tables.py rename to learna/analyse/tables.py diff --git a/src/analyse/__init__.py b/learna/data/__init__.py similarity index 100% rename from src/analyse/__init__.py rename to learna/data/__init__.py diff --git a/src/data/download_and_build_eterna.py b/learna/data/download_and_build_eterna.py similarity index 95% rename from src/data/download_and_build_eterna.py rename to learna/data/download_and_build_eterna.py index dd5f6a2..414c171 100644 --- a/src/data/download_and_build_eterna.py +++ b/learna/data/download_and_build_eterna.py @@ -9,7 +9,7 @@ def _download_dataset_from_http(url, download_path): unit="B", unit_scale=True, unit_divisor=1024, - total=int(response.headers["Content-Length"]), + total=int(response.headers["X-ELS-SIZE"]), ) for data in tqdm(response.iter_content()): progress_bar.update(len(data)) diff --git a/src/data/download_and_build_rfam_learn.sh b/learna/data/download_and_build_rfam_learn.sh similarity index 100% rename from src/data/download_and_build_rfam_learn.sh rename to learna/data/download_and_build_rfam_learn.sh diff --git a/src/data/download_and_build_rfam_taneda.sh b/learna/data/download_and_build_rfam_taneda.sh similarity index 100% rename from src/data/download_and_build_rfam_taneda.sh rename to learna/data/download_and_build_rfam_taneda.sh diff --git a/src/data/parse_dot_brackets.py b/learna/data/parse_dot_brackets.py similarity index 100% rename from src/data/parse_dot_brackets.py rename to learna/data/parse_dot_brackets.py diff --git a/src/data/secondaries_to_single_files.sh b/learna/data/secondaries_to_single_files.sh similarity index 100% rename from src/data/secondaries_to_single_files.sh rename to learna/data/secondaries_to_single_files.sh diff --git a/src/learna/__init__.py b/learna/learna/__init__.py similarity index 100% rename from src/learna/__init__.py rename to learna/learna/__init__.py diff --git a/src/learna/agent.py b/learna/learna/agent.py similarity index 100% rename from src/learna/agent.py rename to learna/learna/agent.py diff --git a/src/learna/design_rna.py b/learna/learna/design_rna.py similarity index 96% rename from src/learna/design_rna.py rename to learna/learna/design_rna.py index 89d0441..ede0e85 100644 --- a/src/learna/design_rna.py +++ b/learna/learna/design_rna.py @@ -1,10 +1,10 @@ import time import tensorflow as tf -from ..tensorforce.runner import Runner +from learna.tensorforce.runner import Runner -from .agent import NetworkConfig, get_network, AgentConfig, get_agent_fn -from .environment import RnaDesignEnvironment, RnaDesignEnvironmentConfig +from learna.learna.agent import NetworkConfig, get_network, AgentConfig, get_agent_fn +from learna.learna.environment import RnaDesignEnvironment, RnaDesignEnvironmentConfig def _get_episode_finished(timeout, stop_once_solved): diff --git a/src/learna/environment.py b/learna/learna/environment.py similarity index 100% rename from src/learna/environment.py rename to learna/learna/environment.py diff --git a/src/learna/environment_test.py b/learna/learna/environment_test.py similarity index 99% rename from src/learna/environment_test.py rename to learna/learna/environment_test.py index 635b931..628e0dc 100644 --- a/src/learna/environment_test.py +++ b/learna/learna/environment_test.py @@ -1,5 +1,5 @@ """ - Testsuite for RNA-Design environment. +Testsuite for RNA-Design environment. """ import pytest @@ -9,13 +9,8 @@ from distance import hamming from itertools import product -from .environment import _string_difference_indices -from .environment import RnaDesignEnvironmentConfig -from .environment import _encode_dot_bracket -from .environment import _encode_pairing -from .environment import _Target -from .environment import _Design -from .environment import RnaDesignEnvironment +from learna.learna.environment import _string_difference_indices, RnaDesignEnvironmentConfig, _encode_dot_bracket, \ + _encode_pairing, _Target, _Design, RnaDesignEnvironment from RNA import fold diff --git a/src/learna/learn_to_design_rna.py b/learna/learna/learn_to_design_rna.py similarity index 95% rename from src/learna/learn_to_design_rna.py rename to learna/learna/learn_to_design_rna.py index c4b8512..e3bc463 100644 --- a/src/learna/learn_to_design_rna.py +++ b/learna/learna/learn_to_design_rna.py @@ -1,10 +1,10 @@ import multiprocessing from pathlib import Path -from .agent import NetworkConfig, get_network, AgentConfig, ppo_agent_kwargs, get_agent -from .environment import RnaDesignEnvironment, RnaDesignEnvironmentConfig +from learna.learna.agent import NetworkConfig, get_network, AgentConfig, ppo_agent_kwargs, get_agent +from learna.learna.environment import RnaDesignEnvironment, RnaDesignEnvironmentConfig -from ..tensorforce.threaded_runner import clone_worker_agent, ThreadedRunner +from learna.tensorforce.threaded_runner import clone_worker_agent, ThreadedRunner def episode_finished(stats): diff --git a/src/optimization/__init__.py b/learna/optimization/__init__.py similarity index 100% rename from src/optimization/__init__.py rename to learna/optimization/__init__.py diff --git a/src/optimization/bohb.py b/learna/optimization/bohb.py similarity index 95% rename from src/optimization/bohb.py rename to learna/optimization/bohb.py index 2cf4239..47175bf 100644 --- a/src/optimization/bohb.py +++ b/learna/optimization/bohb.py @@ -14,8 +14,8 @@ import hpbandster.core.result as hpres from hpbandster.optimizers import BOHB as BOHB -from src.optimization.learna_worker import LearnaWorker -from src.optimization.meta_learna_worker import MetaLearnaWorker +from learna.optimization.learna_worker import LearnaWorker +from learna.optimization.meta_learna_worker import MetaLearnaWorker parser = argparse.ArgumentParser( @@ -66,7 +66,7 @@ parser.add_argument("--mode", choices=["learna", "meta_learna"], default="learna") -# args=parser.parse_args("--run_id test --nic_name lo --shared_directory /tmp --n_cores 4 --data_dir src/data --mode L2DesignRNA".split()) +# args=parser.parse_args("--run_id test --nic_name lo --shared_directory /tmp --n_cores 4 --data_dir learna/data --mode L2DesignRNA".split()) args = parser.parse_args() os.makedirs(args.shared_directory, exist_ok=True) diff --git a/src/optimization/bohb_worker/LEARNA.py b/learna/optimization/bohb_worker/LEARNA.py similarity index 97% rename from src/optimization/bohb_worker/LEARNA.py rename to learna/optimization/bohb_worker/LEARNA.py index bacfc40..12853b7 100644 --- a/src/optimization/bohb_worker/LEARNA.py +++ b/learna/optimization/bohb_worker/LEARNA.py @@ -10,9 +10,9 @@ from hpbandster.core.worker import Worker -from src.learna.agent import NetworkConfig, get_network, AgentConfig -from src.learna.environment import RnaDesignEnvironment, RnaDesignEnvironmentConfig -from src.learna.design_rna import design_rna +from learna.learna.agent import NetworkConfig, get_network, AgentConfig +from learna.learna.environment import RnaDesignEnvironment, RnaDesignEnvironmentConfig +from learna.learna.design_rna import design_rna class DesignRNAWorker(Worker): diff --git a/src/optimization/bohb_worker/MetaLEARNA.py b/learna/optimization/bohb_worker/MetaLEARNA.py similarity index 97% rename from src/optimization/bohb_worker/MetaLEARNA.py rename to learna/optimization/bohb_worker/MetaLEARNA.py index f1230d2..b1cf676 100644 --- a/src/optimization/bohb_worker/MetaLEARNA.py +++ b/learna/optimization/bohb_worker/MetaLEARNA.py @@ -7,10 +7,10 @@ import ConfigSpace as CS from hpbandster.core.worker import Worker -from src.learna.agent import NetworkConfig, get_network, AgentConfig -from src.learna.environment import RnaDesignEnvironment, RnaDesignEnvironmentConfig -from src.learna.design_rna import design_rna -from src.learna.learn_to_design_rna import learn_to_design_rna +from learna.learna.agent import NetworkConfig, get_network, AgentConfig +from learna.learna.environment import RnaDesignEnvironment, RnaDesignEnvironmentConfig +from learna.learna.design_rna import design_rna +from learna.learna.learn_to_design_rna import learn_to_design_rna class L2DesignRNAWorker(Worker): diff --git a/src/optimization/bohb_worker/__init__.py b/learna/optimization/bohb_worker/__init__.py similarity index 100% rename from src/optimization/bohb_worker/__init__.py rename to learna/optimization/bohb_worker/__init__.py diff --git a/src/optimization/learna_worker.py b/learna/optimization/learna_worker.py similarity index 96% rename from src/optimization/learna_worker.py rename to learna/optimization/learna_worker.py index f360c46..5839d9e 100644 --- a/src/optimization/learna_worker.py +++ b/learna/optimization/learna_worker.py @@ -10,10 +10,10 @@ from hpbandster.core.worker import Worker -from src.learna.agent import NetworkConfig, get_network, AgentConfig -from src.learna.environment import RnaDesignEnvironment, RnaDesignEnvironmentConfig -from src.learna.design_rna import design_rna -from src.data.parse_dot_brackets import parse_dot_brackets +from learna.learna.agent import NetworkConfig, get_network, AgentConfig +from learna.learna.environment import RnaDesignEnvironment, RnaDesignEnvironmentConfig +from learna.learna.design_rna import design_rna +from learna.data.parse_dot_brackets import parse_dot_brackets class LearnaWorker(Worker): diff --git a/src/optimization/meta_learna_worker.py b/learna/optimization/meta_learna_worker.py similarity index 96% rename from src/optimization/meta_learna_worker.py rename to learna/optimization/meta_learna_worker.py index 52414d2..60afb73 100644 --- a/src/optimization/meta_learna_worker.py +++ b/learna/optimization/meta_learna_worker.py @@ -7,11 +7,11 @@ import ConfigSpace as CS from hpbandster.core.worker import Worker -from src.learna.agent import NetworkConfig, get_network, AgentConfig -from src.learna.environment import RnaDesignEnvironment, RnaDesignEnvironmentConfig -from src.learna.design_rna import design_rna -from src.learna.learn_to_design_rna import learn_to_design_rna -from src.data.parse_dot_brackets import parse_dot_brackets +from learna.learna.agent import NetworkConfig, get_network, AgentConfig +from learna.learna.environment import RnaDesignEnvironment, RnaDesignEnvironmentConfig +from learna.learna.design_rna import design_rna +from learna.learna.learn_to_design_rna import learn_to_design_rna +from learna.data.parse_dot_brackets import parse_dot_brackets class MetaLearnaWorker(Worker): diff --git a/learna/tensorforce/__init__.py b/learna/tensorforce/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/tensorforce/runner.py b/learna/tensorforce/runner.py similarity index 100% rename from src/tensorforce/runner.py rename to learna/tensorforce/runner.py diff --git a/src/tensorforce/threaded_runner.py b/learna/tensorforce/threaded_runner.py similarity index 100% rename from src/tensorforce/threaded_runner.py rename to learna/tensorforce/threaded_runner.py diff --git a/setup.py b/setup.py new file mode 100755 index 0000000..53812b7 --- /dev/null +++ b/setup.py @@ -0,0 +1,46 @@ +# -*- encoding: utf-8 -*- + +import setuptools + +def read_file(file_name): + with open(file_name, encoding='utf-8') as fh: + text = fh.read() + return text + + +def get_version(file_name): + with open(file_name, 'r') as fh: + for line in fh.readlines(): + if "__version__" in line: + return line.split()[2].replace('\'', '') + +setuptools.setup( + name='learna', + author_email='rungef@informatik.uni-freiburg.de', + description='End-to-end RNA Design using deep reinforcement learning', + long_description=read_file('README.md'), + long_description_content_type='text/markdown', + license='Apache-2.0', + url='https://github.com/automl/learna', + project_urls={'Source Code': 'https://github.com/automl/learna'}, + version=get_version('learna/__init__.py'), + packages=setuptools.find_packages(exclude=['*.tests', '*.tests.*', 'tests.*', 'tests'],), + python_requires='>=3', + platforms=['Linux'], + classifiers=['Programming Language :: Python :: 3', + 'Programming Language :: Python :: 3.5', + 'Programming Language :: Python :: 3.6', + 'Programming Language :: Python :: 3.7', + 'Development Status :: 4 - Beta', + 'Natural Language :: English', + 'Environment :: Console', + 'Environment :: GPU', + 'Intended Audience :: Developers', + 'Intended Audience :: Education', + 'Intended Audience :: Science/Research', + 'License :: OSI Approved :: Apache Software License', + 'Operating System :: POSIX :: Linux', + 'Topic :: Scientific/Engineering', + 'Topic :: Scientific/Engineering :: Artificial Intelligence', + 'Topic :: Scientific/Engineering :: Bio-Informatics'] +) diff --git a/utils/execution_scripts/LEARNA-10min.sh b/utils/execution_scripts/LEARNA-10min.sh index db7dc61..4bfe3fe 100755 --- a/utils/execution_scripts/LEARNA-10min.sh +++ b/utils/execution_scripts/LEARNA-10min.sh @@ -2,7 +2,7 @@ TARGET_STRUCTURE_PATH=$1 source thirdparty/miniconda/miniconda/bin/activate learna -/usr/bin/time -f"%U" python -m src.learna.design_rna \ +/usr/bin/time -f"%U" python -m learna.learna.design_rna \ --batch_size 32 \ --conv_channels 8 1 \ --embedding_size 0 \ diff --git a/utils/execution_scripts/LEARNA-30min.sh b/utils/execution_scripts/LEARNA-30min.sh index 94e4bb9..ba85f19 100755 --- a/utils/execution_scripts/LEARNA-30min.sh +++ b/utils/execution_scripts/LEARNA-30min.sh @@ -2,7 +2,7 @@ TARGET_STRUCTURE_PATH=$1 source thirdparty/miniconda/miniconda/bin/activate learna -/usr/bin/time -f"%U" python -m src.learna.design_rna \ +/usr/bin/time -f"%U" python -m learna.learna.design_rna \ --batch_size 79 \ --conv_channels 10 3 \ --embedding_size 0 \ diff --git a/utils/execution_scripts/LEARNA.sh b/utils/execution_scripts/LEARNA.sh index e53f783..d0b82e9 100755 --- a/utils/execution_scripts/LEARNA.sh +++ b/utils/execution_scripts/LEARNA.sh @@ -2,7 +2,7 @@ TARGET_STRUCTURE_PATH=$1 source thirdparty/miniconda/miniconda/bin/activate learna -/usr/bin/time -f"%U" python -m src.learna.design_rna \ +/usr/bin/time -f"%U" python -m learna.learna.design_rna \ --mutation_threshold 5 \ --batch_size 126 \ --conv_sizes 17 5 \ diff --git a/utils/execution_scripts/Meta-LEARNA-Adapt.sh b/utils/execution_scripts/Meta-LEARNA-Adapt.sh index c2fc374..628cbc4 100755 --- a/utils/execution_scripts/Meta-LEARNA-Adapt.sh +++ b/utils/execution_scripts/Meta-LEARNA-Adapt.sh @@ -2,7 +2,7 @@ TARGET_STRUCTURE_PATH=$1 source thirdparty/miniconda/miniconda/bin/activate learna -/usr/bin/time -f"%U" python -m src.learna.design_rna \ +/usr/bin/time -f"%U" python -m learna.learna.design_rna \ --mutation_threshold 5 \ --batch_size 123 \ --conv_sizes 11 3 \ diff --git a/utils/execution_scripts/Meta-LEARNA.sh b/utils/execution_scripts/Meta-LEARNA.sh index 0a375f1..74397c7 100755 --- a/utils/execution_scripts/Meta-LEARNA.sh +++ b/utils/execution_scripts/Meta-LEARNA.sh @@ -2,7 +2,7 @@ TARGET_STRUCTURE_PATH=$1 source thirdparty/miniconda/miniconda/bin/activate learna -/usr/bin/time -f"%U" python -m src.learna.design_rna \ +/usr/bin/time -f"%U" python -m learna.learna.design_rna \ --mutation_threshold 5 \ --batch_size 123 \ --conv_sizes 11 3 \