comparison docs/scripts/man1/AnalyzeTextFilesData.1 @ 0:4816e4a8ae95 draft default tip

Uploaded
author deepakjadmin
date Wed, 20 Jan 2016 09:23:18 -0500
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:4816e4a8ae95
1 .\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.22)
2 .\"
3 .\" Standard preamble:
4 .\" ========================================================================
5 .de Sp \" Vertical space (when we can't use .PP)
6 .if t .sp .5v
7 .if n .sp
8 ..
9 .de Vb \" Begin verbatim text
10 .ft CW
11 .nf
12 .ne \\$1
13 ..
14 .de Ve \" End verbatim text
15 .ft R
16 .fi
17 ..
18 .\" Set up some character translations and predefined strings. \*(-- will
19 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
20 .\" double quote, and \*(R" will give a right double quote. \*(C+ will
21 .\" give a nicer C++. Capital omega is used to do unbreakable dashes and
22 .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
23 .\" nothing in troff, for use with C<>.
24 .tr \(*W-
25 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
26 .ie n \{\
27 . ds -- \(*W-
28 . ds PI pi
29 . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
30 . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
31 . ds L" ""
32 . ds R" ""
33 . ds C` ""
34 . ds C' ""
35 'br\}
36 .el\{\
37 . ds -- \|\(em\|
38 . ds PI \(*p
39 . ds L" ``
40 . ds R" ''
41 'br\}
42 .\"
43 .\" Escape single quotes in literal strings from groff's Unicode transform.
44 .ie \n(.g .ds Aq \(aq
45 .el .ds Aq '
46 .\"
47 .\" If the F register is turned on, we'll generate index entries on stderr for
48 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
49 .\" entries marked with X<> in POD. Of course, you'll have to process the
50 .\" output yourself in some meaningful fashion.
51 .ie \nF \{\
52 . de IX
53 . tm Index:\\$1\t\\n%\t"\\$2"
54 ..
55 . nr % 0
56 . rr F
57 .\}
58 .el \{\
59 . de IX
60 ..
61 .\}
62 .\"
63 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
64 .\" Fear. Run. Save yourself. No user-serviceable parts.
65 . \" fudge factors for nroff and troff
66 .if n \{\
67 . ds #H 0
68 . ds #V .8m
69 . ds #F .3m
70 . ds #[ \f1
71 . ds #] \fP
72 .\}
73 .if t \{\
74 . ds #H ((1u-(\\\\n(.fu%2u))*.13m)
75 . ds #V .6m
76 . ds #F 0
77 . ds #[ \&
78 . ds #] \&
79 .\}
80 . \" simple accents for nroff and troff
81 .if n \{\
82 . ds ' \&
83 . ds ` \&
84 . ds ^ \&
85 . ds , \&
86 . ds ~ ~
87 . ds /
88 .\}
89 .if t \{\
90 . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
91 . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
92 . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
93 . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
94 . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
95 . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
96 .\}
97 . \" troff and (daisy-wheel) nroff accents
98 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
99 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
100 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
101 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
102 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
103 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
104 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
105 .ds ae a\h'-(\w'a'u*4/10)'e
106 .ds Ae A\h'-(\w'A'u*4/10)'E
107 . \" corrections for vroff
108 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
109 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
110 . \" for low resolution devices (crt and lpr)
111 .if \n(.H>23 .if \n(.V>19 \
112 \{\
113 . ds : e
114 . ds 8 ss
115 . ds o a
116 . ds d- d\h'-1'\(ga
117 . ds D- D\h'-1'\(hy
118 . ds th \o'bp'
119 . ds Th \o'LP'
120 . ds ae ae
121 . ds Ae AE
122 .\}
123 .rm #[ #] #H #V #F C
124 .\" ========================================================================
125 .\"
126 .IX Title "ANALYZETEXTFILESDATA 1"
127 .TH ANALYZETEXTFILESDATA 1 "2015-03-29" "perl v5.14.2" "MayaChemTools"
128 .\" For nroff, turn off justification. Always turn off hyphenation; it makes
129 .\" way too many mistakes in technical documents.
130 .if n .ad l
131 .nh
132 .SH "NAME"
133 AnalyzeTextFilesData.pl \- Analyze numerical coulmn data in TextFile(s)
134 .SH "SYNOPSIS"
135 .IX Header "SYNOPSIS"
136 AnalyzeTextFilesData.pl TextFile(s)...
137 .PP
138 AnalyzeTextFilesData.pl [\fB\-c, \-\-colmode\fR colnum | collabel] [\fB\-\-columns\fR \*(L"colnum,[colnum,...]\*(R" | \*(L"collabel,[collabel,...]\*(R" | All]
139 [\fB\-\-columnpairs\fR \*(L"colnum,colnum,[colnum,colnum]...\*(R" | \*(L"collabel,collabel,[collabel,collabel]...\*(R" | AllPairs]
140 [\fB\-d, \-\-detail\fR infolevel] [\fB\-f, \-\-fast\fR] [\fB\-\-frequencybins\fR number | \*(L"number,number,[number,...]\*(R"] [\fB\-h, \-\-help\fR]
141 [\fB\-\-indelim\fR comma | semicolon] [\fB\-\-klargest\fR number] [\fB\-\-ksmallest\fR number]
142 [\fB\-m, \-\-mode\fR DescriptiveStatisticsBasic | DescriptiveStatisticsAll | All | \*(L"function1, [function2,...]\*(R"]
143 [\fB\-o, \-\-overwrite\fR] [\fB\-\-outdelim\fR comma | tab | semicolon] [\fB\-p, \-\-precision\fR number]
144 [\fB\-q, \-\-quote\fR yes | no] [\fB\-r, \-\-root\fR rootname] [\fB\-\-trimfraction\fR number] [\fB\-w, \-\-workingdir\fR dirname] TextFiles(s)...
145 .SH "DESCRIPTION"
146 .IX Header "DESCRIPTION"
147 Anaylze numerical column data in \fITextFile(s)\fR using a combination of various statistical
148 functions; Non-numerical values are simply ignored. For \fICorrelation, RSquare, and Covariance\fR
149 analysis, the count of valid values in specifed column pair must be same; otherwise, column
150 pair is ignored. The file names are separated by space. The valid file extensions are \fI.csv\fR
151 and \fI.tsv\fR for comma/semicolon and tab delimited text files respectively. All other
152 file names are ignored. All the text files in a current directory can be specified by
153 \&\fI*.csv\fR, \fI*.tsv\fR, or the current directory name. The \fB\-\-indelim\fR option determines
154 the format of \fITextFile(s)\fR. Any file which doesn't correspond to the format indicated
155 by \fB\-\-indelim\fR option is ignored.
156 .SH "OPTIONS"
157 .IX Header "OPTIONS"
158 .IP "\fB\-c, \-\-colmode\fR \fIcolnum | collabel\fR" 4
159 .IX Item "-c, --colmode colnum | collabel"
160 Specify how columns are identified in TextFile(s): using column number or column
161 label. Possible values: \fIcolnum or collabel\fR. Default value: \fIcolnum\fR.
162 .ie n .IP "\fB\-\-columns\fR \fI""colnum,[colnum,...]"" | ""collabel,[collabel]..."" | All\fR" 4
163 .el .IP "\fB\-\-columns\fR \fI``colnum,[colnum,...]'' | ``collabel,[collabel]...'' | All\fR" 4
164 .IX Item "--columns colnum,[colnum,...] | collabel,[collabel]... | All"
165 This value is mode specific. It's a list of comma delimited columns to use
166 for data analysis. Default value: \fIFirst column\fR.
167 .Sp
168 This value is ignored during \fICorrelation/Pearson Correlation\fR and \fICovariance\fR
169 data analysis; \fB\-coulmnparis\fR option is used instead.
170 .Sp
171 For \fIcolnum\fR value of \fB\-c, \-\-colmode\fR option, input values format is:
172 \&\fIcolnum,colnum,...\fR. Example:
173 .Sp
174 .Vb 1
175 \& 1,3,5
176 .Ve
177 .Sp
178 For \fIcollabel\fR value of \fB\-c, \-\-colmode\fR option, input values format is:
179 \&\fIcollabel,collabel,..\fR. Example:
180 .Sp
181 .Vb 1
182 \& ALogP,MolWeight,EC50
183 .Ve
184 .ie n .IP "\fB\-\-columnpairs\fR \fI""colnum,colnum,[colnum,colnum,...]"" | ""collabel,collabel,[collabel,collabel,...]"" | AllPairs\fR" 4
185 .el .IP "\fB\-\-columnpairs\fR \fI``colnum,colnum,[colnum,colnum,...]'' | ``collabel,collabel,[collabel,collabel,...]'' | AllPairs\fR" 4
186 .IX Item "--columnpairs colnum,colnum,[colnum,colnum,...] | collabel,collabel,[collabel,collabel,...] | AllPairs"
187 This value is mode specific and is only used for \fICorrelation, PearsonCorrelation, or
188 Covariance\fR value of \fB\-m, \-\-mode\fR option. It is a comma delimited list of column pairs
189 to use for data analysis during \fICorrelation\fR and \fICovariance\fR calculations. Default value:
190 \&\fIFirst column, Second column\fR.
191 .Sp
192 For \fIcolnum\fR value of \fB\-c, \-\-colmode\fR option, input values format is:
193 \&\fIcolnum,colnum,[colnum,colnum]...\fR. Example:
194 .Sp
195 .Vb 1
196 \& 1,3,5,6,1,6
197 .Ve
198 .Sp
199 For \fIcollabel\fR value of \fB\-c, \-\-colmode\fR option, input values format is:
200 \&\fIcollabel,collabel,[collabel,collabel]..\fR. Example:
201 .Sp
202 .Vb 1
203 \& MolWeight,EC50,NumN+O,PSA
204 .Ve
205 .Sp
206 For \fIAllPairs\fR value of \fB\-\-columnparis\fR option, all column pairs are used for \fICorrelation\fR
207 and \fICovariance\fR calculations.
208 .IP "\fB\-d, \-\-detail\fR \fIinfolevel\fR" 4
209 .IX Item "-d, --detail infolevel"
210 Level of information to print about column values being ignored. Default: \fI1\fR. Possible values:
211 1, 2, 3, or 4.
212 .IP "\fB\-f, \-\-fast\fR" 4
213 .IX Item "-f, --fast"
214 In this mode, all the columns specified for analysis are assumed to contain numerical
215 data and no checking is performed before analysis. By default, only numerical data is
216 used for analysis; other types of column data is ignored.
217 .ie n .IP "\fB\-\-frequencybins\fR \fInumber | ""number,number,[number,...]""\fR" 4
218 .el .IP "\fB\-\-frequencybins\fR \fInumber | ``number,number,[number,...]''\fR" 4
219 .IX Item "--frequencybins number | number,number,[number,...]"
220 Specify number of bins or bin range to use for frequency analysis. Default value: \fI10\fR
221 .Sp
222 Number of bins value along with the smallest and largest value for a column is used to
223 group the column values into different groups.
224 .Sp
225 The bin range list is used to group values for a column into different groups; It must contain
226 values in ascending order. Examples:
227 .Sp
228 .Vb 2
229 \& 10,20,30
230 \& 0.1,0.2,0.3,0.4,0.5
231 .Ve
232 .Sp
233 The frequency value calculated for a specific bin corresponds to all the column values
234 which are greater than the previous bin value and less than or equal to the current bin value.
235 .IP "\fB\-h, \-\-help\fR" 4
236 .IX Item "-h, --help"
237 Print this help message.
238 .IP "\fB\-\-indelim\fR \fIcomma | semicolon\fR" 4
239 .IX Item "--indelim comma | semicolon"
240 Input delimiter for \s-1CSV\s0 \fITextFile(s)\fR. Possible values: \fIcomma or semicolon\fR.
241 Default value: \fIcomma\fR. For \s-1TSV\s0 files, this option is ignored and \fItab\fR is used as a
242 delimiter.
243 .IP "\fB\-\-klargest\fR \fInumber\fR" 4
244 .IX Item "--klargest number"
245 Kth largest value to find by \fIKLargest\fR function. Default value: \fI2\fR Valid values: positive
246 integers.
247 .IP "\fB\-\-ksmallest\fR \fInumber\fR" 4
248 .IX Item "--ksmallest number"
249 Kth smallest value to find by \fIKSmallest\fR function. Default value: \fI2\fR. Valid values: positive
250 integers.
251 .ie n .IP "\fB\-m, \-\-mode\fR \fIDescriptiveStatisticsBasic | DescriptiveStatisticsAll | All | ""function1, [function2,...]""\fR" 4
252 .el .IP "\fB\-m, \-\-mode\fR \fIDescriptiveStatisticsBasic | DescriptiveStatisticsAll | All | ``function1, [function2,...]''\fR" 4
253 .IX Item "-m, --mode DescriptiveStatisticsBasic | DescriptiveStatisticsAll | All | function1, [function2,...]"
254 Specify how to analyze data in TextFile(s): calculate basic or all descriptive statistics; or
255 use a comma delimited list of supported statistical functions. Possible values:
256 \&\fIDescriptiveStatisticsBasic | DescriptiveStatisticsAll | \*(L"function1,[function2]...\*(R"\fR. Default
257 value: \fIDescriptiveStatisticsBasic\fR
258 .Sp
259 \&\fIDescriptiveStatisticsBasic\fR includes these functions: \fICount, Maximum, Minimum, Mean,
260 Median, Sum, StandardDeviation, StandardError, Variance\fR.
261 .Sp
262 \&\fIDescriptiveStatisticsAll\fR, in addition to \fIDescriptiveStatisticsBasic\fR functions, includes:
263 \&\fIGeometricMean, Frequency, HarmonicMean, KLargest, KSmallest, Kurtosis, Mode, RSquare,
264 Skewness, TrimMean\fR.
265 .Sp
266 \&\fIAll\fR uses complete list of supported functions: \fIAverage, AverageDeviation, Correlation,
267 Count, Covariance, GeometricMean, Frequency, HarmonicMean, KLargest, KSmallest, Kurtosis,
268 Maximum, Minimum, Mean, Median, Mode, RSquare, Skewness, Sum,
269 SumOfSquares, StandardDeviation, StandardDeviationN, StandardError, StandardScores,
270 StandardScoresN, TrimMean, Variance, VarianceN\fR. The function names ending with N
271 calculate corresponding values assuming an entire population instead of a population sample.
272 .Sp
273 Here are the formulas for these functions:
274 .Sp
275 Average: See Mean
276 .Sp
277 AverageDeviation: \s-1SUM\s0( \s-1ABS\s0(x[i] \- Xmean) ) / n
278 .Sp
279 Correlation: See Pearson Correlation
280 .Sp
281 Covariance: \s-1SUM\s0( (x[i] \- Xmean)(y[i] \- Ymean) ) / n
282 .Sp
283 GeometricMean: NthROOT( \s-1PRODUCT\s0(x[i]) )
284 .Sp
285 HarmonicMean: 1 / ( \s-1SUM\s0(1/x[i]) / n )
286 .Sp
287 Mean: \s-1SUM\s0( x[i] ) / n
288 .Sp
289 Median: Xsorted[(n \- 1)/2 + 1] for even values of n; (Xsorted[n/2] + Xsorted[n/2 + 1])/2
290 for odd values of n.
291 .Sp
292 Kurtosis: [ {n(n + 1)/(n \- 1)(n \- 2)(n \- 3)} SUM{ ((x[i] \- Xmean)/STDDEV)^4 } ] \-
293 {3((n \- 1)^2)}/{(n \- 2)(n\-3)}
294 .Sp
295 PearsonCorrelation: \s-1SUM\s0( (x[i] \- Xmean)(y[i] \- Ymean) ) / \s-1SQRT\s0( \s-1SUM\s0( (x[i] \- Xmean)^2 )
296 (\s-1SUM\s0( (y[i] \- Ymean)^2 )) )
297 .Sp
298 RSquare: PearsonCorrelation^2
299 .Sp
300 Skewness: {n/(n \- 1)(n \- 2)} SUM{ ((x[i] \- Xmean)/STDDEV)^3 }
301 .Sp
302 StandardDeviation: \s-1SQRT\s0 ( \s-1SUM\s0( (x[i] \- Mean)^2 ) / (n \- 1) )
303 .Sp
304 StandardDeviationN: \s-1SQRT\s0 ( \s-1SUM\s0( (x[i] \- Mean)^2 ) / n )
305 .Sp
306 StandardError: StandardDeviation / \s-1SQRT\s0( n )
307 .Sp
308 StandardScore: (x[i] \- Mean) / (n \- 1)
309 .Sp
310 StandardScoreN: (x[i] \- Mean) / n
311 .Sp
312 Variance: \s-1SUM\s0( (x[i] \- Xmean)^2 / (n \- 1) )
313 .Sp
314 VarianceN: \s-1SUM\s0( (x[i] \- Xmean)^2 / n )
315 .IP "\fB\-o, \-\-overwrite\fR" 4
316 .IX Item "-o, --overwrite"
317 Overwrite existing files.
318 .IP "\fB\-\-outdelim\fR \fIcomma | tab | semicolon\fR" 4
319 .IX Item "--outdelim comma | tab | semicolon"
320 Output text file delimiter. Possible values: \fIcomma, tab, or semicolon\fR
321 Default value: \fIcomma\fR.
322 .IP "\fB\-p, \-\-precision\fR \fInumber\fR" 4
323 .IX Item "-p, --precision number"
324 Precision of calculated values in the output file. Default: up to \fI2\fR decimal places.
325 Valid values: positive integers.
326 .IP "\fB\-q, \-\-quote\fR \fIyes | no\fR" 4
327 .IX Item "-q, --quote yes | no"
328 Put quotes around column values in output text file. Possible values: \fIyes or
329 no\fR. Default value: \fIyes\fR.
330 .IP "\fB\-r, \-\-root\fR \fIrootname\fR" 4
331 .IX Item "-r, --root rootname"
332 New text file name is generated using the root: <Root>.<Ext>. Default new file
333 name: <InitialTextFileName><Mode>.<Ext>. Based on the specified analysis,
334 <Mode> corresponds to one of these values: DescriptiveStatisticsBasic,
335 DescriptiveStatisticsAll, AllStatistics, SpecifiedStatistics, Covariance, Correlation,
336 Frequency, or StandardScores. The csv, and tsv <Ext> values are used for
337 comma/semicolon, and tab delimited text files respectively. This option is ignored for
338 multiple input files.
339 .IP "\fB\-\-trimfraction\fR \fInumber\fR" 4
340 .IX Item "--trimfraction number"
341 Fraction of data to exclude from the top and bottom of the data set during
342 \&\fITrimMean\fR calculation. Default value: \fI0.1\fR. Valid values: > 0 and < 1.
343 .IP "\fB\-w \-\-workingdir\fR \fItext\fR" 4
344 .IX Item "-w --workingdir text"
345 Location of working directory. Default: current directory.
346 .SH "EXAMPLES"
347 .IX Header "EXAMPLES"
348 To calculate basic statistics for data in first column and generate a
349 NewSample1DescriptiveStatisticsBasic.csv file, type:
350 .PP
351 .Vb 1
352 \& % AnalyzeTextFilesData.pl \-o \-r NewSample1 Sample1.csv
353 .Ve
354 .PP
355 To calculate basic statistics for data in third column and generate a
356 NewSample1DescriptiveStatisticsBasic.csv file, type:
357 .PP
358 .Vb 1
359 \& % AnalyzeTextFilesData.pl \-\-columns 3 \-o \-r NewSample1 Sample1.csv
360 .Ve
361 .PP
362 To calculate basic statistics for data in MolWeight column and generate a
363 NewSample1DescriptiveStatisticsBasic.csv file, type:
364 .PP
365 .Vb 2
366 \& % AnalyzeTextFilesData.pl \-colmode collabel \-\-columns MolWeight \-o
367 \& \-r NewSample1 Sample1.csv
368 .Ve
369 .PP
370 To calculate all available statistics for data in third column and all column pairs,
371 and generate NewSample1DescriptiveStatisticsAll.csv, NewSample1CorrelationMatrix.csv,
372 NewSample1CorrelationMatrix.csv, and NewSample1MolWeightFrequencyAnalysis.csv files,
373 type:
374 .PP
375 .Vb 2
376 \& % AnalyzeTextFilesData.pl \-m DescriptiveStatisticsAll \-\-columns 3 \-o
377 \& \-\-columnpairs AllPairs \-r NewSample1 Sample1.csv
378 .Ve
379 .PP
380 To compute frequency distribution of data in third column into five bins and
381 generate NewSample1MolWeightFrequencyAnalysis.csv, type:
382 .PP
383 .Vb 2
384 \& % AnalyzeTextFilesData.pl \-m Frequency \-\-frequencybins 5 \-\-columns 3
385 \& \-o \-r NewSample1 Sample1.csv
386 .Ve
387 .PP
388 To compute frequency distribution of data in third column into specified bin range
389 values, and generate NewSample1MolWeightFrequencyAnalysis.csv, type:
390 .PP
391 .Vb 2
392 \& % AnalyzeTextFilesData.pl \-m Frequency \-\-frequencybins "100,200,400"
393 \& \-\-columns 3 \-o \-r NewSample1 Sample1.csv
394 .Ve
395 .PP
396 To calculate all available statistics for data in all columns and column pairs, type:
397 .PP
398 .Vb 2
399 \& % AnalyzeTextFilesData.pl \-m All \-\-columns All \-\-columnpairs
400 \& AllPairs \-o \-r NewSample1 Sample1.csv
401 .Ve
402 .SH "AUTHOR"
403 .IX Header "AUTHOR"
404 Manish Sud <msud@san.rr.com>
405 .SH "SEE ALSO"
406 .IX Header "SEE ALSO"
407 JoinTextFiles.pl, MergeTextFilesWithSD.pl, ModifyTextFilesFormat.pl, SplitTextFiles.pl, TextFilesToHTML.pl
408 .SH "COPYRIGHT"
409 .IX Header "COPYRIGHT"
410 Copyright (C) 2015 Manish Sud. All rights reserved.
411 .PP
412 This file is part of MayaChemTools.
413 .PP
414 MayaChemTools is free software; you can redistribute it and/or modify it under
415 the terms of the \s-1GNU\s0 Lesser General Public License as published by the Free
416 Software Foundation; either version 3 of the License, or (at your option)
417 any later version.