annotate mayachemtool/mayachemtools/lib/Bond.pm @ 0:68300206e90d draft default tip

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