annotate mayachemtools/lib/Bond.pm @ 2:dfff2614510e draft

Deleted selected files
author deepakjadmin
date Wed, 20 Jan 2016 12:15:15 -0500
parents 73ae111cf86f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1 package Bond;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
2 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
3 # $RCSfile: Bond.pm,v $
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
4 # $Date: 2015/02/28 20:47:02 $
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
5 # $Revision: 1.40 $
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
6 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
7 # Author: Manish Sud <msud@san.rr.com>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
8 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
9 # Copyright (C) 2015 Manish Sud. All rights reserved.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
10 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
11 # This file is part of MayaChemTools.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
12 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
13 # MayaChemTools is free software; you can redistribute it and/or modify it under
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
14 # the terms of the GNU Lesser General Public License as published by the Free
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
15 # Software Foundation; either version 3 of the License, or (at your option) any
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
16 # later version.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
17 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
18 # MayaChemTools is distributed in the hope that it will be useful, but without
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
19 # any warranty; without even the implied warranty of merchantability of fitness
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
20 # for a particular purpose. See the GNU Lesser General Public License for more
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
21 # details.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
22 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
23 # You should have received a copy of the GNU Lesser General Public License
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
24 # along with MayaChemTools; if not, see <http://www.gnu.org/licenses/> or
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
25 # write to the Free Software Foundation Inc., 59 Temple Place, Suite 330,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
26 # Boston, MA, 02111-1307, USA.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
27 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
28
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
29 use strict;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
30 use Carp;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
31 use Exporter;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
32 use Storable ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
33 use Scalar::Util ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
34 use ObjectProperty;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
35
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
36 use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
37
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
38 @ISA = qw(ObjectProperty Exporter);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
39 @EXPORT = qw();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
40 @EXPORT_OK = qw();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
41
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
42 %EXPORT_TAGS = (all => [@EXPORT, @EXPORT_OK]);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
43
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
44 # Setup class variables...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
45 my($ClassName, $ObjectID);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
46 _InitializeClass();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
47
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
48 # Overload Perl functions...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
49 use overload '""' => 'StringifyBond';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
50
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
51 # Class constructor...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
52 sub new {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
53 my($Class, %NamesAndValues) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
54
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
55 # Initialize object...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
56 my $This = {};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
57 bless $This, ref($Class) || $Class;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
58 $This->_InitializeBond();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
59
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
60 $This->_InitializeBondProperties(%NamesAndValues);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
61
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
62 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
63 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
64
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
65 # Initialize object data...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
66 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
67 sub _InitializeBond {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
68 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
69 my($ObjectID) = _GetNewObjectID();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
70
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
71 # All other property names and values along with all Set/Get<PropertyName> methods
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
72 # are implemented on-demand using ObjectProperty class.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
73 $This->{ID} = $ObjectID;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
74
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
75 # Bond from and to atoms indicate begining and ending bond atoms...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
76 $This->{BondFromAtom} = undef;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
77 $This->{BondToAtom} = undef;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
78
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
79 $This->{BondOrder} = '';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
80 $This->{BondType} = '';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
81 $This->{BondStereochemistry} = '';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
82 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
83
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
84 # Initialize class ...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
85 sub _InitializeClass {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
86 #Class name...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
87 $ClassName = __PACKAGE__;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
88
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
89 # ID to keep track of objects...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
90 $ObjectID = 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
91 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
92
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
93 # Initialize bond properties...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
94 sub _InitializeBondProperties {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
95 my($This, %NamesAndValues) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
96
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
97 my($Name, $Value, $MethodName);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
98 while (($Name, $Value) = each %NamesAndValues) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
99 $MethodName = "Set${Name}";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
100 $This->$MethodName($Value);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
101 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
102
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
103 if (!exists $NamesAndValues{'Atoms'}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
104 carp "Warning: ${ClassName}->new: Bond object instantiated without specifying atoms list...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
105 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
106 if (!exists $NamesAndValues{'BondOrder'}) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
107 carp "Warning: ${ClassName}->new: Bond object instantiated without setting bond order...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
108 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
109 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
110 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
111
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
112 # Setup an explicit SetID method to block setting of ID by AUTOLOAD function...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
113 sub SetID {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
114 my($This, $Value) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
115
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
116 carp "Warning: ${ClassName}->SetID: Object ID can't be changed: it's used for internal tracking...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
117
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
118 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
119 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
120
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
121 # Setup an explicit SetMolecule method to block setting of ID by AUTOLOAD function...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
122 sub SetMolecule {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
123 my($This, $Value) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
124
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
125 carp "Warning: ${ClassName}->SetMolecule: Molecule property can't be changed: it's used for internal tracking...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
126
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
127 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
128 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
129
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
130 # Assign bond to molecule...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
131 sub _SetMolecule {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
132 my($This, $Molecule) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
133
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
134 $This->{Molecule} = $Molecule;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
135
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
136 # Weaken the reference to disable increment of reference count; otherwise,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
137 # it it becomes a circular reference and destruction of Molecule object doesn't
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
138 # get initiated which in turn disables destruction of bond object.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
139 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
140 Scalar::Util::weaken($This->{Molecule});
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
141
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
142 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
143 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
144
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
145 # Set bond atoms...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
146 sub SetAtoms {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
147 my($This, @Values) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
148
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
149 if (!@Values) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
150 croak "Error: ${ClassName}->SetAtoms: No atoms specified...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
151 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
152
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
153 my($FirstValue, $TypeOfFirstValue, $Atom1, $Atom2, $AtomID1, $AtomID2);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
154 $FirstValue = $Values[0];
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
155 $TypeOfFirstValue = ref $FirstValue;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
156
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
157 if ($TypeOfFirstValue =~ /^ARRAY/) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
158 # Initialize using array refernce...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
159 if (@{$FirstValue} != 2) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
160 croak "Warning: ${ClassName}->SetAtoms: Number of atoms specified in bond object is not equal to 2...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
161 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
162 ($Atom1, $Atom2) = @{$FirstValue};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
163 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
164 else {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
165 # It's a list of values...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
166 if (@Values != 2) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
167 croak "Warning: ${ClassName}->SetAtoms: Number of atoms specified in bond object is not equal to 2...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
168 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
169 ($Atom1, $Atom2) = @Values;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
170 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
171
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
172 $AtomID1 = $Atom1->GetID(); $AtomID2 = $Atom2->GetID();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
173 if ($AtomID1 == $AtomID2) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
174 croak "Warning: ${ClassName}->SetAtoms: Can't specify same atoms to create a bond...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
175 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
176
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
177 $This->{BondFromAtom} = $Atom1;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
178 $This->{BondToAtom} = $Atom2;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
179
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
180 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
181 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
182
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
183 # Get bond atoms as array. In scalar context, return number of atoms involved in
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
184 # bond...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
185 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
186 sub GetAtoms {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
187 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
188
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
189 return wantarray ? ($This->{BondFromAtom}, $This->{BondToAtom}) : 2;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
190 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
191
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
192 # Get atom bonded to specified atom...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
193 sub GetBondedAtom {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
194 my($This, $Atom) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
195 my($Atom1, $Atom2, $AtomID1, $AtomID2, $AtomID);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
196
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
197 ($Atom1, $Atom2) = $This->GetAtoms();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
198 $AtomID1 = $Atom1->GetID(); $AtomID2 = $Atom2->GetID(); $AtomID = $Atom->GetID();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
199
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
200 return ($AtomID1 == $AtomID) ? $Atom2 : (($AtomID2 == $AtomID) ? $Atom1 : undef) ;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
201 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
202
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
203 # Get common atom between two bonds...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
204 sub GetCommonAtom {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
205 my($This, $Other) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
206 my($Atom1, $Atom2, $AtomID1, $AtomID2, $OtherAtom1, $OtherAtom2, $OtherAtomID1, $OtherAtomID2);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
207
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
208 ($Atom1, $Atom2) = $This->GetAtoms();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
209 $AtomID1 = $Atom1->GetID(); $AtomID2 = $Atom2->GetID();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
210
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
211 ($OtherAtom1, $OtherAtom2) = $Other->GetAtoms();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
212 $OtherAtomID1 = $OtherAtom1->GetID(); $OtherAtomID2 = $OtherAtom2->GetID();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
213
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
214 return ($AtomID1 == $OtherAtomID1 || $AtomID1 == $OtherAtomID2) ? $Atom1 : (($AtomID2 == $OtherAtomID1 || $AtomID2 == $OtherAtomID2) ? $Atom2 : undef) ;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
215 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
216
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
217 # Get bond from atom indicating begining atom of a bond...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
218 sub GetBondFromAtom {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
219 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
220
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
221 return $This->{BondFromAtom};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
222 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
223
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
224 # Get begin bond atom...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
225 sub GetBondBeginAtom {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
226 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
227
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
228 return $This->GetBondFromAtom();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
229 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
230
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
231 # Get bond to atom indicating ending atom of a bond...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
232 sub GetBondToAtom {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
233 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
234
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
235 return $This->{BondToAtom};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
236 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
237
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
238 # Get begin bond atom...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
239 sub GetBondEndAtom {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
240 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
241
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
242 return $This->GetBondToAtom();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
243 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
244
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
245 # Switch bond from and to atoms...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
246 sub SwitchBondFromAndToAtoms {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
247 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
248 my($FromAtom, $ToAtom);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
249
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
250 ($FromAtom, $ToAtom) = $This->GetAtoms();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
251
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
252 $This->{BondFromAtom} = $ToAtom;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
253 $This->{BondToAtom} = $FromAtom;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
254
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
255 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
256 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
257
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
258 # Set bond order...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
259 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
260 # Possible BondOrder are: 0 = None, 1 = Single, 1.5 = Aromatic, 2 = Double, 3 = Triple, 4 = Quadruple,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
261 # 5 = Quintuple, 6 = Sextuple, 7 = Septuple
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
262 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
263 # Possible BondType for different BondOrders are:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
264 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
265 # 0 : None, Ionic, Unspecified
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
266 # 1 : Single, Dative, Coordinate, SingleOrDouble, SingleOrAromatic, Tautomeric
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
267 # 1.5 : Aromatic, Resonance, SingleOrAromatic, DoubleOrAromatic
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
268 # 2 : Double, Tautomeric, SingleOrDouble, DoubleOrAromatic
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
269 # 3 : Triple
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
270 # 4 : Quadruple
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
271 # 5 : Quintuple
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
272 # 6 : Sextuple
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
273 # 7 : Septuple
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
274 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
275 # Note: BondType Any is valid for all BondOrders.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
276 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
277 # Possible BondStereochemistry values for different BondOrders are:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
278 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
279 # 0 : None, Unspecified
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
280 # 1 : Wedge, Up, Hash, Down, Wavy, WedgeOrHash, UpOrDown, Upward, Downward, None, Unspecified
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
281 # 2 : Cis, Trans, Z, E, DoubleCross, CisOrTrans, None, Unspecified
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
282 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
283 # Notes:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
284 # . BondType property is automatically assigned using default BondType values for
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
285 # specified BondOrder.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
286 # . BondType values can also be explicit set.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
287 # . To make bonds aromatic in a ring, explicitly set "Aromatic" property for bond/atoms and make sure
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
288 # appropriate BondOrder values are assigned.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
289 # . Dative or coordinate bond types are treated as single bond types with explicit formal charge
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
290 # of + and - on first and second bond atoms.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
291 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
292 sub SetBondOrder {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
293 my($This, $BondOrder) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
294
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
295 if ($BondOrder !~ /^(0|1|1.5|2|3|4|5|6|7)$/) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
296 croak "Error: ${ClassName}->SetBondOrder: BondOrder value $BondOrder is not valid. Supported values: 0, 1, 1.5, 2, 3, 4, 5, 6, 7";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
297 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
298
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
299 # Set bond order and type...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
300 my($BondType);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
301
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
302 BONDORDER: {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
303 if ($BondOrder == 1) {$BondType = 'Single'; last BONDORDER; }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
304 if ($BondOrder == 1.5) {$BondType = 'Aromatic'; last BONDORDER; }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
305 if ($BondOrder == 2) {$BondType = 'Double'; last BONDORDER; }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
306 if ($BondOrder == 3) {$BondType = 'Triple'; last BONDORDER; }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
307 if ($BondOrder == 4) {$BondType = 'Quadruple'; last BONDORDER; }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
308 if ($BondOrder == 5) {$BondType = 'Quintuple'; last BONDORDER; }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
309 if ($BondOrder == 6) {$BondType = 'Sextuple'; last BONDORDER; }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
310 if ($BondOrder == 7) {$BondType = 'Septuple'; last BONDORDER; }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
311 $BondType = '';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
312 $BondOrder = 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
313 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
314 $This->{BondType} = $BondType;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
315 $This->{BondOrder} = $BondOrder;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
316
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
317 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
318
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
319 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
320
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
321 # Set bond type for a specific bond...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
322 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
323 sub SetBondType {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
324 my($This, $BondType) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
325
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
326 if ($BondType !~ /^(None|Ionic|Unspecified|Single|Dative|Coordinate|SingleOrDouble|SingleOrAromatic|Aromatic|Tautomeric|Resonance|DoubleOrAromatic|Double|Triple|Quadruple|Any)$/i) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
327 croak "Error: ${ClassName}->SetBondType: BondType value $BondType is not valid. Supported values: None, Ionic, Unspecified, Single, Dative, Coordinate, SingleOrDouble, SingleOrAromatic, Aromatic, Tautomeric, Resonance, DoubleOrAromatic, Double, Triple, Quadruple, Any...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
328 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
329
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
330 # Make sure its a valid BondType value for BondOrder...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
331 my($BondOrder, $ValidBondType);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
332
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
333 $ValidBondType = 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
334 $BondOrder = $This->{BondOrder};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
335
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
336 BONDORDER: {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
337 if ($BondOrder == 0 && $BondType =~ /^(None|Ionic|Unspecified|Any)$/i) {$ValidBondType = 1; last BONDORDER; }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
338 if ($BondOrder == 1 && $BondType =~ /^(Single|Dative|Coordinate|SingleOrDouble|SingleOrAromatic|Tautomeric|Any)$/i) {$ValidBondType = 1; last BONDORDER; }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
339 if ($BondOrder == 1.5 && $BondType =~ /^(Aromatic|Resonance|SingleOrAromatic|DoubleOrAromatic|Any)$/i) {$ValidBondType = 1; last BONDORDER; }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
340 if ($BondOrder == 2 && $BondType =~ /^(Double|SingleOrDouble|DoubleOrAromatic|Tautomeric|Any)$/i ) {$ValidBondType = 1; last BONDORDER; }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
341 if ($BondOrder == 3 && $BondType =~ /^(Triple|Any)$/i) {$ValidBondType = 1; last BONDORDER; }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
342 if ($BondOrder == 4 && $BondType =~ /^(Quadruple|Any)$/i) {$ValidBondType = 1; last BONDORDER; }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
343 if ($BondOrder == 5 && $BondType =~ /^(Quintuple|Any)$/i) {$ValidBondType = 1; last BONDORDER; }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
344 if ($BondOrder == 6 && $BondType =~ /^(Sextuple|Any)$/i) {$ValidBondType = 1; last BONDORDER; }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
345 if ($BondOrder == 7 && $BondType =~ /^(Septuple|Any)$/i) {$ValidBondType = 1; last BONDORDER; }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
346 $ValidBondType = 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
347 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
348
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
349 if (!$ValidBondType) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
350 carp "Warning: ${ClassName}->SetBondType: Assigning invalid BondType value, $BondType, for BondOrder $BondOrder...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
351 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
352
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
353 $This->{BondType} = $BondType;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
354
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
355 # Set explicit formal charge for atoms involved in Dative or coordinate bonds...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
356 if ($BondType =~ /^(Dative|Coordinate)$/i) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
357 my($Atom1, $Atom2) = $This->GetAtoms();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
358 $Atom1->SetFormalCharge('1');
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
359 $Atom2->SetFormalCharge('-1');
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
360 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
361
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
362 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
363 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
364
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
365 # Set bond stereochemistry...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
366 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
367 # Single bond stereochemistry:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
368 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
369 # None, Unspecified: Not a stereo bond or unspecified
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
370 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
371 # Wedge, Up : Wedge end pointing up
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
372 # Hash, Down: Wedge end pointing down
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
373 # Wavy, WedgeOrHash, UpOrDown: Wedge end up or down
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
374 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
375 # Note: Wedge starts at begin atom of bond making wedge pointed end always at this
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
376 # atom.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
377 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
378 # Upward: Single bond around cis/trans double bonds pointing upward
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
379 # Downward: Single bond around cis/trans double bonds pointing upward
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
380 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
381 # Note: Upward/downward bonds start at atoms involved in cis/trans double bond.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
382 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
383 # Double bond stereochemistry:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
384 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
385 # None, Unspecified: Not a stereo bond or unspecified
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
386 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
387 # Z, cis: Similar groups on same side of double bond
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
388 # E, trans: Similar groups on different side of double bond
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
389 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
390 # CisOrTrans, DoubleCross: cis or trans
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
391 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
392 sub SetBondStereochemistry {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
393 my($This, $BondStereochemistry) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
394
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
395 if ($BondStereochemistry !~ /^(None|Unspecified|Wedge|Hash|Up|Down|Wavy|WedgeOrHash|UpOrDown|Upward|Downward|Cis|Trans|Z|E|DoubleCross|CisOrTrans)$/i) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
396 croak "Error: ${ClassName}->SetBondStereochemistry: BondStereochemistry value $BondStereochemistry is not valid. Supported values: None, Unspecified, Wedge, Hash, Up, Down, Wavy, WedgeOrHash, UpOrDown, Upward, Downward, Cis, Trans, Z, E, DoubleCross, CisOrTrans...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
397 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
398
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
399 # Make sure its a valid BondStereochemistry value for BondOrder...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
400 my($BondOrder, $ValidBondType);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
401
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
402 $ValidBondType = 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
403 $BondOrder = $This->{BondOrder};
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
404
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
405 BONDORDER: {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
406 if ($BondOrder == 0 && $BondStereochemistry =~ /^(None|Unspecified)$/i) {$ValidBondType = 1; last BONDORDER; }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
407 if ($BondOrder == 1 && $BondStereochemistry =~ /^(Wedge|Hash|Up|Down|Wavy|WedgeOrHash|UpOrDown|Upward|Downward|None|Unspecified)$/i) {$ValidBondType = 1; last BONDORDER; }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
408 if ($BondOrder == 2 && $BondStereochemistry =~ /^(Cis|Trans|Z|E|DoubleCross|CisOrTrans|None|Unspecified)$/i ) {$ValidBondType = 1; last BONDORDER; }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
409 $ValidBondType = 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
410 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
411
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
412 if (!$ValidBondType) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
413 carp "Warning: ${ClassName}->SetBondStereochemistry: Assigning invalid BondStereochemistry value, $BondStereochemistry, for BondOrder $BondOrder...";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
414 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
415
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
416 $This->{BondStereochemistry} = $BondStereochemistry;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
417
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
418 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
419 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
420
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
421 # Is it a single bond?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
422 sub IsSingle {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
423 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
424
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
425 return ($This->{BondOrder} == 1) ? 1 : 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
426 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
427
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
428 # Is it a double bond?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
429 sub IsDouble {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
430 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
431
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
432 return ($This->{BondOrder} == 2) ? 1 : 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
433 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
434
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
435 # Is it a triple bond?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
436 sub IsTriple {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
437 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
438
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
439 return ($This->{BondOrder} == 3) ? 1 : 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
440 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
441
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
442 # Is it a quadruple bond?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
443 sub IsQuadruple {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
444 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
445
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
446 return ($This->{BondOrder} == 4) ? 1 : 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
447 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
448
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
449 # Is aromatic property set for the bond?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
450 sub IsAromatic {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
451 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
452 my($Aromatic);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
453
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
454 $Aromatic = $This->GetAromatic();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
455
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
456 return ((defined($Aromatic) && $Aromatic) || $This->{BondOrder} == 1.5) ? 1 : 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
457 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
458
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
459 # Is it a quintuple bond?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
460 sub IsQuintuple {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
461 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
462
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
463 return ($This->{BondOrder} == 5) ? 1 : 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
464 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
465
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
466 # Is it a sextuple bond?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
467 sub IsSextuple {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
468 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
469
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
470 return ($This->{BondOrder} == 6) ? 1 : 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
471 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
472
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
473 # Is bond type specified?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
474 sub IsBondTypeSpecified {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
475 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
476
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
477 return ($This->{BondType} && $This->{BondType} !~ /^(None|Unspecified)$/i) ? 1 : 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
478 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
479
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
480 # Is it a dative or coordinate bond?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
481 sub IsDative {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
482 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
483
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
484 return ($This->{BondType} =~ /^(Dative|Coordinate)$/i) ? 1 : 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
485 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
486
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
487 # Is it a dative or coordinate bond?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
488 sub IsCoordinate {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
489 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
490
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
491 return $This->IsDative();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
492 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
493
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
494 # Is it a ionic bond?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
495 sub IsIonic {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
496 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
497
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
498 return ($This->{BondType} =~ /^Ionic$/i) ? 1 : 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
499 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
500
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
501 # Is it a tautomeric bond?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
502 sub IsTautomeric {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
503 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
504
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
505 return ($This->{BondType} =~ /^Tautomeric$/i) ? 1 : 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
506 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
507
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
508 # Is bond stereochemistry specified?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
509 sub IsBondStereochemistrySpecified {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
510 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
511
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
512 return ($This->{BondStereochemistry} && $This->{BondStereochemistry} !~ /^(None|Unspecified)$/i) ? 1 : 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
513 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
514
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
515 # Is it a Wedge or Up single bond?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
516 sub IsWedge {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
517 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
518
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
519 return $This->IsUp();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
520 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
521
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
522 # Is it a Wedge or Up single bond?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
523 sub IsUp {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
524 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
525
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
526 return ($This->{BondStereochemistry} =~ /^(Wedge|Up)$/i) ? 1 : 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
527 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
528
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
529 # Is it a Hash or Down single bond?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
530 sub IsHash {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
531 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
532
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
533 return $This->IsDown();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
534 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
535
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
536 # Is it a Hash or Down single bond?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
537 sub IsDown {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
538 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
539
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
540 return ($This->{BondStereochemistry} =~ /^(Hash|Down)$/i) ? 1 : 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
541 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
542
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
543 # Is it a Wavy, WedgeOrHash or UpOrDown single bond?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
544 sub IsWedgeOrHash {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
545 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
546
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
547 return $This->IsUpOrDown();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
548 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
549
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
550 # Is it a Wavy, WedgeOrHash or UpOrDown single bond?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
551 sub IsUpOrDown {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
552 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
553
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
554 return ($This->{BondStereochemistry} =~ /^(Wavy|WedgeOrHash|UpOrDown)$/i) ? 1 : 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
555 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
556
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
557 # Is it a upward single bond?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
558 sub IsUpward {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
559 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
560
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
561 return ($This->{BondStereochemistry} =~ /^Upward$/i) ? 1 : 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
562 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
563
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
564 # Is it a Downward single bond?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
565 sub IsDownward {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
566 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
567
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
568 return ($This->{BondStereochemistry} =~ /^Downward$/i) ? 1 : 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
569 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
570 # Is it a cis or Z double bond?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
571 sub IsCis {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
572 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
573
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
574 return ($This->{BondStereochemistry} =~ /^(Cis|Z)$/i) ? 1 : 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
575 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
576
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
577 # Is it a trans or E double bond?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
578 sub IsTrans {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
579 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
580
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
581 return ($This->{BondStereochemistry} =~ /^(Trans|E)$/i) ? 1 : 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
582 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
583
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
584 # Is it a cis or trans double bond?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
585 sub IsCisOrTrans {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
586 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
587
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
588 return ($This->{BondStereochemistry} =~ /^(CisOrTrans|DoubleCross)$/i) ? 1 : 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
589 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
590
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
591 # Delete bond...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
592 sub DeleteBond {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
593 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
594
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
595 # Is this atom in a molecule?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
596 if (!$This->HasProperty('Molecule')) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
597 # Nothing to do...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
598 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
599 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
600 my($Molecule);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
601 $Molecule = $This->GetProperty('Molecule');
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
602 $Molecule->DeleteBond($This);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
603
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
604 return $This;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
605 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
606
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
607 # Copy bond and all its associated data...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
608 sub Copy {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
609 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
610 my($Bond);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
611
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
612 $Bond = Storable::dclone($This);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
613
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
614 return $Bond;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
615 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
616
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
617 # Is bond in a ring?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
618 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
619 sub IsInRing {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
620 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
621
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
622 # Is this bond in a molecule?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
623 if (!$This->HasProperty('Molecule')) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
624 return undef;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
625 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
626 my($Molecule);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
627 $Molecule = $This->GetProperty('Molecule');
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
628
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
629 return $Molecule->_IsBondInRing($This);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
630 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
631
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
632 # Is bond not in a ring?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
633 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
634 sub IsNotInRing {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
635 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
636
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
637 # Is this bond in a molecule?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
638 if (!$This->HasProperty('Molecule')) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
639 return undef;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
640 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
641 my($Molecule);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
642 $Molecule = $This->GetProperty('Molecule');
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
643
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
644 return $Molecule->_IsBondNotInRing($This);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
645 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
646
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
647 # Is bond only in one ring?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
648 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
649 sub IsOnlyInOneRing {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
650 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
651
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
652 # Is this bond in a molecule?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
653 if (!$This->HasProperty('Molecule')) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
654 return undef;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
655 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
656 my($Molecule);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
657 $Molecule = $This->GetProperty('Molecule');
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
658
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
659 return $Molecule->_IsBondInOnlyOneRing($This);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
660 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
661
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
662 # Is bond in a ring of specific size?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
663 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
664 sub IsInRingOfSize {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
665 my($This, $RingSize) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
666
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
667 # Is this bond in a molecule?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
668 if (!$This->HasProperty('Molecule')) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
669 return undef;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
670 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
671 my($Molecule);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
672 $Molecule = $This->GetProperty('Molecule');
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
673
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
674 return $Molecule->_IsBondInRingOfSize($This, $RingSize);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
675 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
676
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
677 # Get size of smallest ring containing the bond...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
678 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
679 sub GetSizeOfSmallestRing {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
680 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
681
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
682 # Is this bond in a molecule?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
683 if (!$This->HasProperty('Molecule')) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
684 return undef;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
685 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
686 my($Molecule);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
687 $Molecule = $This->GetProperty('Molecule');
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
688
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
689 return $Molecule->_GetSizeOfSmallestBondRing($This);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
690 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
691
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
692 # Get size of largest ring containing the bond...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
693 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
694 sub GetSizeOfLargestRing {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
695 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
696
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
697 # Is this bond in a molecule?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
698 if (!$This->HasProperty('Molecule')) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
699 return undef;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
700 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
701 my($Molecule);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
702 $Molecule = $This->GetProperty('Molecule');
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
703
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
704 return $Molecule->_GetSizeOfLargestBondRing($This);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
705 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
706
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
707 # Get number of rings containing the bond...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
708 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
709 sub GetNumOfRings {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
710 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
711
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
712 # Is this bond in a molecule?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
713 if (!$This->HasProperty('Molecule')) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
714 return undef;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
715 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
716 my($Molecule);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
717 $Molecule = $This->GetProperty('Molecule');
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
718
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
719 return $Molecule->_GetNumOfBondRings($This);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
720 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
721
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
722 # Get number of rings with odd size containing the bond...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
723 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
724 sub GetNumOfRingsWithOddSize {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
725 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
726
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
727 # Is this bond in a molecule?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
728 if (!$This->HasProperty('Molecule')) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
729 return undef;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
730 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
731 my($Molecule);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
732 $Molecule = $This->GetProperty('Molecule');
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
733
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
734 return $Molecule->_GetNumOfBondRingsWithOddSize($This);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
735 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
736
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
737 # Get number of rings with even size containing the bond...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
738 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
739 sub GetNumOfRingsWithEvenSize {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
740 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
741
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
742 # Is this bond in a molecule?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
743 if (!$This->HasProperty('Molecule')) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
744 return undef;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
745 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
746 my($Molecule);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
747 $Molecule = $This->GetProperty('Molecule');
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
748
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
749 return $Molecule->_GetNumOfBondRingsWithEvenSize($This);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
750 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
751
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
752 # Get number of rings with specified size containing the bond...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
753 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
754 sub GetNumOfRingsWithSize {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
755 my($This, $RingSize) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
756
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
757 # Is this bond in a molecule?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
758 if (!$This->HasProperty('Molecule')) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
759 return undef;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
760 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
761 my($Molecule);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
762 $Molecule = $This->GetProperty('Molecule');
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
763
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
764 return $Molecule->_GetNumOfBondRingsWithSize($This, $RingSize);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
765 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
766
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
767 # Get number of rings with size less than specified containing the bond...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
768 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
769 sub GetNumOfRingsWithSizeLessThan {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
770 my($This, $RingSize) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
771
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
772 # Is this bond in a molecule?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
773 if (!$This->HasProperty('Molecule')) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
774 return undef;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
775 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
776 my($Molecule);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
777 $Molecule = $This->GetProperty('Molecule');
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
778
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
779 return $Molecule->_GetNumOfBondRingsWithSizeLessThan($This, $RingSize);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
780 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
781
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
782 # Get number of rings with size greater than specified size containing the bond...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
783 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
784 sub GetNumOfRingsWithSizeGreaterThan {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
785 my($This, $RingSize) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
786
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
787 # Is this bond in a molecule?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
788 if (!$This->HasProperty('Molecule')) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
789 return undef;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
790 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
791 my($Molecule);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
792 $Molecule = $This->GetProperty('Molecule');
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
793
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
794 return $Molecule->_GetNumOfBondRingsWithSizeGreaterThan($This, $RingSize);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
795 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
796
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
797 # Get all rings as an array of references to arrays containing ring atoms...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
798 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
799 sub GetRings {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
800 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
801
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
802 # Is this bond in a molecule?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
803 if (!$This->HasProperty('Molecule')) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
804 return undef;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
805 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
806 my($Molecule);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
807 $Molecule = $This->GetProperty('Molecule');
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
808
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
809 return $Molecule->_GetBondRings($This);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
810 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
811
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
812 # Get smallest ring as an array containing ring atoms...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
813 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
814 sub GetSmallestRing {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
815 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
816
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
817 # Is this bond in a molecule?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
818 if (!$This->HasProperty('Molecule')) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
819 return undef;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
820 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
821 my($Molecule);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
822 $Molecule = $This->GetProperty('Molecule');
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
823
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
824 return $Molecule->_GetSmallestBondRing($This);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
825 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
826
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
827 # Get largest ring as an array containing ring atoms...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
828 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
829 sub GetLargestRing {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
830 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
831
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
832 # Is this bond in a molecule?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
833 if (!$This->HasProperty('Molecule')) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
834 return undef;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
835 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
836 my($Molecule);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
837 $Molecule = $This->GetProperty('Molecule');
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
838
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
839 return $Molecule->_GetLargestBondRing($This);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
840 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
841
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
842 # Get odd size rings an array of references to arrays containing ring atoms...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
843 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
844 sub GetRingsWithOddSize {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
845 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
846
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
847 # Is this bond in a molecule?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
848 if (!$This->HasProperty('Molecule')) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
849 return undef;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
850 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
851 my($Molecule);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
852 $Molecule = $This->GetProperty('Molecule');
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
853
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
854 return $Molecule->_GetBondRingsWithOddSize($This);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
855 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
856
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
857 # Get even size rings an array of references to arrays containing ring atoms...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
858 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
859 sub GetRingsWithEvenSize {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
860 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
861
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
862 # Is this bond in a molecule?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
863 if (!$This->HasProperty('Molecule')) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
864 return undef;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
865 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
866 my($Molecule);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
867 $Molecule = $This->GetProperty('Molecule');
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
868
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
869 return $Molecule->_GetBondRingsWithEvenSize($This);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
870 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
871
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
872 # Get rings with specified size an array of references to arrays containing ring atoms...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
873 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
874 sub GetRingsWithSize {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
875 my($This, $RingSize) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
876
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
877 # Is this bond in a molecule?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
878 if (!$This->HasProperty('Molecule')) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
879 return undef;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
880 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
881 my($Molecule);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
882 $Molecule = $This->GetProperty('Molecule');
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
883
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
884 return $Molecule->_GetBondRingsWithSize($This, $RingSize);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
885 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
886
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
887 # Get rings with size less than specfied size as an array of references to arrays containing ring atoms...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
888 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
889 sub GetRingsWithSizeLessThan {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
890 my($This, $RingSize) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
891
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
892 # Is this bond in a molecule?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
893 if (!$This->HasProperty('Molecule')) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
894 return undef;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
895 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
896 my($Molecule);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
897 $Molecule = $This->GetProperty('Molecule');
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
898
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
899 return $Molecule->_GetBondRingsWithSizeLessThan($This, $RingSize);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
900 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
901
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
902 # Get rings with size greater than specfied size as an array of references to arrays containing ring atoms...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
903 #
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
904 sub GetRingsWithSizeGreaterThan {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
905 my($This, $RingSize) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
906
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
907 # Is this bond in a molecule?
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
908 if (!$This->HasProperty('Molecule')) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
909 return undef;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
910 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
911 my($Molecule);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
912 $Molecule = $This->GetProperty('Molecule');
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
913
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
914 return $Molecule->_GetBondRingsWithSizeGreaterThan($This, $RingSize);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
915 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
916
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
917 # Get next object ID...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
918 sub _GetNewObjectID {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
919 $ObjectID++;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
920 return $ObjectID;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
921 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
922
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
923 # Return a string containing bond and other properties...
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
924 sub StringifyBond {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
925 my($This) = @_;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
926 my($BondString, $ID, $BondOrder, $BondType, $Stereochemistry, $AtomsString, $RingBond, $AromaticBond, $NumOfRings, $Atom1, $Atom2);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
927
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
928 $ID = $This->GetID();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
929 $BondOrder = $This->GetBondOrder();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
930 if (!defined $BondOrder) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
931 $BondOrder = "undefined";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
932 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
933 $BondType = $This->GetBondType();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
934 if (!defined $BondOrder) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
935 $BondType = "undefined";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
936 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
937 if (defined($BondOrder) && $BondOrder == 2) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
938 $Stereochemistry = $This->GetStereochemistry();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
939 if (!defined $Stereochemistry) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
940 $Stereochemistry = "undefined";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
941 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
942 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
943 $RingBond = $This->IsInRing();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
944 if (defined $RingBond) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
945 $RingBond = $RingBond ? 'Yes' : 'No';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
946 $NumOfRings = $This->GetNumOfRings();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
947 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
948 else {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
949 $RingBond = 'undefined';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
950 $NumOfRings = 'undefined';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
951 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
952
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
953 $AromaticBond = $This->GetAromatic();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
954 if (defined $AromaticBond) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
955 $AromaticBond = $AromaticBond ? 'Yes' : 'No';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
956 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
957 else {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
958 $AromaticBond = 'undefined';
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
959 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
960
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
961 ($Atom1, $Atom2) = $This->GetAtoms();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
962 $AtomsString = "Atoms: undefined";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
963 if (defined($Atom1) && defined($Atom2)) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
964 my($Atom, $AtomID, $AtomCount, $AtomName, $AtomSymbol, $AtomicNumber, @BondAtoms);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
965 @BondAtoms = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
966 push @BondAtoms, ($Atom1, $Atom2);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
967 $AtomCount = 0;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
968 $AtomsString = "";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
969 for $Atom (@BondAtoms) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
970 $AtomCount++;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
971 $AtomID = $Atom->GetID();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
972 $AtomName = $Atom->GetName();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
973 $AtomSymbol = $Atom->GetAtomSymbol();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
974 $AtomicNumber = $Atom->GetAtomicNumber();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
975 if ($AtomCount == 1) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
976 $AtomsString .= "FirstAtom:";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
977 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
978 else {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
979 $AtomsString .= "; SecondAtom:";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
980 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
981 $AtomsString .= " [ ID: $AtomID; Name: \"$AtomName\"; AtomSymbol: \"$AtomSymbol\"; AtomicNumber: $AtomicNumber ]";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
982 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
983 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
984 $BondString = "Bond: ID: $ID; BondOrder: $BondOrder; BondType: $BondType; RingBond: $RingBond; NumOfBondRings: $NumOfRings; AromaticBond: $AromaticBond;";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
985 if (defined($BondOrder) && $BondOrder == 2) {
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
986 $BondString .= " Stereochemistry: $Stereochemistry;";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
987 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
988 $BondString .= " $AtomsString";
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
989
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
990 return $BondString;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
991 }
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
992
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
993 1;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
994
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
995 __END__
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
996
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
997 =head1 NAME
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
998
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
999 Bond
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1000
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1001 =head1 SYNOPSIS
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1002
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1003 use Bond;
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1004
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1005 use Bond qw(:all);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1006
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1007 =head1 DESCRIPTION
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1008
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1009 B<Bond> class provides the following methods:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1010
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1011 new, Copy, DeleteBond, GetAtoms, GetBondBeginAtom, GetBondEndAtom,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1012 GetBondFromAtom, GetBondToAtom, GetBondedAtom, GetCommonAtom, GetLargestRing,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1013 GetNumOfRings, GetNumOfRingsWithEvenSize, GetNumOfRingsWithOddSize,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1014 GetNumOfRingsWithSize, GetNumOfRingsWithSizeGreaterThan,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1015 GetNumOfRingsWithSizeLessThan, GetRings, GetRingsWithEvenSize,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1016 GetRingsWithOddSize, GetRingsWithSize, GetRingsWithSizeGreaterThan,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1017 GetRingsWithSizeLessThan, GetSizeOfLargestRing, GetSizeOfSmallestRing,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1018 GetSmallestRing, IsAromatic, IsBondStereochemistrySpecified, IsBondTypeSpecified,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1019 IsCis, IsCisOrTrans, IsCoordinate, IsDative, IsDouble, IsDown, IsDownward, IsHash,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1020 IsInRing, IsInRingOfSize, IsIonic, IsNotInRing, IsOnlyInOneRing, IsQuadruple,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1021 IsQuintuple, IsSextuple, IsSingle, IsTautomeric, IsTrans, IsTriple, IsUp,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1022 IsUpOrDown, IsUpward, IsWedge, IsWedgeOrHash, SetAtoms, SetBondOrder,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1023 SetBondStereochemistry, SetBondType, StringifyBond, SwitchBondFromAndToAtoms
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1024
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1025 B<Bond> class is derived from B<ObjectProperty> base class which provides methods not explicitly
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1026 defined in B<Atom> or B<ObjectProperty> class using Perl's AUTOLOAD functionality. These methods
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1027 are generated on-the-fly for a specified object property:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1028
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1029 Set<PropertyName>(<PropertyValue>);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1030 $PropertyValue = Get<PropertyName>();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1031 Delete<PropertyName>();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1032
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1033 =head2 METHODS
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1034
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1035 =over 4
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1036
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1037 =item B<new>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1038
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1039 $NewBond = new Bond([%PropertyNameAndValues]);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1040
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1041 Using specified I<Bond> property names and values hash, B<new> method creates a new object
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1042 and returns a reference to newly created B<Bond> object. By default, following properties are
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1043 initialized:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1044
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1045 ID = SequentialObjectID
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1046 @Atoms = ();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1047 BondType = ""
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1048 BondOrder = ""
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1049
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1050 Except for I<ID> property, all other default properties and other additional properties can
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1051 be set during invocation of this method.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1052
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1053 Examples:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1054
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1055 $Bond = new Bond();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1056 $DoubleBond = new Bond('Atoms' => [$Atom2, $Atom1],
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1057 'BondOrder' => 2);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1058
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1059 =item B<Copy>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1060
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1061 $BondCopy = $Bond->Copy();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1062
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1063 Copy I<Bond> and its associated data using B<Storable::dclone> and return a new
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1064 B<Bond> object.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1065
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1066 =item B<DeleteBond>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1067
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1068 $Bond->DeleteBond();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1069
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1070 Delete I<Bond> between atoms in from a molecule.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1071
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1072 =item B<GetAtoms>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1073
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1074 @BondedAtoms = $Bond->GetAtoms();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1075
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1076 Returns an array containing I<Atoms> invoved in I<Bond>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1077
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1078 =item B<GetBondedAtom>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1079
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1080 $BondedAtom = $Bond->GetBondedAtom($Atom);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1081
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1082 Returns B<BondedAtom> bonded to I<Atom> in I<Bond>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1083
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1084 =item B<GetBondBeginAtom>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1085
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1086 $BeginAtom = $Bond->GetBondBeginAtom();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1087
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1088 Returns B<BeginAtom> corresponding to bond starting atom in I<Bond>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1089
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1090 =item B<GetBondEndAtom>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1091
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1092 $EndAtom = $Bond->GetBondEndAtom();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1093
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1094 Returns B<EndAtom> corresponding to bond ending atom in I<Bond>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1095
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1096 =item B<GetBondFromAtom>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1097
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1098 $FromAtom = $Bond->GetBondFromAtom();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1099
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1100 Returns B<FromAtom> corresponding to bond starting atom in I<Bond>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1101
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1102 =item B<GetBondToAtom>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1103
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1104 $ToAotm = $Bond->GetBondToAtom();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1105
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1106 Returns B<ToAtom> corresponding to bond ending atom in I<Bond>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1107
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1108 =item B<GetCommonAtom>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1109
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1110 $CommonAtom = $Bond->GetCommonAtom($OtherBond);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1111
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1112 Returns B<Atom> common to both I<Bond> and I<$OtherBond>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1113
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1114 =item B<GetLargestRing>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1115
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1116 @RingAtoms = $Bond->GetLargestRing();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1117
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1118 Returns an array of ring I<Atoms> corresponding to the largest ring containing I<Bond>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1119 in a molecule
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1120
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1121 =item B<GetNumOfRings>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1122
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1123 $NumOfRings = $Bond->GetNumOfRings();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1124
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1125 Returns number of rings containing I<Bond> in a molecule.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1126
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1127 =item B<GetNumOfRingsWithEvenSize>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1128
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1129 $NumOfRings = $Bond->GetNumOfRingsWithEvenSize();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1130
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1131 Returns number of rings with even size containing I<Bond> in a molecule.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1132
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1133 =item B<GetNumOfRingsWithOddSize>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1134
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1135 $NumOfRings = $Bond->GetNumOfRingsWithOddSize();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1136
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1137 Returns number of rings with odd size containing I<Bond> in a molecule.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1138
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1139 =item B<GetNumOfRingsWithSize>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1140
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1141 $NumOfRings = $Bond->GetNumOfRingsWithSize($RingSize);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1142
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1143 Returns number of rings with specific I<RingSize> containing I<Bond> in a molecule.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1144
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1145 =item B<GetNumOfRingsWithSizeGreaterThan>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1146
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1147 $NumOfRings = $Bond->GetNumOfRingsWithSizeGreaterThan($RingSize);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1148
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1149 Returns number of rings with size greater than specific I<RingSize> containing
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1150 I<Bond> in a molecule.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1151
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1152 =item B<GetNumOfRingsWithSizeLessThan>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1153
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1154 $NumOfRings = $Bond->GetNumOfRingsWithSizeLessThan($RingSize);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1155
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1156 Returns number of rings with size less than specific I<RingSize> containing I<Bond>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1157 in a molecule.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1158
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1159 =item B<GetRings>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1160
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1161 @Rings = $Bond->GetRings();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1162
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1163 Returns an array of references to arrays containing ring atoms corressponding
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1164 to all rings containing I<Bond> in a molecule.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1165
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1166 =item B<GetRingsWithEvenSize>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1167
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1168 @Rings = $Bond->GetRingsWithEvenSize();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1169
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1170 Returns an array of references to arrays containing ring atoms corressponding to all rings with even size
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1171 containing I<Bond> in a molecule.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1172
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1173 =item B<GetRingsWithOddSize>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1174
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1175 @Rings = $Bond->GetRingsWithOddSize();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1176
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1177 Returns an array of references to arrays containing ring atoms corressponding to all rings with odd size
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1178 containing I<Bond> in a molecule.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1179
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1180 =item B<GetRingsWithSize>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1181
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1182 @Rings = $Bond->GetRingsWithSize($RingSize);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1183
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1184 Returns an array of references to arrays containing ring atoms corressponding to all rings with specific
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1185 I<RingSize >containing I<Bond> in a molecule.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1186
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1187 =item B<GetRingsWithSizeGreaterThan>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1188
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1189 @Rings = $Bond->GetRingsWithSizeGreaterThan($RingSize);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1190
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1191 Returns an array of references to arrays containing ring atoms corressponding to all rings with size
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1192 greater than specific I<RingSize >containing I<Bond> in a molecule.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1193
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1194 =item B<GetRingsWithSizeLessThan>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1195
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1196 @Rings = $Bond->GetRingsWithSizeLessThan($RingSize);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1197
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1198 Returns an array of references to arrays containing ring atoms corressponding to all rings with size
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1199 less than specific I<RingSize >containing I<Bond> in a molecule.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1200
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1201 =item B<GetSizeOfLargestRing>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1202
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1203 $Size = $Bond->GetSizeOfLargestRing();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1204
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1205 Returns size of the largest ring containing I<Bond> in a molecule.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1206
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1207 =item B<GetSizeOfSmallestRing>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1208
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1209 $Size = $Bond->GetSizeOfSmallestRing();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1210
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1211 Returns size of the smallest ring containing I<Bond> in a molecule.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1212
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1213 =item B<GetSmallestRing>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1214
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1215 @RingAtoms = $Bond->GetSmallestRing();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1216
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1217 Returns an array of ring I<Atoms> corresponding to the largest ring containing I<Bond>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1218 in a molecule.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1219
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1220 =item B<IsAromatic>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1221
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1222 $Status = $Bond->IsAromatic();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1223
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1224 Returns 1 or 0 based on whether it's an aromatic I<Bond>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1225
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1226 =item B<IsBondStereochemistrySpecified>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1227
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1228 $Status = $Bond->IsBondStereochemistrySpecified();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1229
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1230 Returns 1 or 0 based on whether I<Bond>'s sterochemistry is specified.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1231
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1232 =item B<IsBondTypeSpecified>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1233
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1234 $Status = $Bond->IsBondTypeSpecified();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1235
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1236 Returns 1 or 0 based on whether I<Bond>'s type is specified.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1237
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1238 =item B<IsCis>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1239
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1240 $Status = $Bond->IsCis();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1241
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1242 Returns 1 or 0 based on whether it's a cis I<Bond>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1243
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1244 =item B<IsCisOrTrans>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1245
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1246 $Status = $Bond->IsCisOrTrans();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1247
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1248 Returns 1 or 0 based on whether it's a cis or trans I<Bond>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1249
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1250 =item B<IsCoordinate>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1251
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1252 $Status = $Bond->IsCoordinate();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1253
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1254 Returns 1 or 0 based on whether it's a coordinate or dative I<Bond>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1255
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1256 =item B<IsDative>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1257
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1258 $Status = $Bond->IsDative();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1259
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1260 Returns 1 or 0 based on whether it's a coordinate or dative I<Bond>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1261
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1262 =item B<IsDouble>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1263
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1264 $Status =$Bond->IsDouble();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1265
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1266 Returns 1 or 0 based on whether it's a double I<Bond>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1267
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1268 =item B<IsDown>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1269
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1270 $Status = $Bond->IsDown();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1271
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1272 Returns 1 or 0 based on whether it's a hash or down single I<Bond>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1273
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1274 =item B<IsDownward>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1275
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1276 $Return = $Bond->IsDownward();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1277
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1278 Returns 1 or 0 based on whether it's a downward I<Bond>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1279
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1280 =item B<IsHash>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1281
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1282 $Status = $Bond->IsHash();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1283
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1284 Returns 1 or 0 based on whether it's a hash or down single I<Bond>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1285
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1286 =item B<IsInRing>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1287
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1288 $Status = $Bond->IsInRing();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1289
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1290 Returns 1 or 0 based on whether I<Bond> is present in a ring.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1291
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1292 =item B<IsInRingOfSize>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1293
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1294 $Status = $Bond->IsInRingOfSize($Size);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1295
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1296 Returns 1 or 0 based on whether I<Bond> is present in a ring of specific I<Size>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1297
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1298 =item B<IsIonic>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1299
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1300 $Status = $Bond->IsIonic();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1301
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1302 Returns 1 or 0 based on whether it's an ionic I<Bond>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1303
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1304 =item B<IsNotInRing>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1305
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1306 $Status = $Bond->IsNotInRing();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1307
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1308 Returns 1 or 0 based on whether I<Bond> is not present in a ring.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1309
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1310 =item B<IsOnlyInOneRing>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1311
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1312 $Status = $Bond->IsOnlyInOneRing();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1313
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1314 Returns 1 or 0 based on whether I<Bond> is only present in one ring.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1315
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1316 =item B<IsQuadruple>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1317
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1318 $Status = $Bond->IsQuadruple();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1319
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1320 Returns 1 or 0 based on whether it's a quadruple I<Bond>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1321
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1322 =item B<IsQuintuple>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1323
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1324 $Status = $Bond->IsQuintuple();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1325
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1326 Returns 1 or 0 based on whether it's a quintuple I<Bond>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1327
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1328 =item B<IsSextuple>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1329
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1330 $Status = $Bond->IsSextuple();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1331
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1332 Returns 1 or 0 based on whether it's a sextuple I<Bond>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1333
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1334 =item B<IsSingle>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1335
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1336 $Status =$Bond->IsSingle();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1337
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1338 Returns 1 or 0 based on whether it's a single I<Bond>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1339
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1340 =item B<IsTriple>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1341
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1342 $Status =$Bond->IsTriple();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1343
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1344 Returns 1 or 0 based on whether it's a triple I<Bond>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1345
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1346 =item B<IsTautomeric>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1347
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1348 $Status = $Bond->IsTautomeric();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1349
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1350 Returns 1 or 0 based on whether it's a I<Bond>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1351
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1352 =item B<IsTrans>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1353
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1354 $Status = $Bond->IsTrans();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1355
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1356 Returns 1 or 0 based on whether it's a trans I<Bond>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1357
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1358 =item B<IsUp>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1359
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1360 $Status = $Bond->IsUp();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1361
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1362 Returns 1 or 0 based on whether it's a up I<Bond>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1363
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1364 =item B<IsUpOrDown>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1365
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1366 $Status = $Bond->IsUpOrDown();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1367
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1368 Returns 1 or 0 based on whether it's an up or down I<Bond>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1369
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1370 =item B<IsUpward>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1371
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1372 $Status = $Bond->IsUpward();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1373
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1374 Returns 1 or 0 based on whether it's an upward I<Bond>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1375
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1376 =item B<IsWedge>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1377
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1378 $Status = $Bond->IsWedge();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1379
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1380 Returns 1 or 0 based on whether it's a wedge I<Bond>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1381
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1382 =item B<IsWedgeOrHash>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1383
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1384 $Status = $Bond->IsWedgeOrHash();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1385
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1386 Returns 1 or 0 based on whether it's a wedge or hash I<Bond>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1387
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1388 =item B<SetAtoms>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1389
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1390 $Bond->SetAtoms($AtomsRef);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1391 $Bond->SetAtoms(@Atoms);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1392
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1393 Set atoms of I<Bond> to atoms in I<Atoms> array or in a reference to an array of atoms
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1394 and return I<Bond>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1395
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1396 =item B<SetBondOrder>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1397
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1398 $Bond->SetBondOrder($BondOrder);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1399
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1400 Sets bond order of I<Bond> to specified I<BondOrder> and returns I<Bond>. Possible bond order
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1401 values: 1 = Single, 1.5 = Aromatic, 2 = Double, 3 = Triple, 4 = Quadruple, 5 = Quintuple,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1402 6 = Sextuple, 7 = Septuple
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1403
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1404 Notes:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1405
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1406 . BondType property is automatically assigned using default BondType
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1407 values for specified BondOrder.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1408 . BondType values can also be explicit set.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1409 . To make bonds aromatic in a ring, explicitly set "Aromatic"
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1410 property for bond/atoms and make sure appropriate BondOrder
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1411 values are assigned.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1412 . Dative or coordinate bond types are treated as single bond types with
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1413 explicit formal charge of + and - on first and second bond atoms.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1414
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1415 =item B<SetBondType>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1416
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1417 $Bond->SetBondType($BondType);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1418
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1419 Sets bond type for I<Bond> to specified I<BondType> and returns I<Bond>. Possible bond type
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1420 values for different bond orders are:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1421
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1422 0: None, Ionic, Unspecified
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1423 1 : Single, Dative, Coordinate, SingleOrDouble, SingleOrAromatic, Tautomeric
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1424 2 : Double, SingleOrDouble, DoubleOrAromatic, Tautomeric
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1425 3 : Triple
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1426 4 : Quadruple
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1427 5 : Quintuple
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1428 6 : Sextuple
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1429 7 : Septuple
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1430 1.5 : Aromatic, Resonance, SingleOrAromatic, DoubleOrAromatic
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1431
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1432 Notes:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1433
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1434 o BondType Any is valid for all BondOrders.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1435 o BondOrder property is automatically assigned using default BondOrder
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1436 values for specified BondType.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1437
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1438 Possible bond stereochemistry values for different bond orders are:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1439
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1440 0 : None, Unspecified
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1441 1 : Wedge, Up, Hash, Down, Wavy, WedgeOrHash, UpOrDown, Upward, Downward,
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1442 None, Unspecified
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1443 2 : Cis, Trans, Z, E, DoubleCross, CisOrTrans, None, Unspecified
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1444
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1445 =item B<SetBondStereochemistry>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1446
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1447 $Bond = $Bond->SetBondStereochemistry($BondStereochemistry);
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1448
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1449 Sets bond stereochemistry of I<Bond> to specified I<BondStereochemistry> and
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1450 returns I<Bond>. Possible I<BondStereoChemistry> values for different bond orders
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1451 are:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1452
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1453 BondOrder: 1
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1454
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1455 None, Unspecified: Not a stereo bond or unspecified
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1456
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1457 Wedge, Up : Wedge end pointing up
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1458 Hash, Down: Wedge end pointing down
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1459 Wavy, WedgeOrHash, UpOrDown: Wedge end up or down
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1460
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1461 Upward: Single bond around cis/trans double bonds pointing upward
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1462 Downward: Single bond around cis/trans double bonds pointing upward
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1463
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1464 Notes:
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1465
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1466 o Wedge starts at begin atom of a bond making wedge pointed end always
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1467 at this atom.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1468 o Upward/downward bonds start at atoms involved in cis/trans double bonds.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1469
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1470 BondOrder: 2
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1471
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1472 None, Unspecified: Not a stereo bond or unspecified
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1473
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1474 Z, cis: Similar groups on same side of double bond
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1475 E, trans: Similar groups on different side of double bond
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1476
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1477 CisOrTrans, DoubleCross: cis or trans
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1478
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1479 =item B<StringifyBond>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1480
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1481 $BondString = $Bond->StringifyBond();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1482
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1483 Returns a string containing information about I<bond> object.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1484
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1485 =item B<SwitchBondFromAndToAtoms>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1486
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1487 $Bond = $Bond->SwitchBondFromAndToAtoms();
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1488
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1489 Swaps bond from and to atoms in I<Bond> and returns I<Bond>.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1490
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1491 =back
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1492
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1493 =head1 AUTHOR
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1494
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1495 Manish Sud <msud@san.rr.com>
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1496
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1497 =head1 SEE ALSO
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1498
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1499 Atom.pm, Molecule.pm
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1500
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1501 =head1 COPYRIGHT
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1502
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1503 Copyright (C) 2015 Manish Sud. All rights reserved.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1504
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1505 This file is part of MayaChemTools.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1506
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1507 MayaChemTools is free software; you can redistribute it and/or modify it under
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1508 the terms of the GNU Lesser General Public License as published by the Free
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1509 Software Foundation; either version 3 of the License, or (at your option)
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1510 any later version.
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1511
73ae111cf86f Uploaded
deepakjadmin
parents:
diff changeset
1512 =cut