$darkmode
DENOPTIM
ConnectedLigandComparator.java
Go to the documentation of this file.
1/*
2 * DENOPTIM
3 * Copyright (C) 2019 Marco Foscato <marco.foscato@uib.no>
4 *
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU Affero General Public License as published
7 * by the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18
19package denoptim.utils;
20
21import java.util.Comparator;
22
30public class ConnectedLigandComparator implements Comparator<ConnectedLigand>
31{
32
33 @Override
35 {
36 final int FIRST = 1;
37 final int LAST = -1;
38
39 // Get the connection number
40 int cnnA = a.getConnections();
41 int cnnB = b.getConnections();
42
43 //Get the masses and #connection (fictitious for dummy)
44 int massA = 1;
45 int massB = 1;
46 if (a.isDummy())
47 {
48 if (cnnA == 1)
49 {
50 cnnA = 100;
51 }
52 } else {
53 massA = a.getAtom().getAtomicNumber();
54 }
55
56 if (b.isDummy())
57 {
58 if (cnnB == 1)
59 {
60 cnnB = 100;
61 }
62 } else {
63 massB = b.getAtom().getAtomicNumber();
64 }
65
66 //Decide on priority
67 if (cnnA == cnnB)
68 {
69 return Integer.compare(massB, massA);
70 }
71 else
72 {
73 if (cnnA < cnnB)
74 {
75 return FIRST;
76 }
77 else
78 {
79 return LAST;
80 }
81 }
82 }
83}
Compare two ConnectedLigand according to the number of connected atoms and the mass number.
int compare(ConnectedLigand a, ConnectedLigand b)
A ConnectedLigand is just an atom with an explicit field reporting the number of connected atoms.