Spaces:
Sleeping
Sleeping
Farnaz Heidar-Zadeh
commited on
Commit
·
22e9d3d
1
Parent(s):
b3e7016
Update HEADER
Browse files- HEADER +6 -6
- doc/conf.py +6 -6
- doc/getting_started.rst +25 -0
- doc/index.rst +25 -0
- selector/__init__.py +6 -6
- selector/_version.py +7 -9
- selector/converter.py +6 -6
- selector/distance.py +6 -6
- selector/diversity.py +6 -6
- selector/methods/__init__.py +6 -6
- selector/methods/base.py +6 -6
- selector/methods/dissimilarity.py +7 -6
- selector/methods/partition.py +8 -8
- selector/methods/similarity.py +7 -7
- selector/methods/tests/__init__.py +22 -0
- selector/methods/tests/common.py +7 -6
- selector/methods/tests/test_dissimilarity.py +7 -7
- selector/methods/tests/test_partition.py +18 -17
- selector/methods/utils.py +8 -7
- selector/tests/__init__.py +7 -7
- selector/tests/common.py +12 -14
- selector/tests/test_converter.py +7 -8
- selector/tests/test_distance.py +8 -9
- selector/tests/test_diversity.py +7 -7
- selector/tests/test_similarity.py +8 -8
- setup.py +6 -6
- versioneer.py +160 -101
HEADER
CHANGED
@@ -1,17 +1,17 @@
|
|
1 |
# -*- coding: utf-8 -*-
|
2 |
-
# The
|
3 |
-
# subset
|
4 |
#
|
5 |
-
# Copyright (C)
|
6 |
#
|
7 |
-
# This file is part of
|
8 |
#
|
9 |
-
#
|
10 |
# modify it under the terms of the GNU General Public License
|
11 |
# as published by the Free Software Foundation; either version 3
|
12 |
# of the License, or (at your option) any later version.
|
13 |
#
|
14 |
-
#
|
15 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
# GNU General Public License for more details.
|
|
|
1 |
# -*- coding: utf-8 -*-
|
2 |
+
# The Selector library provides a set of tools for selecting a
|
3 |
+
# subset of the dataset and computing diversity.
|
4 |
#
|
5 |
+
# Copyright (C) 2023 The QC-Devs Community
|
6 |
#
|
7 |
+
# This file is part of Selector.
|
8 |
#
|
9 |
+
# Selector is free software; you can redistribute it and/or
|
10 |
# modify it under the terms of the GNU General Public License
|
11 |
# as published by the Free Software Foundation; either version 3
|
12 |
# of the License, or (at your option) any later version.
|
13 |
#
|
14 |
+
# Selector is distributed in the hope that it will be useful,
|
15 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
# GNU General Public License for more details.
|
doc/conf.py
CHANGED
@@ -1,17 +1,17 @@
|
|
1 |
# -*- coding: utf-8 -*-
|
2 |
-
# The
|
3 |
-
#
|
4 |
#
|
5 |
-
# Copyright (C)
|
6 |
#
|
7 |
-
# This file is part of
|
8 |
#
|
9 |
-
#
|
10 |
# modify it under the terms of the GNU General Public License
|
11 |
# as published by the Free Software Foundation; either version 3
|
12 |
# of the License, or (at your option) any later version.
|
13 |
#
|
14 |
-
#
|
15 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
# GNU General Public License for more details.
|
|
|
1 |
# -*- coding: utf-8 -*-
|
2 |
+
# The Selector library provides a set of tools for selecting a
|
3 |
+
# subset of the dataset and computing diversity.
|
4 |
#
|
5 |
+
# Copyright (C) 2023 The QC-Devs Community
|
6 |
#
|
7 |
+
# This file is part of Selector.
|
8 |
#
|
9 |
+
# Selector is free software; you can redistribute it and/or
|
10 |
# modify it under the terms of the GNU General Public License
|
11 |
# as published by the Free Software Foundation; either version 3
|
12 |
# of the License, or (at your option) any later version.
|
13 |
#
|
14 |
+
# Selector is distributed in the hope that it will be useful,
|
15 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
# GNU General Public License for more details.
|
doc/getting_started.rst
CHANGED
@@ -1,3 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
Getting Started
|
2 |
===============
|
3 |
|
|
|
1 |
+
..
|
2 |
+
: # -*- coding: utf-8 -*-
|
3 |
+
: # The Selector library provides a set of tools for selecting a
|
4 |
+
: # subset of the dataset and computing diversity.
|
5 |
+
: #
|
6 |
+
: # Copyright (C) 2023 The QC-Devs Community
|
7 |
+
: #
|
8 |
+
: # This file is part of Selector.
|
9 |
+
: #
|
10 |
+
: # Selector is free software; you can redistribute it and/or
|
11 |
+
: # modify it under the terms of the GNU General Public License
|
12 |
+
: # as published by the Free Software Foundation; either version 3
|
13 |
+
: # of the License, or (at your option) any later version.
|
14 |
+
: #
|
15 |
+
: # Selector is distributed in the hope that it will be useful,
|
16 |
+
: # but WITHOUT ANY WARRANTY; without even the implied warranty of
|
17 |
+
: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
18 |
+
: # GNU General Public License for more details.
|
19 |
+
: #
|
20 |
+
: # You should have received a copy of the GNU General Public License
|
21 |
+
: # along with this program; if not, see <http://www.gnu.org/licenses/>
|
22 |
+
: #
|
23 |
+
: # --
|
24 |
+
: --
|
25 |
+
|
26 |
Getting Started
|
27 |
===============
|
28 |
|
doc/index.rst
CHANGED
@@ -1,3 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
.. DiverseSelector documentation master file, created by
|
2 |
sphinx-quickstart on Thu Mar 15 13:55:56 2018.
|
3 |
You can adapt this file completely to your liking, but it should at least
|
|
|
1 |
+
..
|
2 |
+
: # -*- coding: utf-8 -*-
|
3 |
+
: # The Selector library provides a set of tools for selecting a
|
4 |
+
: # subset of the dataset and computing diversity.
|
5 |
+
: #
|
6 |
+
: # Copyright (C) 2023 The QC-Devs Community
|
7 |
+
: #
|
8 |
+
: # This file is part of Selector.
|
9 |
+
: #
|
10 |
+
: # Selector is free software; you can redistribute it and/or
|
11 |
+
: # modify it under the terms of the GNU General Public License
|
12 |
+
: # as published by the Free Software Foundation; either version 3
|
13 |
+
: # of the License, or (at your option) any later version.
|
14 |
+
: #
|
15 |
+
: # Selector is distributed in the hope that it will be useful,
|
16 |
+
: # but WITHOUT ANY WARRANTY; without even the implied warranty of
|
17 |
+
: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
18 |
+
: # GNU General Public License for more details.
|
19 |
+
: #
|
20 |
+
: # You should have received a copy of the GNU General Public License
|
21 |
+
: # along with this program; if not, see <http://www.gnu.org/licenses/>
|
22 |
+
: #
|
23 |
+
: # --
|
24 |
+
: --
|
25 |
+
|
26 |
.. DiverseSelector documentation master file, created by
|
27 |
sphinx-quickstart on Thu Mar 15 13:55:56 2018.
|
28 |
You can adapt this file completely to your liking, but it should at least
|
selector/__init__.py
CHANGED
@@ -1,17 +1,17 @@
|
|
1 |
# -*- coding: utf-8 -*-
|
2 |
-
# The
|
3 |
-
# subset
|
4 |
#
|
5 |
-
# Copyright (C)
|
6 |
#
|
7 |
-
# This file is part of
|
8 |
#
|
9 |
-
#
|
10 |
# modify it under the terms of the GNU General Public License
|
11 |
# as published by the Free Software Foundation; either version 3
|
12 |
# of the License, or (at your option) any later version.
|
13 |
#
|
14 |
-
#
|
15 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
# GNU General Public License for more details.
|
|
|
1 |
# -*- coding: utf-8 -*-
|
2 |
+
# The Selector library provides a set of tools for selecting a
|
3 |
+
# subset of the dataset and computing diversity.
|
4 |
#
|
5 |
+
# Copyright (C) 2023 The QC-Devs Community
|
6 |
#
|
7 |
+
# This file is part of Selector.
|
8 |
#
|
9 |
+
# Selector is free software; you can redistribute it and/or
|
10 |
# modify it under the terms of the GNU General Public License
|
11 |
# as published by the Free Software Foundation; either version 3
|
12 |
# of the License, or (at your option) any later version.
|
13 |
#
|
14 |
+
# Selector is distributed in the hope that it will be useful,
|
15 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
# GNU General Public License for more details.
|
selector/_version.py
CHANGED
@@ -1,17 +1,17 @@
|
|
1 |
# -*- coding: utf-8 -*-
|
2 |
-
# The
|
3 |
-
# subset
|
4 |
#
|
5 |
-
# Copyright (C)
|
6 |
#
|
7 |
-
# This file is part of
|
8 |
#
|
9 |
-
#
|
10 |
# modify it under the terms of the GNU General Public License
|
11 |
# as published by the Free Software Foundation; either version 3
|
12 |
# of the License, or (at your option) any later version.
|
13 |
#
|
14 |
-
#
|
15 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
# GNU General Public License for more details.
|
@@ -348,9 +348,7 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command):
|
|
348 |
pieces["distance"] = int(count_out) # total number of commits
|
349 |
|
350 |
# commit date: see ISO-8601 comment in git_versions_from_keywords()
|
351 |
-
date = run_command(GITS, ["show", "-s", "--format=%ci", "HEAD"], cwd=root)[
|
352 |
-
0
|
353 |
-
].strip()
|
354 |
pieces["date"] = date.strip().replace(" ", "T", 1).replace(" ", "", 1)
|
355 |
|
356 |
return pieces
|
|
|
1 |
# -*- coding: utf-8 -*-
|
2 |
+
# The Selector library provides a set of tools for selecting a
|
3 |
+
# subset of the dataset and computing diversity.
|
4 |
#
|
5 |
+
# Copyright (C) 2023 The QC-Devs Community
|
6 |
#
|
7 |
+
# This file is part of Selector.
|
8 |
#
|
9 |
+
# Selector is free software; you can redistribute it and/or
|
10 |
# modify it under the terms of the GNU General Public License
|
11 |
# as published by the Free Software Foundation; either version 3
|
12 |
# of the License, or (at your option) any later version.
|
13 |
#
|
14 |
+
# Selector is distributed in the hope that it will be useful,
|
15 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
# GNU General Public License for more details.
|
|
|
348 |
pieces["distance"] = int(count_out) # total number of commits
|
349 |
|
350 |
# commit date: see ISO-8601 comment in git_versions_from_keywords()
|
351 |
+
date = run_command(GITS, ["show", "-s", "--format=%ci", "HEAD"], cwd=root)[0].strip()
|
|
|
|
|
352 |
pieces["date"] = date.strip().replace(" ", "T", 1).replace(" ", "", 1)
|
353 |
|
354 |
return pieces
|
selector/converter.py
CHANGED
@@ -1,17 +1,17 @@
|
|
1 |
# -*- coding: utf-8 -*-
|
2 |
-
# The
|
3 |
-
# subset
|
4 |
#
|
5 |
-
# Copyright (C)
|
6 |
#
|
7 |
-
# This file is part of
|
8 |
#
|
9 |
-
#
|
10 |
# modify it under the terms of the GNU General Public License
|
11 |
# as published by the Free Software Foundation; either version 3
|
12 |
# of the License, or (at your option) any later version.
|
13 |
#
|
14 |
-
#
|
15 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
# GNU General Public License for more details.
|
|
|
1 |
# -*- coding: utf-8 -*-
|
2 |
+
# The Selector library provides a set of tools for selecting a
|
3 |
+
# subset of the dataset and computing diversity.
|
4 |
#
|
5 |
+
# Copyright (C) 2023 The QC-Devs Community
|
6 |
#
|
7 |
+
# This file is part of Selector.
|
8 |
#
|
9 |
+
# Selector is free software; you can redistribute it and/or
|
10 |
# modify it under the terms of the GNU General Public License
|
11 |
# as published by the Free Software Foundation; either version 3
|
12 |
# of the License, or (at your option) any later version.
|
13 |
#
|
14 |
+
# Selector is distributed in the hope that it will be useful,
|
15 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
# GNU General Public License for more details.
|
selector/distance.py
CHANGED
@@ -1,17 +1,17 @@
|
|
1 |
# -*- coding: utf-8 -*-
|
2 |
-
# The
|
3 |
-
# subset
|
4 |
#
|
5 |
-
# Copyright (C)
|
6 |
#
|
7 |
-
# This file is part of
|
8 |
#
|
9 |
-
#
|
10 |
# modify it under the terms of the GNU General Public License
|
11 |
# as published by the Free Software Foundation; either version 3
|
12 |
# of the License, or (at your option) any later version.
|
13 |
#
|
14 |
-
#
|
15 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
# GNU General Public License for more details.
|
|
|
1 |
# -*- coding: utf-8 -*-
|
2 |
+
# The Selector library provides a set of tools for selecting a
|
3 |
+
# subset of the dataset and computing diversity.
|
4 |
#
|
5 |
+
# Copyright (C) 2023 The QC-Devs Community
|
6 |
#
|
7 |
+
# This file is part of Selector.
|
8 |
#
|
9 |
+
# Selector is free software; you can redistribute it and/or
|
10 |
# modify it under the terms of the GNU General Public License
|
11 |
# as published by the Free Software Foundation; either version 3
|
12 |
# of the License, or (at your option) any later version.
|
13 |
#
|
14 |
+
# Selector is distributed in the hope that it will be useful,
|
15 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
# GNU General Public License for more details.
|
selector/diversity.py
CHANGED
@@ -1,17 +1,17 @@
|
|
1 |
# -*- coding: utf-8 -*-
|
2 |
-
# The
|
3 |
-
# subset
|
4 |
#
|
5 |
-
# Copyright (C)
|
6 |
#
|
7 |
-
# This file is part of
|
8 |
#
|
9 |
-
#
|
10 |
# modify it under the terms of the GNU General Public License
|
11 |
# as published by the Free Software Foundation; either version 3
|
12 |
# of the License, or (at your option) any later version.
|
13 |
#
|
14 |
-
#
|
15 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
# GNU General Public License for more details.
|
|
|
1 |
# -*- coding: utf-8 -*-
|
2 |
+
# The Selector library provides a set of tools for selecting a
|
3 |
+
# subset of the dataset and computing diversity.
|
4 |
#
|
5 |
+
# Copyright (C) 2023 The QC-Devs Community
|
6 |
#
|
7 |
+
# This file is part of Selector.
|
8 |
#
|
9 |
+
# Selector is free software; you can redistribute it and/or
|
10 |
# modify it under the terms of the GNU General Public License
|
11 |
# as published by the Free Software Foundation; either version 3
|
12 |
# of the License, or (at your option) any later version.
|
13 |
#
|
14 |
+
# Selector is distributed in the hope that it will be useful,
|
15 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
# GNU General Public License for more details.
|
selector/methods/__init__.py
CHANGED
@@ -1,17 +1,17 @@
|
|
1 |
# -*- coding: utf-8 -*-
|
2 |
-
# The
|
3 |
-
# subset
|
4 |
#
|
5 |
-
# Copyright (C)
|
6 |
#
|
7 |
-
# This file is part of
|
8 |
#
|
9 |
-
#
|
10 |
# modify it under the terms of the GNU General Public License
|
11 |
# as published by the Free Software Foundation; either version 3
|
12 |
# of the License, or (at your option) any later version.
|
13 |
#
|
14 |
-
#
|
15 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
# GNU General Public License for more details.
|
|
|
1 |
# -*- coding: utf-8 -*-
|
2 |
+
# The Selector library provides a set of tools for selecting a
|
3 |
+
# subset of the dataset and computing diversity.
|
4 |
#
|
5 |
+
# Copyright (C) 2023 The QC-Devs Community
|
6 |
#
|
7 |
+
# This file is part of Selector.
|
8 |
#
|
9 |
+
# Selector is free software; you can redistribute it and/or
|
10 |
# modify it under the terms of the GNU General Public License
|
11 |
# as published by the Free Software Foundation; either version 3
|
12 |
# of the License, or (at your option) any later version.
|
13 |
#
|
14 |
+
# Selector is distributed in the hope that it will be useful,
|
15 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
# GNU General Public License for more details.
|
selector/methods/base.py
CHANGED
@@ -1,17 +1,17 @@
|
|
1 |
# -*- coding: utf-8 -*-
|
2 |
-
# The
|
3 |
-
# subset
|
4 |
#
|
5 |
-
# Copyright (C)
|
6 |
#
|
7 |
-
# This file is part of
|
8 |
#
|
9 |
-
#
|
10 |
# modify it under the terms of the GNU General Public License
|
11 |
# as published by the Free Software Foundation; either version 3
|
12 |
# of the License, or (at your option) any later version.
|
13 |
#
|
14 |
-
#
|
15 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
# GNU General Public License for more details.
|
|
|
1 |
# -*- coding: utf-8 -*-
|
2 |
+
# The Selector library provides a set of tools for selecting a
|
3 |
+
# subset of the dataset and computing diversity.
|
4 |
#
|
5 |
+
# Copyright (C) 2023 The QC-Devs Community
|
6 |
#
|
7 |
+
# This file is part of Selector.
|
8 |
#
|
9 |
+
# Selector is free software; you can redistribute it and/or
|
10 |
# modify it under the terms of the GNU General Public License
|
11 |
# as published by the Free Software Foundation; either version 3
|
12 |
# of the License, or (at your option) any later version.
|
13 |
#
|
14 |
+
# Selector is distributed in the hope that it will be useful,
|
15 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
# GNU General Public License for more details.
|
selector/methods/dissimilarity.py
CHANGED
@@ -1,16 +1,17 @@
|
|
1 |
-
#
|
2 |
-
#
|
|
|
3 |
#
|
4 |
-
# Copyright (C)
|
5 |
#
|
6 |
-
# This file is part of
|
7 |
#
|
8 |
-
#
|
9 |
# modify it under the terms of the GNU General Public License
|
10 |
# as published by the Free Software Foundation; either version 3
|
11 |
# of the License, or (at your option) any later version.
|
12 |
#
|
13 |
-
#
|
14 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
16 |
# GNU General Public License for more details.
|
|
|
1 |
+
# -*- coding: utf-8 -*-
|
2 |
+
# The Selector library provides a set of tools for selecting a
|
3 |
+
# subset of the dataset and computing diversity.
|
4 |
#
|
5 |
+
# Copyright (C) 2023 The QC-Devs Community
|
6 |
#
|
7 |
+
# This file is part of Selector.
|
8 |
#
|
9 |
+
# Selector is free software; you can redistribute it and/or
|
10 |
# modify it under the terms of the GNU General Public License
|
11 |
# as published by the Free Software Foundation; either version 3
|
12 |
# of the License, or (at your option) any later version.
|
13 |
#
|
14 |
+
# Selector is distributed in the hope that it will be useful,
|
15 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
# GNU General Public License for more details.
|
selector/methods/partition.py
CHANGED
@@ -1,16 +1,17 @@
|
|
1 |
-
#
|
2 |
-
#
|
|
|
3 |
#
|
4 |
-
# Copyright (C)
|
5 |
#
|
6 |
-
# This file is part of
|
7 |
#
|
8 |
-
#
|
9 |
# modify it under the terms of the GNU General Public License
|
10 |
# as published by the Free Software Foundation; either version 3
|
11 |
# of the License, or (at your option) any later version.
|
12 |
#
|
13 |
-
#
|
14 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
16 |
# GNU General Public License for more details.
|
@@ -19,7 +20,6 @@
|
|
19 |
# along with this program; if not, see <http://www.gnu.org/licenses/>
|
20 |
#
|
21 |
# --
|
22 |
-
|
23 |
"""Module for Partition-Based Selection Methods."""
|
24 |
|
25 |
import collections
|
@@ -29,7 +29,7 @@ import bitarray
|
|
29 |
import scipy.spatial
|
30 |
|
31 |
from selector.methods.base import SelectionBase
|
32 |
-
from selector.diversity import compute_diversity
|
33 |
from selector.methods.utils import optimize_radius
|
34 |
import numpy as np
|
35 |
from scipy import spatial
|
|
|
1 |
+
# -*- coding: utf-8 -*-
|
2 |
+
# The Selector library provides a set of tools for selecting a
|
3 |
+
# subset of the dataset and computing diversity.
|
4 |
#
|
5 |
+
# Copyright (C) 2023 The QC-Devs Community
|
6 |
#
|
7 |
+
# This file is part of Selector.
|
8 |
#
|
9 |
+
# Selector is free software; you can redistribute it and/or
|
10 |
# modify it under the terms of the GNU General Public License
|
11 |
# as published by the Free Software Foundation; either version 3
|
12 |
# of the License, or (at your option) any later version.
|
13 |
#
|
14 |
+
# Selector is distributed in the hope that it will be useful,
|
15 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
# GNU General Public License for more details.
|
|
|
20 |
# along with this program; if not, see <http://www.gnu.org/licenses/>
|
21 |
#
|
22 |
# --
|
|
|
23 |
"""Module for Partition-Based Selection Methods."""
|
24 |
|
25 |
import collections
|
|
|
29 |
import scipy.spatial
|
30 |
|
31 |
from selector.methods.base import SelectionBase
|
32 |
+
from selector.diversity import compute_diversity
|
33 |
from selector.methods.utils import optimize_radius
|
34 |
import numpy as np
|
35 |
from scipy import spatial
|
selector/methods/similarity.py
CHANGED
@@ -1,16 +1,17 @@
|
|
1 |
-
#
|
2 |
-
#
|
|
|
3 |
#
|
4 |
-
# Copyright (C)
|
5 |
#
|
6 |
-
# This file is part of
|
7 |
#
|
8 |
-
#
|
9 |
# modify it under the terms of the GNU General Public License
|
10 |
# as published by the Free Software Foundation; either version 3
|
11 |
# of the License, or (at your option) any later version.
|
12 |
#
|
13 |
-
#
|
14 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
16 |
# GNU General Public License for more details.
|
@@ -19,7 +20,6 @@
|
|
19 |
# along with this program; if not, see <http://www.gnu.org/licenses/>
|
20 |
#
|
21 |
# --
|
22 |
-
|
23 |
"""Module for Similarity-Based Selection Methods.
|
24 |
|
25 |
This module contains the classes and functions for the similarity-based selection methods. To select
|
|
|
1 |
+
# -*- coding: utf-8 -*-
|
2 |
+
# The Selector library provides a set of tools for selecting a
|
3 |
+
# subset of the dataset and computing diversity.
|
4 |
#
|
5 |
+
# Copyright (C) 2023 The QC-Devs Community
|
6 |
#
|
7 |
+
# This file is part of Selector.
|
8 |
#
|
9 |
+
# Selector is free software; you can redistribute it and/or
|
10 |
# modify it under the terms of the GNU General Public License
|
11 |
# as published by the Free Software Foundation; either version 3
|
12 |
# of the License, or (at your option) any later version.
|
13 |
#
|
14 |
+
# Selector is distributed in the hope that it will be useful,
|
15 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
# GNU General Public License for more details.
|
|
|
20 |
# along with this program; if not, see <http://www.gnu.org/licenses/>
|
21 |
#
|
22 |
# --
|
|
|
23 |
"""Module for Similarity-Based Selection Methods.
|
24 |
|
25 |
This module contains the classes and functions for the similarity-based selection methods. To select
|
selector/methods/tests/__init__.py
CHANGED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# -*- coding: utf-8 -*-
|
2 |
+
# The Selector library provides a set of tools for selecting a
|
3 |
+
# subset of the dataset and computing diversity.
|
4 |
+
#
|
5 |
+
# Copyright (C) 2023 The QC-Devs Community
|
6 |
+
#
|
7 |
+
# This file is part of Selector.
|
8 |
+
#
|
9 |
+
# Selector is free software; you can redistribute it and/or
|
10 |
+
# modify it under the terms of the GNU General Public License
|
11 |
+
# as published by the Free Software Foundation; either version 3
|
12 |
+
# of the License, or (at your option) any later version.
|
13 |
+
#
|
14 |
+
# Selector is distributed in the hope that it will be useful,
|
15 |
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
+
# GNU General Public License for more details.
|
18 |
+
#
|
19 |
+
# You should have received a copy of the GNU General Public License
|
20 |
+
# along with this program; if not, see <http://www.gnu.org/licenses/>
|
21 |
+
#
|
22 |
+
# --
|
selector/methods/tests/common.py
CHANGED
@@ -1,16 +1,17 @@
|
|
1 |
-
#
|
2 |
-
#
|
|
|
3 |
#
|
4 |
-
# Copyright (C)
|
5 |
#
|
6 |
-
# This file is part of
|
7 |
#
|
8 |
-
#
|
9 |
# modify it under the terms of the GNU General Public License
|
10 |
# as published by the Free Software Foundation; either version 3
|
11 |
# of the License, or (at your option) any later version.
|
12 |
#
|
13 |
-
#
|
14 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
16 |
# GNU General Public License for more details.
|
|
|
1 |
+
# -*- coding: utf-8 -*-
|
2 |
+
# The Selector library provides a set of tools for selecting a
|
3 |
+
# subset of the dataset and computing diversity.
|
4 |
#
|
5 |
+
# Copyright (C) 2023 The QC-Devs Community
|
6 |
#
|
7 |
+
# This file is part of Selector.
|
8 |
#
|
9 |
+
# Selector is free software; you can redistribute it and/or
|
10 |
# modify it under the terms of the GNU General Public License
|
11 |
# as published by the Free Software Foundation; either version 3
|
12 |
# of the License, or (at your option) any later version.
|
13 |
#
|
14 |
+
# Selector is distributed in the hope that it will be useful,
|
15 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
# GNU General Public License for more details.
|
selector/methods/tests/test_dissimilarity.py
CHANGED
@@ -1,16 +1,17 @@
|
|
1 |
-
#
|
2 |
-
#
|
|
|
3 |
#
|
4 |
-
# Copyright (C)
|
5 |
#
|
6 |
-
# This file is part of
|
7 |
#
|
8 |
-
#
|
9 |
# modify it under the terms of the GNU General Public License
|
10 |
# as published by the Free Software Foundation; either version 3
|
11 |
# of the License, or (at your option) any later version.
|
12 |
#
|
13 |
-
#
|
14 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
16 |
# GNU General Public License for more details.
|
@@ -19,7 +20,6 @@
|
|
19 |
# along with this program; if not, see <http://www.gnu.org/licenses/>
|
20 |
#
|
21 |
# --
|
22 |
-
|
23 |
"""Test Dissimilarity-Based Selection Methods."""
|
24 |
|
25 |
|
|
|
1 |
+
# -*- coding: utf-8 -*-
|
2 |
+
# The Selector library provides a set of tools for selecting a
|
3 |
+
# subset of the dataset and computing diversity.
|
4 |
#
|
5 |
+
# Copyright (C) 2023 The QC-Devs Community
|
6 |
#
|
7 |
+
# This file is part of Selector.
|
8 |
#
|
9 |
+
# Selector is free software; you can redistribute it and/or
|
10 |
# modify it under the terms of the GNU General Public License
|
11 |
# as published by the Free Software Foundation; either version 3
|
12 |
# of the License, or (at your option) any later version.
|
13 |
#
|
14 |
+
# Selector is distributed in the hope that it will be useful,
|
15 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
# GNU General Public License for more details.
|
|
|
20 |
# along with this program; if not, see <http://www.gnu.org/licenses/>
|
21 |
#
|
22 |
# --
|
|
|
23 |
"""Test Dissimilarity-Based Selection Methods."""
|
24 |
|
25 |
|
selector/methods/tests/test_partition.py
CHANGED
@@ -1,16 +1,17 @@
|
|
1 |
-
#
|
2 |
-
#
|
|
|
3 |
#
|
4 |
-
# Copyright (C)
|
5 |
#
|
6 |
-
# This file is part of
|
7 |
#
|
8 |
-
#
|
9 |
# modify it under the terms of the GNU General Public License
|
10 |
# as published by the Free Software Foundation; either version 3
|
11 |
# of the License, or (at your option) any later version.
|
12 |
#
|
13 |
-
#
|
14 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
16 |
# GNU General Public License for more details.
|
@@ -19,7 +20,6 @@
|
|
19 |
# along with this program; if not, see <http://www.gnu.org/licenses/>
|
20 |
#
|
21 |
# --
|
22 |
-
|
23 |
"""Test Partition-Based Selection Methods."""
|
24 |
|
25 |
import numpy as np
|
@@ -92,16 +92,16 @@ def test_directed_sphere_on_line_with_larger_radius():
|
|
92 |
# (0,0) as the reference point
|
93 |
x = np.array(
|
94 |
[
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
]
|
106 |
)
|
107 |
selector = DirectedSphereExclusion(r0=2.0, tol=0)
|
@@ -230,6 +230,7 @@ def test_raises_grid_partitioning():
|
|
230 |
) # Test number selected should be int
|
231 |
assert_raises(TypeError, selector.select_from_cluster, grid, 5, [5.0])
|
232 |
|
|
|
233 |
def test_medoid():
|
234 |
"""Testing Medoid class."""
|
235 |
coords, _, _ = generate_synthetic_data(
|
|
|
1 |
+
# -*- coding: utf-8 -*-
|
2 |
+
# The Selector library provides a set of tools for selecting a
|
3 |
+
# subset of the dataset and computing diversity.
|
4 |
#
|
5 |
+
# Copyright (C) 2023 The QC-Devs Community
|
6 |
#
|
7 |
+
# This file is part of Selector.
|
8 |
#
|
9 |
+
# Selector is free software; you can redistribute it and/or
|
10 |
# modify it under the terms of the GNU General Public License
|
11 |
# as published by the Free Software Foundation; either version 3
|
12 |
# of the License, or (at your option) any later version.
|
13 |
#
|
14 |
+
# Selector is distributed in the hope that it will be useful,
|
15 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
# GNU General Public License for more details.
|
|
|
20 |
# along with this program; if not, see <http://www.gnu.org/licenses/>
|
21 |
#
|
22 |
# --
|
|
|
23 |
"""Test Partition-Based Selection Methods."""
|
24 |
|
25 |
import numpy as np
|
|
|
92 |
# (0,0) as the reference point
|
93 |
x = np.array(
|
94 |
[
|
95 |
+
[0, 0],
|
96 |
+
[0, 1],
|
97 |
+
[0, 1.1],
|
98 |
+
[0, 1.2],
|
99 |
+
[0, 2],
|
100 |
+
[0, 3],
|
101 |
+
[0, 3.1],
|
102 |
+
[0, 3.2],
|
103 |
+
[0, 4],
|
104 |
+
[0, 5],
|
105 |
]
|
106 |
)
|
107 |
selector = DirectedSphereExclusion(r0=2.0, tol=0)
|
|
|
230 |
) # Test number selected should be int
|
231 |
assert_raises(TypeError, selector.select_from_cluster, grid, 5, [5.0])
|
232 |
|
233 |
+
|
234 |
def test_medoid():
|
235 |
"""Testing Medoid class."""
|
236 |
coords, _, _ = generate_synthetic_data(
|
selector/methods/utils.py
CHANGED
@@ -1,16 +1,17 @@
|
|
1 |
-
#
|
2 |
-
#
|
|
|
3 |
#
|
4 |
-
# Copyright (C)
|
5 |
#
|
6 |
-
# This file is part of
|
7 |
#
|
8 |
-
#
|
9 |
# modify it under the terms of the GNU General Public License
|
10 |
# as published by the Free Software Foundation; either version 3
|
11 |
# of the License, or (at your option) any later version.
|
12 |
#
|
13 |
-
#
|
14 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
16 |
# GNU General Public License for more details.
|
@@ -19,8 +20,8 @@
|
|
19 |
# along with this program; if not, see <http://www.gnu.org/licenses/>
|
20 |
#
|
21 |
# --
|
22 |
-
|
23 |
"""Module for Selection Utilities."""
|
|
|
24 |
import warnings
|
25 |
|
26 |
import numpy as np
|
|
|
1 |
+
# -*- coding: utf-8 -*-
|
2 |
+
# The Selector library provides a set of tools for selecting a
|
3 |
+
# subset of the dataset and computing diversity.
|
4 |
#
|
5 |
+
# Copyright (C) 2023 The QC-Devs Community
|
6 |
#
|
7 |
+
# This file is part of Selector.
|
8 |
#
|
9 |
+
# Selector is free software; you can redistribute it and/or
|
10 |
# modify it under the terms of the GNU General Public License
|
11 |
# as published by the Free Software Foundation; either version 3
|
12 |
# of the License, or (at your option) any later version.
|
13 |
#
|
14 |
+
# Selector is distributed in the hope that it will be useful,
|
15 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
# GNU General Public License for more details.
|
|
|
20 |
# along with this program; if not, see <http://www.gnu.org/licenses/>
|
21 |
#
|
22 |
# --
|
|
|
23 |
"""Module for Selection Utilities."""
|
24 |
+
|
25 |
import warnings
|
26 |
|
27 |
import numpy as np
|
selector/tests/__init__.py
CHANGED
@@ -1,17 +1,17 @@
|
|
1 |
# -*- coding: utf-8 -*-
|
2 |
-
# The
|
3 |
-
# subset
|
4 |
#
|
5 |
-
# Copyright (C)
|
6 |
#
|
7 |
-
# This file is part of
|
8 |
#
|
9 |
-
#
|
10 |
# modify it under the terms of the GNU General Public License
|
11 |
# as published by the Free Software Foundation; either version 3
|
12 |
# of the License, or (at your option) any later version.
|
13 |
#
|
14 |
-
#
|
15 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
# GNU General Public License for more details.
|
@@ -21,4 +21,4 @@
|
|
21 |
#
|
22 |
# --
|
23 |
|
24 |
-
"""
|
|
|
1 |
# -*- coding: utf-8 -*-
|
2 |
+
# The Selector library provides a set of tools for selecting a
|
3 |
+
# subset of the dataset and computing diversity.
|
4 |
#
|
5 |
+
# Copyright (C) 2023 The QC-Devs Community
|
6 |
#
|
7 |
+
# This file is part of Selector.
|
8 |
#
|
9 |
+
# Selector is free software; you can redistribute it and/or
|
10 |
# modify it under the terms of the GNU General Public License
|
11 |
# as published by the Free Software Foundation; either version 3
|
12 |
# of the License, or (at your option) any later version.
|
13 |
#
|
14 |
+
# Selector is distributed in the hope that it will be useful,
|
15 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
# GNU General Public License for more details.
|
|
|
21 |
#
|
22 |
# --
|
23 |
|
24 |
+
"""Test Module."""
|
selector/tests/common.py
CHANGED
@@ -1,17 +1,17 @@
|
|
1 |
# -*- coding: utf-8 -*-
|
2 |
-
# The
|
3 |
-
# subset
|
4 |
#
|
5 |
-
# Copyright (C)
|
6 |
#
|
7 |
-
# This file is part of
|
8 |
#
|
9 |
-
#
|
10 |
# modify it under the terms of the GNU General Public License
|
11 |
# as published by the Free Software Foundation; either version 3
|
12 |
# of the License, or (at your option) any later version.
|
13 |
#
|
14 |
-
#
|
15 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
# GNU General Public License for more details.
|
@@ -20,7 +20,6 @@
|
|
20 |
# along with this program; if not, see <http://www.gnu.org/licenses/>
|
21 |
#
|
22 |
# --
|
23 |
-
|
24 |
"""Common functions for test module."""
|
25 |
|
26 |
import numpy as np
|
@@ -50,11 +49,10 @@ def load_testing_mols(mol_type: str = "2d") -> list:
|
|
50 |
The list of RDKit molecules.
|
51 |
"""
|
52 |
if mol_type == "2d":
|
53 |
-
mols = [
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
]
|
58 |
elif mol_type == "3d":
|
59 |
with path("DiverseSelector.test.data", "drug_mols.sdf") as sdf_file:
|
60 |
suppl = Chem.SDMolSupplier(str(sdf_file), removeHs=False)
|
@@ -130,7 +128,7 @@ def cosine(a, b):
|
|
130 |
coeff : int
|
131 |
cosine coefficient for molecule A and B.
|
132 |
"""
|
133 |
-
coeff = (sum(a * b)) / (((sum(a
|
134 |
return coeff
|
135 |
|
136 |
|
@@ -149,5 +147,5 @@ def dice(a, b):
|
|
149 |
coeff : int
|
150 |
dice coefficient for molecule A and B.
|
151 |
"""
|
152 |
-
coeff = (2 * (sum(a * b))) / ((sum(a
|
153 |
return coeff
|
|
|
1 |
# -*- coding: utf-8 -*-
|
2 |
+
# The Selector library provides a set of tools for selecting a
|
3 |
+
# subset of the dataset and computing diversity.
|
4 |
#
|
5 |
+
# Copyright (C) 2023 The QC-Devs Community
|
6 |
#
|
7 |
+
# This file is part of Selector.
|
8 |
#
|
9 |
+
# Selector is free software; you can redistribute it and/or
|
10 |
# modify it under the terms of the GNU General Public License
|
11 |
# as published by the Free Software Foundation; either version 3
|
12 |
# of the License, or (at your option) any later version.
|
13 |
#
|
14 |
+
# Selector is distributed in the hope that it will be useful,
|
15 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
# GNU General Public License for more details.
|
|
|
20 |
# along with this program; if not, see <http://www.gnu.org/licenses/>
|
21 |
#
|
22 |
# --
|
|
|
23 |
"""Common functions for test module."""
|
24 |
|
25 |
import numpy as np
|
|
|
49 |
The list of RDKit molecules.
|
50 |
"""
|
51 |
if mol_type == "2d":
|
52 |
+
mols = [
|
53 |
+
Chem.MolFromSmiles(smiles)
|
54 |
+
for smiles in ["OC(=O)[C@@H](N)Cc1[nH]cnc1", "OC(=O)C(=O)C", "CC(=O)OC1=CC=CC=C1C(=O)O"]
|
55 |
+
]
|
|
|
56 |
elif mol_type == "3d":
|
57 |
with path("DiverseSelector.test.data", "drug_mols.sdf") as sdf_file:
|
58 |
suppl = Chem.SDMolSupplier(str(sdf_file), removeHs=False)
|
|
|
128 |
coeff : int
|
129 |
cosine coefficient for molecule A and B.
|
130 |
"""
|
131 |
+
coeff = (sum(a * b)) / (((sum(a**2)) + (sum(b**2))) ** 0.5)
|
132 |
return coeff
|
133 |
|
134 |
|
|
|
147 |
coeff : int
|
148 |
dice coefficient for molecule A and B.
|
149 |
"""
|
150 |
+
coeff = (2 * (sum(a * b))) / ((sum(a**2)) + (sum(b**2)))
|
151 |
return coeff
|
selector/tests/test_converter.py
CHANGED
@@ -1,17 +1,17 @@
|
|
1 |
# -*- coding: utf-8 -*-
|
2 |
-
# The
|
3 |
-
# subset
|
4 |
#
|
5 |
-
# Copyright (C)
|
6 |
#
|
7 |
-
# This file is part of
|
8 |
#
|
9 |
-
#
|
10 |
# modify it under the terms of the GNU General Public License
|
11 |
# as published by the Free Software Foundation; either version 3
|
12 |
# of the License, or (at your option) any later version.
|
13 |
#
|
14 |
-
#
|
15 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
# GNU General Public License for more details.
|
@@ -20,8 +20,7 @@
|
|
20 |
# along with this program; if not, see <http://www.gnu.org/licenses/>
|
21 |
#
|
22 |
# --
|
23 |
-
|
24 |
-
"""Testing for Converter.py."""
|
25 |
|
26 |
import selector.converter as cv
|
27 |
import numpy as np
|
|
|
1 |
# -*- coding: utf-8 -*-
|
2 |
+
# The Selector library provides a set of tools for selecting a
|
3 |
+
# subset of the dataset and computing diversity.
|
4 |
#
|
5 |
+
# Copyright (C) 2023 The QC-Devs Community
|
6 |
#
|
7 |
+
# This file is part of Selector.
|
8 |
#
|
9 |
+
# Selector is free software; you can redistribute it and/or
|
10 |
# modify it under the terms of the GNU General Public License
|
11 |
# as published by the Free Software Foundation; either version 3
|
12 |
# of the License, or (at your option) any later version.
|
13 |
#
|
14 |
+
# Selector is distributed in the hope that it will be useful,
|
15 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
# GNU General Public License for more details.
|
|
|
20 |
# along with this program; if not, see <http://www.gnu.org/licenses/>
|
21 |
#
|
22 |
# --
|
23 |
+
"""Test Converter Module."""
|
|
|
24 |
|
25 |
import selector.converter as cv
|
26 |
import numpy as np
|
selector/tests/test_distance.py
CHANGED
@@ -1,17 +1,17 @@
|
|
1 |
# -*- coding: utf-8 -*-
|
2 |
-
# The
|
3 |
-
# subset
|
4 |
#
|
5 |
-
# Copyright (C)
|
6 |
#
|
7 |
-
# This file is part of
|
8 |
#
|
9 |
-
#
|
10 |
# modify it under the terms of the GNU General Public License
|
11 |
# as published by the Free Software Foundation; either version 3
|
12 |
# of the License, or (at your option) any later version.
|
13 |
#
|
14 |
-
#
|
15 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
# GNU General Public License for more details.
|
@@ -20,8 +20,7 @@
|
|
20 |
# along with this program; if not, see <http://www.gnu.org/licenses/>
|
21 |
#
|
22 |
# --
|
23 |
-
|
24 |
-
"""Test distance.py Module."""
|
25 |
|
26 |
|
27 |
from selector.distance import (
|
@@ -31,7 +30,7 @@ from selector.distance import (
|
|
31 |
)
|
32 |
|
33 |
import numpy as np
|
34 |
-
from numpy.testing import
|
35 |
|
36 |
|
37 |
def test_pairwise_similarity_bit_raises():
|
|
|
1 |
# -*- coding: utf-8 -*-
|
2 |
+
# The Selector library provides a set of tools for selecting a
|
3 |
+
# subset of the dataset and computing diversity.
|
4 |
#
|
5 |
+
# Copyright (C) 2023 The QC-Devs Community
|
6 |
#
|
7 |
+
# This file is part of Selector.
|
8 |
#
|
9 |
+
# Selector is free software; you can redistribute it and/or
|
10 |
# modify it under the terms of the GNU General Public License
|
11 |
# as published by the Free Software Foundation; either version 3
|
12 |
# of the License, or (at your option) any later version.
|
13 |
#
|
14 |
+
# Selector is distributed in the hope that it will be useful,
|
15 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
# GNU General Public License for more details.
|
|
|
20 |
# along with this program; if not, see <http://www.gnu.org/licenses/>
|
21 |
#
|
22 |
# --
|
23 |
+
"""Test Distance-Based Selection Methods."""
|
|
|
24 |
|
25 |
|
26 |
from selector.distance import (
|
|
|
30 |
)
|
31 |
|
32 |
import numpy as np
|
33 |
+
from numpy.testing import assert_equal, assert_raises
|
34 |
|
35 |
|
36 |
def test_pairwise_similarity_bit_raises():
|
selector/tests/test_diversity.py
CHANGED
@@ -1,17 +1,17 @@
|
|
1 |
# -*- coding: utf-8 -*-
|
2 |
-
# The
|
3 |
-
# subset
|
4 |
#
|
5 |
-
# Copyright (C)
|
6 |
#
|
7 |
-
# This file is part of
|
8 |
#
|
9 |
-
#
|
10 |
# modify it under the terms of the GNU General Public License
|
11 |
# as published by the Free Software Foundation; either version 3
|
12 |
# of the License, or (at your option) any later version.
|
13 |
#
|
14 |
-
#
|
15 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
# GNU General Public License for more details.
|
@@ -21,7 +21,7 @@
|
|
21 |
#
|
22 |
# --
|
23 |
|
24 |
-
"""
|
25 |
|
26 |
import pytest
|
27 |
import numpy as np
|
|
|
1 |
# -*- coding: utf-8 -*-
|
2 |
+
# The Selector library provides a set of tools for selecting a
|
3 |
+
# subset of the dataset and computing diversity.
|
4 |
#
|
5 |
+
# Copyright (C) 2023 The QC-Devs Community
|
6 |
#
|
7 |
+
# This file is part of Selector.
|
8 |
#
|
9 |
+
# Selector is free software; you can redistribute it and/or
|
10 |
# modify it under the terms of the GNU General Public License
|
11 |
# as published by the Free Software Foundation; either version 3
|
12 |
# of the License, or (at your option) any later version.
|
13 |
#
|
14 |
+
# Selector is distributed in the hope that it will be useful,
|
15 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
# GNU General Public License for more details.
|
|
|
21 |
#
|
22 |
# --
|
23 |
|
24 |
+
"""Test Diversity Module."""
|
25 |
|
26 |
import pytest
|
27 |
import numpy as np
|
selector/tests/test_similarity.py
CHANGED
@@ -1,16 +1,17 @@
|
|
1 |
-
#
|
2 |
-
#
|
|
|
3 |
#
|
4 |
-
# Copyright (C)
|
5 |
#
|
6 |
-
# This file is part of
|
7 |
#
|
8 |
-
#
|
9 |
# modify it under the terms of the GNU General Public License
|
10 |
# as published by the Free Software Foundation; either version 3
|
11 |
# of the License, or (at your option) any later version.
|
12 |
#
|
13 |
-
#
|
14 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
16 |
# GNU General Public License for more details.
|
@@ -19,8 +20,7 @@
|
|
19 |
# along with this program; if not, see <http://www.gnu.org/licenses/>
|
20 |
#
|
21 |
# --
|
22 |
-
|
23 |
-
"""Test similarity-Based Selection Methods."""
|
24 |
|
25 |
import ast
|
26 |
import csv
|
|
|
1 |
+
# -*- coding: utf-8 -*-
|
2 |
+
# The Selector library provides a set of tools for selecting a
|
3 |
+
# subset of the dataset and computing diversity.
|
4 |
#
|
5 |
+
# Copyright (C) 2023 The QC-Devs Community
|
6 |
#
|
7 |
+
# This file is part of Selector.
|
8 |
#
|
9 |
+
# Selector is free software; you can redistribute it and/or
|
10 |
# modify it under the terms of the GNU General Public License
|
11 |
# as published by the Free Software Foundation; either version 3
|
12 |
# of the License, or (at your option) any later version.
|
13 |
#
|
14 |
+
# Selector is distributed in the hope that it will be useful,
|
15 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
# GNU General Public License for more details.
|
|
|
20 |
# along with this program; if not, see <http://www.gnu.org/licenses/>
|
21 |
#
|
22 |
# --
|
23 |
+
"""Test Similarity-Based Selection Methods."""
|
|
|
24 |
|
25 |
import ast
|
26 |
import csv
|
setup.py
CHANGED
@@ -1,17 +1,17 @@
|
|
1 |
# -*- coding: utf-8 -*-
|
2 |
-
# The
|
3 |
-
# subset
|
4 |
#
|
5 |
-
# Copyright (C)
|
6 |
#
|
7 |
-
# This file is part of
|
8 |
#
|
9 |
-
#
|
10 |
# modify it under the terms of the GNU General Public License
|
11 |
# as published by the Free Software Foundation; either version 3
|
12 |
# of the License, or (at your option) any later version.
|
13 |
#
|
14 |
-
#
|
15 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
# GNU General Public License for more details.
|
|
|
1 |
# -*- coding: utf-8 -*-
|
2 |
+
# The Selector library provides a set of tools for selecting a
|
3 |
+
# subset of the dataset and computing diversity.
|
4 |
#
|
5 |
+
# Copyright (C) 2023 The QC-Devs Community
|
6 |
#
|
7 |
+
# This file is part of Selector.
|
8 |
#
|
9 |
+
# Selector is free software; you can redistribute it and/or
|
10 |
# modify it under the terms of the GNU General Public License
|
11 |
# as published by the Free Software Foundation; either version 3
|
12 |
# of the License, or (at your option) any later version.
|
13 |
#
|
14 |
+
# Selector is distributed in the hope that it will be useful,
|
15 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
# GNU General Public License for more details.
|
versioneer.py
CHANGED
@@ -1,3 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
2 |
# Version: 0.18
|
3 |
|
@@ -277,6 +299,7 @@ https://creativecommons.org/publicdomain/zero/1.0/ .
|
|
277 |
"""
|
278 |
|
279 |
from __future__ import print_function
|
|
|
280 |
try:
|
281 |
import configparser
|
282 |
except ImportError:
|
@@ -290,6 +313,7 @@ import sys
|
|
290 |
|
291 |
# pylint: skip-file
|
292 |
|
|
|
293 |
class VersioneerConfig:
|
294 |
"""Container for Versioneer configuration parameters."""
|
295 |
|
@@ -309,11 +333,13 @@ def get_root():
|
|
309 |
setup_py = os.path.join(root, "setup.py")
|
310 |
versioneer_py = os.path.join(root, "versioneer.py")
|
311 |
if not (os.path.exists(setup_py) or os.path.exists(versioneer_py)):
|
312 |
-
err = (
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
|
|
|
|
317 |
raise VersioneerBadRootError(err)
|
318 |
try:
|
319 |
# Certain runtime workflows (setup.py install/develop in a setuptools
|
@@ -326,8 +352,10 @@ def get_root():
|
|
326 |
me_dir = os.path.normcase(os.path.splitext(me)[0])
|
327 |
vsr_dir = os.path.normcase(os.path.splitext(versioneer_py)[0])
|
328 |
if me_dir != vsr_dir:
|
329 |
-
print(
|
330 |
-
|
|
|
|
|
331 |
except NameError:
|
332 |
pass
|
333 |
return root
|
@@ -349,6 +377,7 @@ def get_config_from_root(root):
|
|
349 |
if parser.has_option("versioneer", name):
|
350 |
return parser.get("versioneer", name)
|
351 |
return None
|
|
|
352 |
cfg = VersioneerConfig()
|
353 |
cfg.VCS = VCS
|
354 |
cfg.style = get(parser, "style") or ""
|
@@ -373,17 +402,18 @@ HANDLERS = {}
|
|
373 |
|
374 |
def register_vcs_handler(vcs, method): # decorator
|
375 |
"""Decorator to mark a method as the handler for a particular VCS."""
|
|
|
376 |
def decorate(f):
|
377 |
"""Store f in HANDLERS[vcs][method]."""
|
378 |
if vcs not in HANDLERS:
|
379 |
HANDLERS[vcs] = {}
|
380 |
HANDLERS[vcs][method] = f
|
381 |
return f
|
|
|
382 |
return decorate
|
383 |
|
384 |
|
385 |
-
def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False,
|
386 |
-
env=None):
|
387 |
"""Call the given command(s)."""
|
388 |
assert isinstance(commands, list)
|
389 |
p = None
|
@@ -391,10 +421,13 @@ def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False,
|
|
391 |
try:
|
392 |
dispcmd = str([c] + args)
|
393 |
# remember shell=False, so use git.cmd on windows, not just git
|
394 |
-
p = subprocess.Popen(
|
395 |
-
|
396 |
-
|
397 |
-
|
|
|
|
|
|
|
398 |
break
|
399 |
except EnvironmentError:
|
400 |
e = sys.exc_info()[1]
|
@@ -419,7 +452,9 @@ def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False,
|
|
419 |
return stdout, p.returncode
|
420 |
|
421 |
|
422 |
-
LONG_VERSION_PY[
|
|
|
|
|
423 |
# This file helps to compute a version number in source trees obtained from
|
424 |
# git-archive tarball (such as those provided by githubs download-from-tag
|
425 |
# feature). Distribution tarballs (built by setup.py sdist) and build
|
@@ -994,7 +1029,7 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose):
|
|
994 |
# starting in git-1.8.3, tags are listed as "tag: foo-1.0" instead of
|
995 |
# just "foo-1.0". If we see a "tag: " prefix, prefer those.
|
996 |
TAG = "tag: "
|
997 |
-
tags = set([r[len(TAG):] for r in refs if r.startswith(TAG)])
|
998 |
if not tags:
|
999 |
# Either we're using git < 1.8.3, or there really are no tags. We use
|
1000 |
# a heuristic: assume all version tags have a digit. The old git %d
|
@@ -1003,7 +1038,7 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose):
|
|
1003 |
# between branches and tags. By ignoring refnames without digits, we
|
1004 |
# filter out many common branch names like "release" and
|
1005 |
# "stabilization", as well as "HEAD" and "master".
|
1006 |
-
tags = set([r for r in refs if re.search(r
|
1007 |
if verbose:
|
1008 |
print("discarding '%s', no digits" % ",".join(refs - tags))
|
1009 |
if verbose:
|
@@ -1011,19 +1046,26 @@ def git_versions_from_keywords(keywords, tag_prefix, verbose):
|
|
1011 |
for ref in sorted(tags):
|
1012 |
# sorting will prefer e.g. "2.0" over "2.0rc1"
|
1013 |
if ref.startswith(tag_prefix):
|
1014 |
-
r = ref[len(tag_prefix):]
|
1015 |
if verbose:
|
1016 |
print("picking %s" % r)
|
1017 |
-
return {
|
1018 |
-
|
1019 |
-
|
1020 |
-
|
|
|
|
|
|
|
1021 |
# no suitable tags, so version is "0+unknown", but full hex is still there
|
1022 |
if verbose:
|
1023 |
print("no suitable tags, using unknown + full revision id")
|
1024 |
-
return {
|
1025 |
-
|
1026 |
-
|
|
|
|
|
|
|
|
|
1027 |
|
1028 |
|
1029 |
@register_vcs_handler("git", "pieces_from_vcs")
|
@@ -1038,8 +1080,7 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command):
|
|
1038 |
if sys.platform == "win32":
|
1039 |
GITS = ["git.cmd", "git.exe"]
|
1040 |
|
1041 |
-
out, rc = run_command(GITS, ["rev-parse", "--git-dir"], cwd=root,
|
1042 |
-
hide_stderr=True)
|
1043 |
if rc != 0:
|
1044 |
if verbose:
|
1045 |
print("Directory %s not under git control" % root)
|
@@ -1047,10 +1088,11 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command):
|
|
1047 |
|
1048 |
# if there is a tag matching tag_prefix, this yields TAG-NUM-gHEX[-dirty]
|
1049 |
# if there isn't one, this yields HEX[-dirty] (no NUM)
|
1050 |
-
describe_out, rc = run_command(
|
1051 |
-
|
1052 |
-
|
1053 |
-
|
|
|
1054 |
# --long was added in git-1.5.5
|
1055 |
if describe_out is None:
|
1056 |
raise NotThisMethod("'git describe' failed")
|
@@ -1073,17 +1115,16 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command):
|
|
1073 |
dirty = git_describe.endswith("-dirty")
|
1074 |
pieces["dirty"] = dirty
|
1075 |
if dirty:
|
1076 |
-
git_describe = git_describe[:git_describe.rindex("-dirty")]
|
1077 |
|
1078 |
# now we have TAG-NUM-gHEX or HEX
|
1079 |
|
1080 |
if "-" in git_describe:
|
1081 |
# TAG-NUM-gHEX
|
1082 |
-
mo = re.search(r
|
1083 |
if not mo:
|
1084 |
# unparseable. Maybe git-describe is misbehaving?
|
1085 |
-
pieces["error"] =
|
1086 |
-
% describe_out)
|
1087 |
return pieces
|
1088 |
|
1089 |
# tag
|
@@ -1092,10 +1133,9 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command):
|
|
1092 |
if verbose:
|
1093 |
fmt = "tag '%s' doesn't start with prefix '%s'"
|
1094 |
print(fmt % (full_tag, tag_prefix))
|
1095 |
-
pieces["error"] =
|
1096 |
-
% (full_tag, tag_prefix))
|
1097 |
return pieces
|
1098 |
-
pieces["closest-tag"] = full_tag[len(tag_prefix):]
|
1099 |
|
1100 |
# distance: number of commits since tag
|
1101 |
pieces["distance"] = int(mo.group(2))
|
@@ -1106,13 +1146,11 @@ def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command):
|
|
1106 |
else:
|
1107 |
# HEX: no tags
|
1108 |
pieces["closest-tag"] = None
|
1109 |
-
count_out, rc = run_command(GITS, ["rev-list", "HEAD", "--count"],
|
1110 |
-
cwd=root)
|
1111 |
pieces["distance"] = int(count_out) # total number of commits
|
1112 |
|
1113 |
# commit date: see ISO-8601 comment in git_versions_from_keywords()
|
1114 |
-
date = run_command(GITS, ["show", "-s", "--format=%ci", "HEAD"],
|
1115 |
-
cwd=root)[0].strip()
|
1116 |
pieces["date"] = date.strip().replace(" ", "T", 1).replace(" ", "", 1)
|
1117 |
|
1118 |
return pieces
|
@@ -1168,16 +1206,22 @@ def versions_from_parentdir(parentdir_prefix, root, verbose):
|
|
1168 |
for i in range(3):
|
1169 |
dirname = os.path.basename(root)
|
1170 |
if dirname.startswith(parentdir_prefix):
|
1171 |
-
return {
|
1172 |
-
|
1173 |
-
|
|
|
|
|
|
|
|
|
1174 |
else:
|
1175 |
rootdirs.append(root)
|
1176 |
root = os.path.dirname(root) # up a level
|
1177 |
|
1178 |
if verbose:
|
1179 |
-
print(
|
1180 |
-
|
|
|
|
|
1181 |
raise NotThisMethod("rootdir doesn't start with parentdir_prefix")
|
1182 |
|
1183 |
|
@@ -1206,11 +1250,9 @@ def versions_from_file(filename):
|
|
1206 |
contents = f.read()
|
1207 |
except EnvironmentError:
|
1208 |
raise NotThisMethod("unable to read _version.py")
|
1209 |
-
mo = re.search(r"version_json = '''\n(.*)''' # END VERSION_JSON",
|
1210 |
-
contents, re.M | re.S)
|
1211 |
if not mo:
|
1212 |
-
mo = re.search(r"version_json = '''\r\n(.*)''' # END VERSION_JSON",
|
1213 |
-
contents, re.M | re.S)
|
1214 |
if not mo:
|
1215 |
raise NotThisMethod("no version_json in _version.py")
|
1216 |
return json.loads(mo.group(1))
|
@@ -1219,8 +1261,7 @@ def versions_from_file(filename):
|
|
1219 |
def write_to_version_file(filename, versions):
|
1220 |
"""Write the given version number to the given _version.py file."""
|
1221 |
os.unlink(filename)
|
1222 |
-
contents = json.dumps(versions, sort_keys=True,
|
1223 |
-
indent=1, separators=(",", ": "))
|
1224 |
with open(filename, "w") as f:
|
1225 |
f.write(SHORT_VERSION_PY % contents)
|
1226 |
|
@@ -1252,8 +1293,7 @@ def render_pep440(pieces):
|
|
1252 |
rendered += ".dirty"
|
1253 |
else:
|
1254 |
# exception #1
|
1255 |
-
rendered = "0+untagged.%d.g%s" % (pieces["distance"],
|
1256 |
-
pieces["short"])
|
1257 |
if pieces["dirty"]:
|
1258 |
rendered += ".dirty"
|
1259 |
return rendered
|
@@ -1367,11 +1407,13 @@ def render_git_describe_long(pieces):
|
|
1367 |
def render(pieces, style):
|
1368 |
"""Render the given version pieces into the requested style."""
|
1369 |
if pieces["error"]:
|
1370 |
-
return {
|
1371 |
-
|
1372 |
-
|
1373 |
-
|
1374 |
-
|
|
|
|
|
1375 |
|
1376 |
if not style or style == "default":
|
1377 |
style = "pep440" # the default
|
@@ -1391,9 +1433,13 @@ def render(pieces, style):
|
|
1391 |
else:
|
1392 |
raise ValueError("unknown style '%s'" % style)
|
1393 |
|
1394 |
-
return {
|
1395 |
-
|
1396 |
-
|
|
|
|
|
|
|
|
|
1397 |
|
1398 |
|
1399 |
class VersioneerBadRootError(Exception):
|
@@ -1416,8 +1462,7 @@ def get_versions(verbose=False):
|
|
1416 |
handlers = HANDLERS.get(cfg.VCS)
|
1417 |
assert handlers, "unrecognized VCS '%s'" % cfg.VCS
|
1418 |
verbose = verbose or cfg.verbose
|
1419 |
-
assert cfg.versionfile_source is not None,
|
1420 |
-
"please set versioneer.versionfile_source"
|
1421 |
assert cfg.tag_prefix is not None, "please set versioneer.tag_prefix"
|
1422 |
|
1423 |
versionfile_abs = os.path.join(root, cfg.versionfile_source)
|
@@ -1471,9 +1516,13 @@ def get_versions(verbose=False):
|
|
1471 |
if verbose:
|
1472 |
print("unable to compute version")
|
1473 |
|
1474 |
-
return {
|
1475 |
-
|
1476 |
-
|
|
|
|
|
|
|
|
|
1477 |
|
1478 |
|
1479 |
def get_version():
|
@@ -1522,6 +1571,7 @@ def get_cmdclass():
|
|
1522 |
print(" date: %s" % vers.get("date"))
|
1523 |
if vers["error"]:
|
1524 |
print(" error: %s" % vers["error"])
|
|
|
1525 |
cmds["version"] = cmd_version
|
1526 |
|
1527 |
# we override "build_py" in both distutils and setuptools
|
@@ -1554,14 +1604,15 @@ def get_cmdclass():
|
|
1554 |
# now locate _version.py in the new build/ directory and replace
|
1555 |
# it with an updated value
|
1556 |
if cfg.versionfile_build:
|
1557 |
-
target_versionfile = os.path.join(self.build_lib,
|
1558 |
-
cfg.versionfile_build)
|
1559 |
print("UPDATING %s" % target_versionfile)
|
1560 |
write_to_version_file(target_versionfile, versions)
|
|
|
1561 |
cmds["build_py"] = cmd_build_py
|
1562 |
|
1563 |
if "cx_Freeze" in sys.modules: # cx_freeze enabled?
|
1564 |
from cx_Freeze.dist import build_exe as _build_exe
|
|
|
1565 |
# nczeczulin reports that py2exe won't like the pep440-style string
|
1566 |
# as FILEVERSION, but it can be used for PRODUCTVERSION, e.g.
|
1567 |
# setup(console=[{
|
@@ -1582,17 +1633,21 @@ def get_cmdclass():
|
|
1582 |
os.unlink(target_versionfile)
|
1583 |
with open(cfg.versionfile_source, "w") as f:
|
1584 |
LONG = LONG_VERSION_PY[cfg.VCS]
|
1585 |
-
f.write(
|
1586 |
-
|
1587 |
-
|
1588 |
-
|
1589 |
-
|
1590 |
-
|
1591 |
-
|
|
|
|
|
|
|
|
|
1592 |
cmds["build_exe"] = cmd_build_exe
|
1593 |
del cmds["build_py"]
|
1594 |
|
1595 |
-
if
|
1596 |
try:
|
1597 |
from py2exe.distutils_buildexe import py2exe as _py2exe # py3
|
1598 |
except ImportError:
|
@@ -1611,13 +1666,17 @@ def get_cmdclass():
|
|
1611 |
os.unlink(target_versionfile)
|
1612 |
with open(cfg.versionfile_source, "w") as f:
|
1613 |
LONG = LONG_VERSION_PY[cfg.VCS]
|
1614 |
-
f.write(
|
1615 |
-
|
1616 |
-
|
1617 |
-
|
1618 |
-
|
1619 |
-
|
1620 |
-
|
|
|
|
|
|
|
|
|
1621 |
cmds["py2exe"] = cmd_py2exe
|
1622 |
|
1623 |
# we override different "sdist" commands for both environments
|
@@ -1644,8 +1703,8 @@ def get_cmdclass():
|
|
1644 |
# updated value
|
1645 |
target_versionfile = os.path.join(base_dir, cfg.versionfile_source)
|
1646 |
print("UPDATING %s" % target_versionfile)
|
1647 |
-
write_to_version_file(target_versionfile,
|
1648 |
-
|
1649 |
cmds["sdist"] = cmd_sdist
|
1650 |
|
1651 |
return cmds
|
@@ -1700,11 +1759,9 @@ def do_setup():
|
|
1700 |
root = get_root()
|
1701 |
try:
|
1702 |
cfg = get_config_from_root(root)
|
1703 |
-
except (EnvironmentError, configparser.NoSectionError,
|
1704 |
-
configparser.NoOptionError) as e:
|
1705 |
if isinstance(e, (EnvironmentError, configparser.NoSectionError)):
|
1706 |
-
print("Adding sample versioneer config to setup.cfg",
|
1707 |
-
file=sys.stderr)
|
1708 |
with open(os.path.join(root, "setup.cfg"), "a") as f:
|
1709 |
f.write(SAMPLE_CONFIG)
|
1710 |
print(CONFIG_ERROR, file=sys.stderr)
|
@@ -1713,15 +1770,18 @@ def do_setup():
|
|
1713 |
print(" creating %s" % cfg.versionfile_source)
|
1714 |
with open(cfg.versionfile_source, "w") as f:
|
1715 |
LONG = LONG_VERSION_PY[cfg.VCS]
|
1716 |
-
f.write(
|
1717 |
-
|
1718 |
-
|
1719 |
-
|
1720 |
-
|
1721 |
-
|
1722 |
-
|
1723 |
-
|
1724 |
-
|
|
|
|
|
|
|
1725 |
if os.path.exists(ipy):
|
1726 |
try:
|
1727 |
with open(ipy, "r") as f:
|
@@ -1763,8 +1823,7 @@ def do_setup():
|
|
1763 |
else:
|
1764 |
print(" 'versioneer.py' already in MANIFEST.in")
|
1765 |
if cfg.versionfile_source not in simple_includes:
|
1766 |
-
print(" appending versionfile_source ('%s') to MANIFEST.in" %
|
1767 |
-
cfg.versionfile_source)
|
1768 |
with open(manifest_in, "a") as f:
|
1769 |
f.write("include %s\n" % cfg.versionfile_source)
|
1770 |
else:
|
|
|
1 |
+
# -*- coding: utf-8 -*-
|
2 |
+
# The Selector library provides a set of tools for selecting a
|
3 |
+
# subset of the dataset and computing diversity.
|
4 |
+
#
|
5 |
+
# Copyright (C) 2023 The QC-Devs Community
|
6 |
+
#
|
7 |
+
# This file is part of Selector.
|
8 |
+
#
|
9 |
+
# Selector is free software; you can redistribute it and/or
|
10 |
+
# modify it under the terms of the GNU General Public License
|
11 |
+
# as published by the Free Software Foundation; either version 3
|
12 |
+
# of the License, or (at your option) any later version.
|
13 |
+
#
|
14 |
+
# Selector is distributed in the hope that it will be useful,
|
15 |
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 |
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 |
+
# GNU General Public License for more details.
|
18 |
+
#
|
19 |
+
# You should have received a copy of the GNU General Public License
|
20 |
+
# along with this program; if not, see <http://www.gnu.org/licenses/>
|
21 |
+
#
|
22 |
+
# --
|
23 |
|
24 |
# Version: 0.18
|
25 |
|
|
|
299 |
"""
|
300 |
|
301 |
from __future__ import print_function
|
302 |
+
|
303 |
try:
|
304 |
import configparser
|
305 |
except ImportError:
|
|
|
313 |
|
314 |
# pylint: skip-file
|
315 |
|
316 |
+
|
317 |
class VersioneerConfig:
|
318 |
"""Container for Versioneer configuration parameters."""
|
319 |
|
|
|
333 |
setup_py = os.path.join(root, "setup.py")
|
334 |
versioneer_py = os.path.join(root, "versioneer.py")
|
335 |
if not (os.path.exists(setup_py) or os.path.exists(versioneer_py)):
|
336 |
+
err = (
|
337 |
+
"Versioneer was unable to run the project root directory. "
|
338 |
+
"Versioneer requires setup.py to be executed from "
|
339 |
+
"its immediate directory (like 'python setup.py COMMAND'), "
|
340 |
+
"or in a way that lets it use sys.argv[0] to find the root "
|
341 |
+
"(like 'python path/to/setup.py COMMAND')."
|
342 |
+
)
|
343 |
raise VersioneerBadRootError(err)
|
344 |
try:
|
345 |
# Certain runtime workflows (setup.py install/develop in a setuptools
|
|
|
352 |
me_dir = os.path.normcase(os.path.splitext(me)[0])
|
353 |
vsr_dir = os.path.normcase(os.path.splitext(versioneer_py)[0])
|
354 |
if me_dir != vsr_dir:
|
355 |
+
print(
|
356 |
+
"Warning: build in %s is using versioneer.py from %s"
|
357 |
+
% (os.path.dirname(me), versioneer_py)
|
358 |
+
)
|
359 |
except NameError:
|
360 |
pass
|
361 |
return root
|
|
|
377 |
if parser.has_option("versioneer", name):
|
378 |
return parser.get("versioneer", name)
|
379 |
return None
|
380 |
+
|
381 |
cfg = VersioneerConfig()
|
382 |
cfg.VCS = VCS
|
383 |
cfg.style = get(parser, "style") or ""
|
|
|
402 |
|
403 |
def register_vcs_handler(vcs, method): # decorator
|
404 |
"""Decorator to mark a method as the handler for a particular VCS."""
|
405 |
+
|
406 |
def decorate(f):
|
407 |
"""Store f in HANDLERS[vcs][method]."""
|
408 |
if vcs not in HANDLERS:
|
409 |
HANDLERS[vcs] = {}
|
410 |
HANDLERS[vcs][method] = f
|
411 |
return f
|
412 |
+
|
413 |
return decorate
|
414 |
|
415 |
|
416 |
+
def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False, env=None):
|
|
|
417 |
"""Call the given command(s)."""
|
418 |
assert isinstance(commands, list)
|
419 |
p = None
|
|
|
421 |
try:
|
422 |
dispcmd = str([c] + args)
|
423 |
# remember shell=False, so use git.cmd on windows, not just git
|
424 |
+
p = subprocess.Popen(
|
425 |
+
[c] + args,
|
426 |
+
cwd=cwd,
|
427 |
+
env=env,
|
428 |
+
stdout=subprocess.PIPE,
|
429 |
+
stderr=(subprocess.PIPE if hide_stderr else None),
|
430 |
+
)
|
431 |
break
|
432 |
except EnvironmentError:
|
433 |
e = sys.exc_info()[1]
|
|
|
452 |
return stdout, p.returncode
|
453 |
|
454 |
|
455 |
+
LONG_VERSION_PY[
|
456 |
+
"git"
|
457 |
+
] = '''
|
458 |
# This file helps to compute a version number in source trees obtained from
|
459 |
# git-archive tarball (such as those provided by githubs download-from-tag
|
460 |
# feature). Distribution tarballs (built by setup.py sdist) and build
|
|
|
1029 |
# starting in git-1.8.3, tags are listed as "tag: foo-1.0" instead of
|
1030 |
# just "foo-1.0". If we see a "tag: " prefix, prefer those.
|
1031 |
TAG = "tag: "
|
1032 |
+
tags = set([r[len(TAG) :] for r in refs if r.startswith(TAG)])
|
1033 |
if not tags:
|
1034 |
# Either we're using git < 1.8.3, or there really are no tags. We use
|
1035 |
# a heuristic: assume all version tags have a digit. The old git %d
|
|
|
1038 |
# between branches and tags. By ignoring refnames without digits, we
|
1039 |
# filter out many common branch names like "release" and
|
1040 |
# "stabilization", as well as "HEAD" and "master".
|
1041 |
+
tags = set([r for r in refs if re.search(r"\d", r)])
|
1042 |
if verbose:
|
1043 |
print("discarding '%s', no digits" % ",".join(refs - tags))
|
1044 |
if verbose:
|
|
|
1046 |
for ref in sorted(tags):
|
1047 |
# sorting will prefer e.g. "2.0" over "2.0rc1"
|
1048 |
if ref.startswith(tag_prefix):
|
1049 |
+
r = ref[len(tag_prefix) :]
|
1050 |
if verbose:
|
1051 |
print("picking %s" % r)
|
1052 |
+
return {
|
1053 |
+
"version": r,
|
1054 |
+
"full-revisionid": keywords["full"].strip(),
|
1055 |
+
"dirty": False,
|
1056 |
+
"error": None,
|
1057 |
+
"date": date,
|
1058 |
+
}
|
1059 |
# no suitable tags, so version is "0+unknown", but full hex is still there
|
1060 |
if verbose:
|
1061 |
print("no suitable tags, using unknown + full revision id")
|
1062 |
+
return {
|
1063 |
+
"version": "0+unknown",
|
1064 |
+
"full-revisionid": keywords["full"].strip(),
|
1065 |
+
"dirty": False,
|
1066 |
+
"error": "no suitable tags",
|
1067 |
+
"date": None,
|
1068 |
+
}
|
1069 |
|
1070 |
|
1071 |
@register_vcs_handler("git", "pieces_from_vcs")
|
|
|
1080 |
if sys.platform == "win32":
|
1081 |
GITS = ["git.cmd", "git.exe"]
|
1082 |
|
1083 |
+
out, rc = run_command(GITS, ["rev-parse", "--git-dir"], cwd=root, hide_stderr=True)
|
|
|
1084 |
if rc != 0:
|
1085 |
if verbose:
|
1086 |
print("Directory %s not under git control" % root)
|
|
|
1088 |
|
1089 |
# if there is a tag matching tag_prefix, this yields TAG-NUM-gHEX[-dirty]
|
1090 |
# if there isn't one, this yields HEX[-dirty] (no NUM)
|
1091 |
+
describe_out, rc = run_command(
|
1092 |
+
GITS,
|
1093 |
+
["describe", "--tags", "--dirty", "--always", "--long", "--match", "%s*" % tag_prefix],
|
1094 |
+
cwd=root,
|
1095 |
+
)
|
1096 |
# --long was added in git-1.5.5
|
1097 |
if describe_out is None:
|
1098 |
raise NotThisMethod("'git describe' failed")
|
|
|
1115 |
dirty = git_describe.endswith("-dirty")
|
1116 |
pieces["dirty"] = dirty
|
1117 |
if dirty:
|
1118 |
+
git_describe = git_describe[: git_describe.rindex("-dirty")]
|
1119 |
|
1120 |
# now we have TAG-NUM-gHEX or HEX
|
1121 |
|
1122 |
if "-" in git_describe:
|
1123 |
# TAG-NUM-gHEX
|
1124 |
+
mo = re.search(r"^(.+)-(\d+)-g([0-9a-f]+)$", git_describe)
|
1125 |
if not mo:
|
1126 |
# unparseable. Maybe git-describe is misbehaving?
|
1127 |
+
pieces["error"] = "unable to parse git-describe output: '%s'" % describe_out
|
|
|
1128 |
return pieces
|
1129 |
|
1130 |
# tag
|
|
|
1133 |
if verbose:
|
1134 |
fmt = "tag '%s' doesn't start with prefix '%s'"
|
1135 |
print(fmt % (full_tag, tag_prefix))
|
1136 |
+
pieces["error"] = "tag '%s' doesn't start with prefix '%s'" % (full_tag, tag_prefix)
|
|
|
1137 |
return pieces
|
1138 |
+
pieces["closest-tag"] = full_tag[len(tag_prefix) :]
|
1139 |
|
1140 |
# distance: number of commits since tag
|
1141 |
pieces["distance"] = int(mo.group(2))
|
|
|
1146 |
else:
|
1147 |
# HEX: no tags
|
1148 |
pieces["closest-tag"] = None
|
1149 |
+
count_out, rc = run_command(GITS, ["rev-list", "HEAD", "--count"], cwd=root)
|
|
|
1150 |
pieces["distance"] = int(count_out) # total number of commits
|
1151 |
|
1152 |
# commit date: see ISO-8601 comment in git_versions_from_keywords()
|
1153 |
+
date = run_command(GITS, ["show", "-s", "--format=%ci", "HEAD"], cwd=root)[0].strip()
|
|
|
1154 |
pieces["date"] = date.strip().replace(" ", "T", 1).replace(" ", "", 1)
|
1155 |
|
1156 |
return pieces
|
|
|
1206 |
for i in range(3):
|
1207 |
dirname = os.path.basename(root)
|
1208 |
if dirname.startswith(parentdir_prefix):
|
1209 |
+
return {
|
1210 |
+
"version": dirname[len(parentdir_prefix) :],
|
1211 |
+
"full-revisionid": None,
|
1212 |
+
"dirty": False,
|
1213 |
+
"error": None,
|
1214 |
+
"date": None,
|
1215 |
+
}
|
1216 |
else:
|
1217 |
rootdirs.append(root)
|
1218 |
root = os.path.dirname(root) # up a level
|
1219 |
|
1220 |
if verbose:
|
1221 |
+
print(
|
1222 |
+
"Tried directories %s but none started with prefix %s"
|
1223 |
+
% (str(rootdirs), parentdir_prefix)
|
1224 |
+
)
|
1225 |
raise NotThisMethod("rootdir doesn't start with parentdir_prefix")
|
1226 |
|
1227 |
|
|
|
1250 |
contents = f.read()
|
1251 |
except EnvironmentError:
|
1252 |
raise NotThisMethod("unable to read _version.py")
|
1253 |
+
mo = re.search(r"version_json = '''\n(.*)''' # END VERSION_JSON", contents, re.M | re.S)
|
|
|
1254 |
if not mo:
|
1255 |
+
mo = re.search(r"version_json = '''\r\n(.*)''' # END VERSION_JSON", contents, re.M | re.S)
|
|
|
1256 |
if not mo:
|
1257 |
raise NotThisMethod("no version_json in _version.py")
|
1258 |
return json.loads(mo.group(1))
|
|
|
1261 |
def write_to_version_file(filename, versions):
|
1262 |
"""Write the given version number to the given _version.py file."""
|
1263 |
os.unlink(filename)
|
1264 |
+
contents = json.dumps(versions, sort_keys=True, indent=1, separators=(",", ": "))
|
|
|
1265 |
with open(filename, "w") as f:
|
1266 |
f.write(SHORT_VERSION_PY % contents)
|
1267 |
|
|
|
1293 |
rendered += ".dirty"
|
1294 |
else:
|
1295 |
# exception #1
|
1296 |
+
rendered = "0+untagged.%d.g%s" % (pieces["distance"], pieces["short"])
|
|
|
1297 |
if pieces["dirty"]:
|
1298 |
rendered += ".dirty"
|
1299 |
return rendered
|
|
|
1407 |
def render(pieces, style):
|
1408 |
"""Render the given version pieces into the requested style."""
|
1409 |
if pieces["error"]:
|
1410 |
+
return {
|
1411 |
+
"version": "unknown",
|
1412 |
+
"full-revisionid": pieces.get("long"),
|
1413 |
+
"dirty": None,
|
1414 |
+
"error": pieces["error"],
|
1415 |
+
"date": None,
|
1416 |
+
}
|
1417 |
|
1418 |
if not style or style == "default":
|
1419 |
style = "pep440" # the default
|
|
|
1433 |
else:
|
1434 |
raise ValueError("unknown style '%s'" % style)
|
1435 |
|
1436 |
+
return {
|
1437 |
+
"version": rendered,
|
1438 |
+
"full-revisionid": pieces["long"],
|
1439 |
+
"dirty": pieces["dirty"],
|
1440 |
+
"error": None,
|
1441 |
+
"date": pieces.get("date"),
|
1442 |
+
}
|
1443 |
|
1444 |
|
1445 |
class VersioneerBadRootError(Exception):
|
|
|
1462 |
handlers = HANDLERS.get(cfg.VCS)
|
1463 |
assert handlers, "unrecognized VCS '%s'" % cfg.VCS
|
1464 |
verbose = verbose or cfg.verbose
|
1465 |
+
assert cfg.versionfile_source is not None, "please set versioneer.versionfile_source"
|
|
|
1466 |
assert cfg.tag_prefix is not None, "please set versioneer.tag_prefix"
|
1467 |
|
1468 |
versionfile_abs = os.path.join(root, cfg.versionfile_source)
|
|
|
1516 |
if verbose:
|
1517 |
print("unable to compute version")
|
1518 |
|
1519 |
+
return {
|
1520 |
+
"version": "0+unknown",
|
1521 |
+
"full-revisionid": None,
|
1522 |
+
"dirty": None,
|
1523 |
+
"error": "unable to compute version",
|
1524 |
+
"date": None,
|
1525 |
+
}
|
1526 |
|
1527 |
|
1528 |
def get_version():
|
|
|
1571 |
print(" date: %s" % vers.get("date"))
|
1572 |
if vers["error"]:
|
1573 |
print(" error: %s" % vers["error"])
|
1574 |
+
|
1575 |
cmds["version"] = cmd_version
|
1576 |
|
1577 |
# we override "build_py" in both distutils and setuptools
|
|
|
1604 |
# now locate _version.py in the new build/ directory and replace
|
1605 |
# it with an updated value
|
1606 |
if cfg.versionfile_build:
|
1607 |
+
target_versionfile = os.path.join(self.build_lib, cfg.versionfile_build)
|
|
|
1608 |
print("UPDATING %s" % target_versionfile)
|
1609 |
write_to_version_file(target_versionfile, versions)
|
1610 |
+
|
1611 |
cmds["build_py"] = cmd_build_py
|
1612 |
|
1613 |
if "cx_Freeze" in sys.modules: # cx_freeze enabled?
|
1614 |
from cx_Freeze.dist import build_exe as _build_exe
|
1615 |
+
|
1616 |
# nczeczulin reports that py2exe won't like the pep440-style string
|
1617 |
# as FILEVERSION, but it can be used for PRODUCTVERSION, e.g.
|
1618 |
# setup(console=[{
|
|
|
1633 |
os.unlink(target_versionfile)
|
1634 |
with open(cfg.versionfile_source, "w") as f:
|
1635 |
LONG = LONG_VERSION_PY[cfg.VCS]
|
1636 |
+
f.write(
|
1637 |
+
LONG
|
1638 |
+
% {
|
1639 |
+
"DOLLAR": "$",
|
1640 |
+
"STYLE": cfg.style,
|
1641 |
+
"TAG_PREFIX": cfg.tag_prefix,
|
1642 |
+
"PARENTDIR_PREFIX": cfg.parentdir_prefix,
|
1643 |
+
"VERSIONFILE_SOURCE": cfg.versionfile_source,
|
1644 |
+
}
|
1645 |
+
)
|
1646 |
+
|
1647 |
cmds["build_exe"] = cmd_build_exe
|
1648 |
del cmds["build_py"]
|
1649 |
|
1650 |
+
if "py2exe" in sys.modules: # py2exe enabled?
|
1651 |
try:
|
1652 |
from py2exe.distutils_buildexe import py2exe as _py2exe # py3
|
1653 |
except ImportError:
|
|
|
1666 |
os.unlink(target_versionfile)
|
1667 |
with open(cfg.versionfile_source, "w") as f:
|
1668 |
LONG = LONG_VERSION_PY[cfg.VCS]
|
1669 |
+
f.write(
|
1670 |
+
LONG
|
1671 |
+
% {
|
1672 |
+
"DOLLAR": "$",
|
1673 |
+
"STYLE": cfg.style,
|
1674 |
+
"TAG_PREFIX": cfg.tag_prefix,
|
1675 |
+
"PARENTDIR_PREFIX": cfg.parentdir_prefix,
|
1676 |
+
"VERSIONFILE_SOURCE": cfg.versionfile_source,
|
1677 |
+
}
|
1678 |
+
)
|
1679 |
+
|
1680 |
cmds["py2exe"] = cmd_py2exe
|
1681 |
|
1682 |
# we override different "sdist" commands for both environments
|
|
|
1703 |
# updated value
|
1704 |
target_versionfile = os.path.join(base_dir, cfg.versionfile_source)
|
1705 |
print("UPDATING %s" % target_versionfile)
|
1706 |
+
write_to_version_file(target_versionfile, self._versioneer_generated_versions)
|
1707 |
+
|
1708 |
cmds["sdist"] = cmd_sdist
|
1709 |
|
1710 |
return cmds
|
|
|
1759 |
root = get_root()
|
1760 |
try:
|
1761 |
cfg = get_config_from_root(root)
|
1762 |
+
except (EnvironmentError, configparser.NoSectionError, configparser.NoOptionError) as e:
|
|
|
1763 |
if isinstance(e, (EnvironmentError, configparser.NoSectionError)):
|
1764 |
+
print("Adding sample versioneer config to setup.cfg", file=sys.stderr)
|
|
|
1765 |
with open(os.path.join(root, "setup.cfg"), "a") as f:
|
1766 |
f.write(SAMPLE_CONFIG)
|
1767 |
print(CONFIG_ERROR, file=sys.stderr)
|
|
|
1770 |
print(" creating %s" % cfg.versionfile_source)
|
1771 |
with open(cfg.versionfile_source, "w") as f:
|
1772 |
LONG = LONG_VERSION_PY[cfg.VCS]
|
1773 |
+
f.write(
|
1774 |
+
LONG
|
1775 |
+
% {
|
1776 |
+
"DOLLAR": "$",
|
1777 |
+
"STYLE": cfg.style,
|
1778 |
+
"TAG_PREFIX": cfg.tag_prefix,
|
1779 |
+
"PARENTDIR_PREFIX": cfg.parentdir_prefix,
|
1780 |
+
"VERSIONFILE_SOURCE": cfg.versionfile_source,
|
1781 |
+
}
|
1782 |
+
)
|
1783 |
+
|
1784 |
+
ipy = os.path.join(os.path.dirname(cfg.versionfile_source), "__init__.py")
|
1785 |
if os.path.exists(ipy):
|
1786 |
try:
|
1787 |
with open(ipy, "r") as f:
|
|
|
1823 |
else:
|
1824 |
print(" 'versioneer.py' already in MANIFEST.in")
|
1825 |
if cfg.versionfile_source not in simple_includes:
|
1826 |
+
print(" appending versionfile_source ('%s') to MANIFEST.in" % cfg.versionfile_source)
|
|
|
1827 |
with open(manifest_in, "a") as f:
|
1828 |
f.write("include %s\n" % cfg.versionfile_source)
|
1829 |
else:
|