Mercurial > repos > deepakjadmin > mayatool3_test3
view mayachemtools/docs/modules/man3/SDFileUtil.3 @ 9:ab29fa5c8c1f draft default tip
Uploaded
author | deepakjadmin |
---|---|
date | Thu, 15 Dec 2016 14:18:03 -0500 |
parents | 73ae111cf86f |
children |
line wrap: on
line source
.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.22) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} .el \{\ . de IX .. .\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "SDFILEUTIL 1" .TH SDFILEUTIL 1 "2015-03-29" "perl v5.14.2" "MayaChemTools" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" SDFileUtil .SH "SYNOPSIS" .IX Header "SYNOPSIS" use SDFileUtil ; .PP use SDFileUtil qw(:all); .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\fBSDFileUtil\fR module provides the following functions: .PP GenerateCmpdAtomAliasPropertyLines, GenerateCmpdAtomLine, GenerateCmpdBondLine, GenerateCmpdChargePropertyLines, GenerateCmpdCommentsLine, GenerateCmpdCountsLine, GenerateCmpdDataHeaderLabelsAndValuesLines, GenerateCmpdIsotopePropertyLines, GenerateCmpdMiscInfoLine, GenerateCmpdMolNameLine, GenerateCmpdRadicalPropertyLines, GenerateEmptyCtabBlockLines, GenerateMiscLineDateStamp, GetAllAndCommonCmpdDataHeaderLabels, GetCmpdDataHeaderLabels, GetCmpdDataHeaderLabelsAndValues, GetCmpdFragments, GetCtabLinesCount, GetInvalidAtomNumbers, GetUnknownAtoms, InternalBondOrderToMDLBondType, InternalBondStereochemistryToMDLBondStereo, InternalChargeToMDLCharge, InternalSpinMultiplicityToMDLRadical, IsCmpd2D, IsCmpd3D, MDLBondStereoToInternalBondStereochemistry, MDLBondTypeToInternalBondOrder, MDLChargeToInternalCharge, MDLRadicalToInternalSpinMultiplicity, ParseCmpdAtomAliasPropertyLine, ParseCmpdAtomLine, ParseCmpdBondLine, ParseCmpdChargePropertyLine, ParseCmpdCommentsLine, ParseCmpdCountsLine, ParseCmpdIsotopePropertyLine, ParseCmpdMiscInfoLine, ParseCmpdMolNameLine, ParseCmpdRadicalPropertyLine, ReadCmpdString, RemoveCmpdDataHeaderLabelAndValue, WashCmpd .SH "METHODS" .IX Header "METHODS" .IP "\fBGenerateCmpdAtomAliasPropertyLines\fR" 4 .IX Item "GenerateCmpdAtomAliasPropertyLines" .Vb 1 \& @Lines = GenerateCmpdAtomAliasPropertyLines($AliasValuePairsRef); .Ve .Sp Returns a formatted atom alias property lines corresponding to successive pairs of atom number and alias values specified by a refernce to an array. Two lines are generate for each atom number and alias value pairs: First line \- A <AtomNum>; Second line:<AtomAlias>. .IP "\fBGenerateCmpdAtomLine\fR" 4 .IX Item "GenerateCmpdAtomLine" .Vb 2 \& $Line = GenerateCmpdAtomLine($AtomSymbol, $AtomX, $AtomY, \& $AtomZ, [$MassDifference, $Charge, $StereoParity]); .Ve .Sp Returns a formatted atom data line containing all the input values. .IP "\fBGenerateCmpdBondLine\fR" 4 .IX Item "GenerateCmpdBondLine" .Vb 2 \& $Line = GenerateCmpdBondLine($FirstAtomNum, $SecondAtomNum, \& $BondType, [$BondStereo]); .Ve .Sp Returns a formatted bond data line containing all the input values. .IP "\fBGenerateCmpdChargePropertyLines\fR" 4 .IX Item "GenerateCmpdChargePropertyLines" .Vb 1 \& @Lines = GenerateCmpdChargePropertyLines($ChargeValuePairsRef); .Ve .Sp Returns a formatted M \s-1CHG\s0 property lines corresponding to successive pairs of atom number and charge values specified by a refernce to an array. .IP "\fBGenerateCmpdCommentsLine\fR" 4 .IX Item "GenerateCmpdCommentsLine" .Vb 1 \& $Line = GenerateCmpdCommentsLine($Comments); .Ve .Sp Returns a formatted comments data line. .IP "\fBGenerateCmpdCountsLine\fR" 4 .IX Item "GenerateCmpdCountsLine" .Vb 2 \& $Line = GenerateCmpdCountsLine($AtomCount, $BondCount, \& $ChiralFlag, [$PropertyCount, $Version]); .Ve .Sp Returns a formatted line containing all the input values. The default values of 999 and V2000 are used for \fIPropertyCount\fR and \fIVersion\fR. .IP "\fBGenerateCmpdDataHeaderLabelsAndValuesLines\fR" 4 .IX Item "GenerateCmpdDataHeaderLabelsAndValuesLines" .Vb 3 \& @Lines = GenerateCmpdDataHeaderLabelsAndValuesLines( \& $DataHeaderLabelsRef, $DataHeaderLabelsAndValuesRef, \& [$SortDataLabels]); .Ve .Sp Returns formatted data lines containing header label and values lines corresponding to all data header labels in array reference \fIDataHeaderLabelsRef\fR with values in hash reference \fIDataHeaderLabelsAndValuesRef\fR. By default, data header labels are not sorted and correspond to the label order in array reference \fIDataHeaderLabelsRef\fR. .IP "\fBGenerateCmpdIsotopePropertyLines\fR" 4 .IX Item "GenerateCmpdIsotopePropertyLines" .Vb 1 \& @Lines = GenerateCmpdIsotopePropertyLines($IsotopeValuePairsRef); .Ve .Sp Returns a formatted M \s-1ISO\s0 property lines corresponding to successive pairs of atom number and isotope values specified by a refernce to an array. .IP "\fBGenerateCmpdMiscInfoLine\fR" 4 .IX Item "GenerateCmpdMiscInfoLine" .Vb 2 \& $Line = GenerateCmpdMiscInfoLine([$ProgramName, $UserInitial, \& $Code]); .Ve .Sp Returns a formatted line containing specified user initial, program name, date and code. Default values are: \fIProgramName \- MayaChem; UserInitial \- \s-1NULL\s0; Code \- 2D\fR. .IP "\fBGenerateCmpdMolNameLine\fR" 4 .IX Item "GenerateCmpdMolNameLine" .Vb 1 \& $Line = GenerateCmpdMolNameLine($MolName); .Ve .Sp Returns a formatted molecule name data line. .IP "\fBGenerateCmpdRadicalPropertyLines\fR" 4 .IX Item "GenerateCmpdRadicalPropertyLines" .Vb 1 \& @Lines = GenerateCmpdRadicalPropertyLines($RadicalValuePairsRef); .Ve .Sp Returns a formatted M \s-1CHG\s0 property lines corresponding to successive pairs of atom number and multiplicity values specified by a refernce to an array. .IP "\fBGenerateEmptyCtabBlockLines\fR" 4 .IX Item "GenerateEmptyCtabBlockLines" .Vb 1 \& $Lines = GenerateCmpdMiscInfoLine([$Date]); .Ve .Sp Returns formatted lines representing empty \s-1CTAB\s0 block. .IP "\fBGenerateMiscLineDateStamp\fR" 4 .IX Item "GenerateMiscLineDateStamp" .Vb 1 \& $Line = GenerateMiscLineDateStamp(); .Ve .Sp Returns date stamp for misc line. .IP "\fBGetAllAndCommonCmpdDataHeaderLabels\fR" 4 .IX Item "GetAllAndCommonCmpdDataHeaderLabels" .Vb 3 \& ($CmpdCount, $DataFieldLabelsArrayRef, \& $CommonDataFieldLabelsArrayRef) = \& GetAllAndCommonCmpdDataHeaderLabels(\e*SDFILE); .Ve .Sp Returns number of comopunds, a reference to an array containing all unique data header label and a reference to an array containing common data field labels for all compounds in \s-1SD\s0 file. .IP "\fBGetCmpdDataHeaderLabels\fR" 4 .IX Item "GetCmpdDataHeaderLabels" .Vb 1 \& (@Labels) = GetCmpdDataHeaderLabels(\e@CmpdLines); .Ve .Sp Returns an array containg data header labels for a compound .IP "\fBGetCmpdDataHeaderLabelsAndValues\fR" 4 .IX Item "GetCmpdDataHeaderLabelsAndValues" .Vb 1 \& (%DataValues) = GetCmpdDataHeaderLabelsAndValues(\e@CmpdLines); .Ve .Sp Returns a hash conating data header labes and values for a compound. .IP "\fBGetCmpdFragments\fR" 4 .IX Item "GetCmpdFragments" .Vb 1 \& ($FragmentCount, $FragmentString) = GetCmpdFragments(\e@CmpLines); .Ve .Sp Figures out the number of disconnected fragments and return their values along with the atom numbers in a string delimited by new line character. Fragment data in \fBFragmentString\fR is sorted on based on its size. .IP "\fBGetCtabLinesCount\fR" 4 .IX Item "GetCtabLinesCount" .Vb 1 \& $CtabLinesCount = GetCtabLinesCount(\e@CmpdLines); .Ve .Sp Returns number of lines present between the 4th line and the line containg \*(L"M \s-1END\s0\*(R". .IP "\fBGetInvalidAtomNumbers\fR" 4 .IX Item "GetInvalidAtomNumbers" .Vb 2 \& ($InvalidAtomNumbersCount, $InvalidAtomNumbers, $InvalidAtomNumberLines) = \& GetInvalidAtomNumbers(\e@CmpdLines); .Ve .Sp Returns a list of values containing information about invalid atom numbers present in block or atom property lines. .IP "\fBGetUnknownAtoms\fR" 4 .IX Item "GetUnknownAtoms" .Vb 2 \& ($UnknownAtomCount, $UnknownAtoms, $UnknownAtomLines) = \& GetUnknownAtoms(\e@CmpdLines); .Ve .Sp Returns a list of values containing information about atoms which contain special element symbols not present in the periodic table. .IP "\fBInternalBondOrderToMDLBondType\fR" 4 .IX Item "InternalBondOrderToMDLBondType" .Vb 1 \& $MDLBondType = InternalBondOrderToMDLBondType($InternalBondOrder); .Ve .Sp Returns value of \fIMDLBondType\fR corresponding to \fIInternalBondOrder\fR. .Sp .Vb 1 \& InternalBondOrder MDLBondType \& \& 1 1 \& 2 2 \& 3 3 \& 1.5 4 .Ve .IP "\fBInternalBondStereochemistryToMDLBondStereo\fR" 4 .IX Item "InternalBondStereochemistryToMDLBondStereo" .Vb 2 \& $MDLBondStereo = InternalBondStereochemistryToMDLBondStereo( \& $InternalBondStereo); .Ve .Sp Returns value of \fIMDLBondStereo\fR corresponding to \fIInternalBondStereo\fR using following mapping: .Sp .Vb 1 \& InternalBondStereo MDLBondStereo \& \& Up 1 \& UpOrDown 4 \& Down 6 \& CisOrTrans 3 \& Other 0 .Ve .IP "\fBInternalChargeToMDLCharge\fR" 4 .IX Item "InternalChargeToMDLCharge" .Vb 1 \& $MDLCharge = InternalChargeToMDLCharge($InternalCharge); .Ve .Sp Returns value of \fIMDLCharge\fR corresponding to \fIInternalCharge\fR using following mapping: .Sp .Vb 1 \& InternalCharge MDLCharge \& \& 3 1 \& 2 2 \& 1 3 \& \-1 5 \& \-2 6 \& \-3 7 .Ve .IP "\fBInternalSpinMultiplicityToMDLRadical\fR" 4 .IX Item "InternalSpinMultiplicityToMDLRadical" .Vb 2 \& $MDLRadical = InternalSpinMultiplicityToMDLRadical( \& $InternalSpinMultiplicity); .Ve .Sp Returns value of \fIMDLRadical\fR corresponding to \fIInternalSpinMultiplicity\fR. These value are equivalent. .IP "\fBMDLBondStereoToInternalBondType\fR" 4 .IX Item "MDLBondStereoToInternalBondType" .Vb 1 \& $InternalBondType = MDLBondStereoToInternalBondType($MDLBondStereo); .Ve .Sp Returns value of \fIInternalBondType\fR corresponding to \fIMDLBondStereo\fR using mapping shown for \fBInternalBondTypeToMDLBondStereo\fR function. .IP "\fBIsCmpd2D\fR" 4 .IX Item "IsCmpd2D" .Vb 1 \& $Status = IsCmpd2D(); .Ve .Sp Returns 1 or 0 based on whether z\-coordinate of any atom is non-zero. .IP "\fBIsCmpd3D\fR" 4 .IX Item "IsCmpd3D" .Vb 1 \& $Status = IsCmpd3D(); .Ve .Sp Returns 1 or 0 based on whether z\-coordinate of any atom is non-zero. .IP "\fBMDLBondStereoToInternalBondStereochemistry\fR" 4 .IX Item "MDLBondStereoToInternalBondStereochemistry" .Vb 2 \& $InternalBondStereo = MDLBondStereoToInternalBondStereochemistry( \& $MDLBondStereo); .Ve .Sp Returns value of \fIInternalBondStereo\fR corresponding to \fIMDLBondStereo\fR using mapping shown for \fBInternalBondStereochemistryToMDLBondStereo\fR function. .IP "\fBMDLBondTypeToInternalBondOrder\fR" 4 .IX Item "MDLBondTypeToInternalBondOrder" .Vb 1 \& $InternalBondOrder = MDLBondTypeToInternalBondOrder($MDLBondType); .Ve .Sp Returns value of \fIInternalBondOrder\fR corresponding to \fIMDLBondType\fR using mapping shown for \fBInternalBondOrderToMDLBondType\fR function. .IP "\fBMDLChargeToInternalCharge\fR" 4 .IX Item "MDLChargeToInternalCharge" .Vb 1 \& $InternalCharge = MDLChargeToInternalCharge($MDLCharge); .Ve .Sp Returns value of \fI\f(CI$InternalCharge\fI\fR corresponding to \fIMDLCharge\fR using mapping shown for \fBInternalChargeToMDLCharge\fR function. .IP "\fBMDLRadicalToInternalSpinMultiplicity\fR" 4 .IX Item "MDLRadicalToInternalSpinMultiplicity" .Vb 2 \& $InternalSpinMultiplicity = MDLRadicalToInternalSpinMultiplicity( \& $MDLRadical); .Ve .Sp Returns value of \fIInternalSpinMultiplicity\fR corresponding to \fIMDLRadical\fR. These value are equivalent. .IP "\fBParseCmpdAtomAliasPropertyLine\fR" 4 .IX Item "ParseCmpdAtomAliasPropertyLine" .Vb 2 \& @AtomNumAndValuePairs = ParseCmpdAtomAliasPropertyLine( \& $CurrentLine, $NexLine); .Ve .Sp Parses atom alias propery lines in \s-1CTAB\s0 generic properties block and returns an array with successive pairs of values corresponding to atom number and its alias. .IP "\fBParseCmpdAtomLine\fR" 4 .IX Item "ParseCmpdAtomLine" .Vb 2 \& ($AtomSymbol, $AtomX, $AtomY, $AtomZ, $MassDifference, $Charge, \& $StereoParity) = ParseCmpdAtomLine($AtomDataLine); .Ve .Sp Parses compound data line containing atom information and returns a list of values. .IP "\fBParseCmpdBondLine\fR" 4 .IX Item "ParseCmpdBondLine" .Vb 2 \& ($FirstAtomNum, $SecondAtomNum, $BondType) = \& ParseCmpdBondLine($BondDataLine); .Ve .Sp Parses compound data line containing bond information and returns a list of values. .IP "\fBParseCmpdCommentsLine\fR" 4 .IX Item "ParseCmpdCommentsLine" .Vb 1 \& $Comments = ParseCmpdCommentsLine($CommentsDataLine); .Ve .Sp Returns the comment string. .IP "\fBParseCmpdChargePropertyLine\fR" 4 .IX Item "ParseCmpdChargePropertyLine" .Vb 2 \& @AtomNumAndValuePairs = ParseCmpdChargePropertyLine( \& $ChargeDataLine); .Ve .Sp Parses charge propery line in \s-1CTAB\s0 generic properties block and returns an array with successive pairs of values corresponding to atom number and its charge. .IP "\fBParseCmpdCountsLine\fR" 4 .IX Item "ParseCmpdCountsLine" .Vb 2 \& ($AtomCount, $BondCount, $ChiralFlag, $PropertyCount, $Version) = \& ParseCmpdCountsLine(\e@CountDataLines); .Ve .Sp Returns a list of values containing count information. .IP "\fBParseCmpdMiscInfoLine\fR" 4 .IX Item "ParseCmpdMiscInfoLine" .Vb 2 \& ($UserInitial, $ProgramName, $Date, $Code, $ScalingFactor1, $ScalingFactor2, \& $Energy, $RegistryNum) = ParseCmpdMiscInfoLine($Line); .Ve .Sp Returns a list of values containing miscellaneous information. .IP "\fBParseCmpdIsotopePropertyLine\fR" 4 .IX Item "ParseCmpdIsotopePropertyLine" .Vb 2 \& @AtomNumAndValuePairs = ParseCmpdIsotopePropertyLine( \& $IsotopeDataLine); .Ve .Sp Parses isotopic propery line in \s-1CTAB\s0 generic properties block and returns an array with successive pairs of values corresponding to atom number and absolute mass of atom isotope. .IP "\fBParseCmpdMolNameLine\fR" 4 .IX Item "ParseCmpdMolNameLine" .Vb 1 \& $MolName = ParseCmpdMolNameLine($Line); .Ve .Sp Returns a string containing molecule name. .IP "\fBParseCmpdRadicalPropertyLine\fR" 4 .IX Item "ParseCmpdRadicalPropertyLine" .Vb 2 \& @AtomNumAndValuePairs = ParseCmpdRadicalPropertyLine( \& $RadicalDataLine); .Ve .Sp Parses radical propery line in \s-1CTAB\s0 generic properties block and returns an array with successive pairs of values corresponding to atom number and radical number value. .IP "\fBRemoveCmpdDataHeaderLabelAndValue\fR" 4 .IX Item "RemoveCmpdDataHeaderLabelAndValue" .Vb 2 \& $NewCmpdString = RemoveCmpdDataHeaderLabelAndValue($CmpdString, \& $DataHeaderLabel); .Ve .Sp Returns a \fBNewCmpdString\fR after removing \fIDataHeaderLabel\fR along with its value from \fICmpdString\fR. .IP "\fBReadCmpdString\fR" 4 .IX Item "ReadCmpdString" .Vb 1 \& $CmpdString = ReadCmpdString(\e*SDFILEHANDLE); .Ve .Sp Returns a string containing all the data lines for the next available compound in an already open file indicated by \s-1SDFILEHANDLE\s0. A \s-1NULL\s0 string is returned on \s-1EOF\s0. .IP "\fBWashCmpd\fR" 4 .IX Item "WashCmpd" .Vb 2 \& ($FragmentCount, $Fragments, $WashedCmpdString) = \& WashCmpd(\e@CmpdLines); .Ve .Sp Figures out the number of disconnected fragments and return their values along with the atom numbers in a string delimited by new line character. Fragment data in \fBFragmentString\fR is sorted on based on its size. .SH "AUTHOR" .IX Header "AUTHOR" Manish Sud <msud@san.rr.com> .SH "SEE ALSO" .IX Header "SEE ALSO" TextUtil.pm .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright (C) 2015 Manish Sud. All rights reserved. .PP This file is part of MayaChemTools. .PP MayaChemTools is free software; you can redistribute it and/or modify it under the terms of the \s-1GNU\s0 Lesser General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.