From 6756a06ffcaab803e8a5b6cb09fb5b0e09888bd2 Mon Sep 17 00:00:00 2001 From: "Chang.Liu" Date: Sat, 8 Jun 2019 19:57:09 +0900 Subject: [PATCH] Add contribtion (#125) * add Frozen Featurizer descriptor * add Mordred descriptor --- licences/{placeholder => .gitkeep} | 0 requirements.txt | 1 + .../descriptor/test_mordred.py | 60 ++++++++++++++++++ tests/foo/descriptor/test_foo.py | 8 ++- travis/linux-win/py36.yml | 1 + travis/linux-win/py37.yml | 1 + travis/osx/py36.yml | 1 + travis/osx/py37.yml | 1 + xenonpy/contrib/.DS_Store | Bin 0 -> 6148 bytes xenonpy/contrib/README.md | 7 +- xenonpy/contrib/extend_descriptors/README.md | 20 ++++++ .../contrib/extend_descriptors/__init__.py | 3 + .../extend_descriptors/descriptor/__init__.py | 6 ++ .../frozen_featurizer_descriptor.py | 45 +++++++++++++ .../descriptor/mordred_descriptor.py | 39 ++++++++++++ xenonpy/contrib/foo/__init__.py | 2 - xenonpy/contrib/foo/descriptor/__init__.py | 5 ++ xenonpy/contrib/foo/{ => descriptor}/foo.py | 2 +- xenonpy/descriptor/compositions.py | 1 + xenonpy/descriptor/fingerprint.py | 29 ++++++--- xenonpy/descriptor/frozen_featurizer.py | 1 + xenonpy/descriptor/structure.py | 23 +++++++ 22 files changed, 241 insertions(+), 15 deletions(-) rename licences/{placeholder => .gitkeep} (100%) create mode 100644 tests/extend_descriptors/descriptor/test_mordred.py create mode 100644 xenonpy/contrib/.DS_Store create mode 100644 xenonpy/contrib/extend_descriptors/README.md create mode 100644 xenonpy/contrib/extend_descriptors/__init__.py create mode 100644 xenonpy/contrib/extend_descriptors/descriptor/__init__.py create mode 100644 xenonpy/contrib/extend_descriptors/descriptor/frozen_featurizer_descriptor.py create mode 100644 xenonpy/contrib/extend_descriptors/descriptor/mordred_descriptor.py create mode 100644 xenonpy/contrib/foo/descriptor/__init__.py rename xenonpy/contrib/foo/{ => descriptor}/foo.py (73%) diff --git a/licences/placeholder b/licences/.gitkeep similarity index 100% rename from licences/placeholder rename to licences/.gitkeep diff --git a/requirements.txt b/requirements.txt index cd20fb0d..587c0fea 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,6 +3,7 @@ tqdm seaborn plotly requests +mordred ###### Requirements with Version Specifiers ###### numpy == 1.16.* diff --git a/tests/extend_descriptors/descriptor/test_mordred.py b/tests/extend_descriptors/descriptor/test_mordred.py new file mode 100644 index 00000000..5d6cde2a --- /dev/null +++ b/tests/extend_descriptors/descriptor/test_mordred.py @@ -0,0 +1,60 @@ +# Copyright (c) 2019. TsumiNa. All rights reserved. +# Use of this source code is governed by a BSD-style +# license that can be found in the LICENSE file. + +import pandas as pd +import pytest +from mordred._base.pandas_module import MordredDataFrame +from rdkit import Chem + +from xenonpy.contrib.extend_descriptors.descriptor import Mordred2DDescriptor + + +@pytest.fixture(scope='module') +def data(): + # ignore numpy warning + import warnings + print('ignore NumPy RuntimeWarning\n') + warnings.filterwarnings("ignore", message="numpy.dtype size changed") + warnings.filterwarnings("ignore", message="numpy.ndarray size changed") + + smis = ['C(C(O)C1(O))C(CO)OC1O', + 'CC(C1=CC=CC=C1)CC(C2=CC=CC=C2)CC(C3=CC=CC=C3)CC(C4=CC=CC=C4)', + ' CC(C)CC(C)CC(C)', + 'C(F)C(F)(F)'] + + mols = [Chem.MolFromSmiles(s) for s in smis] + + err_smis = ['C(C(O)C1(O))C(CO)OC1O', + 'CC(C1=CC=CC=C1)CC(C2=CC=CC=C2)CC(C3=CC=', + 'Ccccccc', + 'C(F)C(F)(F)'] + yield dict(smis=smis, mols=mols, err_smis=err_smis) + + print('test over') + + +def test_mordred_1(data): + mordred = Mordred2DDescriptor() + desc = mordred.transform(data['smis']) + assert isinstance(desc, MordredDataFrame) + + mordred = Mordred2DDescriptor(return_type='df') + desc = mordred.transform(data['smis']) + assert isinstance(desc, pd.DataFrame) + + +def test_mordred_2(data): + mordred = Mordred2DDescriptor() + desc = mordred.transform(data['mols']) + assert isinstance(desc, MordredDataFrame) + + +def test_mordred_3(data): + mordred = Mordred2DDescriptor() + with pytest.raises(ValueError): + mordred.transform(data['err_smis']) + + +if __name__ == "__main__": + pytest.main() diff --git a/tests/foo/descriptor/test_foo.py b/tests/foo/descriptor/test_foo.py index 3a388599..693d6838 100644 --- a/tests/foo/descriptor/test_foo.py +++ b/tests/foo/descriptor/test_foo.py @@ -2,8 +2,14 @@ # Use of this source code is governed by a BSD-style # license that can be found in the LICENSE file. -from xenonpy.contrib.foo import hello_contrib +import pytest + +from xenonpy.contrib.foo.descriptor import hello_contrib def test_foo_1(): assert hello_contrib() == 'Hello contribution!' + + +if __name__ == "__main__": + pytest.main() diff --git a/travis/linux-win/py36.yml b/travis/linux-win/py36.yml index e4b3af0d..8d630c7f 100644 --- a/travis/linux-win/py36.yml +++ b/travis/linux-win/py36.yml @@ -18,5 +18,6 @@ dependencies: - pip - pip: - ruamel.yaml + - mordred - pymatgen==2019.5.8 - tqdm diff --git a/travis/linux-win/py37.yml b/travis/linux-win/py37.yml index 48707e52..33d29396 100644 --- a/travis/linux-win/py37.yml +++ b/travis/linux-win/py37.yml @@ -18,5 +18,6 @@ dependencies: - pip - pip: - ruamel.yaml + - mordred - pymatgen==2019.5.8 - tqdm diff --git a/travis/osx/py36.yml b/travis/osx/py36.yml index 55efae91..0ee2139e 100644 --- a/travis/osx/py36.yml +++ b/travis/osx/py36.yml @@ -18,5 +18,6 @@ dependencies: - pip - pip: - ruamel.yaml + - mordred - pymatgen==2019.5.8 - tqdm diff --git a/travis/osx/py37.yml b/travis/osx/py37.yml index 21d512df..4031b00b 100644 --- a/travis/osx/py37.yml +++ b/travis/osx/py37.yml @@ -18,5 +18,6 @@ dependencies: - pip - pip: - ruamel.yaml + - mordred - pymatgen==2019.5.8 - tqdm diff --git a/xenonpy/contrib/.DS_Store b/xenonpy/contrib/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..36e759217000a43b502425b55ea1ae8847a828bc GIT binary patch literal 6148 zcmeHKu};H44E2=`MJ#0j#B{&VKZvTp#?+AoltfU8kSH_@Q+9rUpWr{3*_ikhp3hcD zl_G@-Aq2K$zl-mDsh_2|CL%Yl(;3l}h$c|R(Jsse;eFPgjMT%MF5HpPEuB(Em$d4g zHpg#dfNOV*npITLJu3H6zZ$+}@KqFJ=Z=!#DN);ks++6XA}R8+lhjuC_D7^ z0wvVxh~Xq0ey`^u#YRxV$?5Rn^vzBu6c^r(`+Yc0E)q0r3>X9J4D86`l>7h5=kx!1 zkUbd##=xIqz>VWYJV#2}TYJfIul3LiC<~u!1ltfSLMz5uZpBB?An