From: <fer...@us...> - 2007-10-14 20:44:09
|
Revision: 3943 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=3943&view=rev Author: fer_perez Date: 2007-10-14 13:44:08 -0700 (Sun, 14 Oct 2007) Log Message: ----------- Fix typo in a formula. Modified Paths: -------------- trunk/py4science/workbook/trapezoid.lyx trunk/py4science/workbook/trapezoid.tex Modified: trunk/py4science/workbook/trapezoid.lyx =================================================================== --- trunk/py4science/workbook/trapezoid.lyx 2007-10-14 19:11:32 UTC (rev 3942) +++ trunk/py4science/workbook/trapezoid.lyx 2007-10-14 20:44:08 UTC (rev 3943) @@ -120,7 +120,7 @@ ) becomes \begin_inset Formula \begin{equation} -\int_{a}^{b}f(x)dx\approx\frac{1}{2}\sum_{i=1}^{n}\left(x_{i}-x_{i-1}\right)\left(y_{i}+y_{i+1}\right).\label{eq:trapz}\end{equation} +\int_{a}^{b}f(x)dx\approx\frac{1}{2}\sum_{i=1}^{n}\left(x_{i}-x_{i-1}\right)\left(y_{i}+y_{i-1}\right).\label{eq:trapz}\end{equation} \end_inset Modified: trunk/py4science/workbook/trapezoid.tex =================================================================== --- trunk/py4science/workbook/trapezoid.tex 2007-10-14 19:11:32 UTC (rev 3942) +++ trunk/py4science/workbook/trapezoid.tex 2007-10-14 20:44:08 UTC (rev 3943) @@ -23,7 +23,7 @@ \int_{a}^{b}f(x)dx\approx\frac{h}{2}\sum_{i=1}^{n}\left(f(x_{i})+f(x_{i+1})\right).\label{eq:trapzf2}\end{equation} One frequently receives the function values already precomputed, $y_{i}=f(x_{i}),$ so equation~(\ref{eq:trapzf}) becomes \begin{equation} -\int_{a}^{b}f(x)dx\approx\frac{1}{2}\sum_{i=1}^{n}\left(x_{i}-x_{i-1}\right)\left(y_{i}+y_{i+1}\right).\label{eq:trapz}\end{equation} +\int_{a}^{b}f(x)dx\approx\frac{1}{2}\sum_{i=1}^{n}\left(x_{i}-x_{i-1}\right)\left(y_{i}+y_{i-1}\right).\label{eq:trapz}\end{equation} % This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jd...@us...> - 2007-10-20 21:33:00
|
Revision: 3973 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=3973&view=rev Author: jdh2358 Date: 2007-10-20 14:32:59 -0700 (Sat, 20 Oct 2007) Log Message: ----------- added stock records exercise Modified Paths: -------------- trunk/py4science/workbook/files_etc.tex trunk/py4science/workbook/main.tex Added Paths: ----------- trunk/py4science/workbook/fig/stock_records.eps trunk/py4science/workbook/fig/stock_records.png Added: trunk/py4science/workbook/fig/stock_records.eps =================================================================== --- trunk/py4science/workbook/fig/stock_records.eps (rev 0) +++ trunk/py4science/workbook/fig/stock_records.eps 2007-10-20 21:32:59 UTC (rev 3973) @@ -0,0 +1,9121 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Title: fig/stock_records.eps +%%Creator: matplotlib version 0.90.1, http://matplotlib.sourceforge.net/ +%%CreationDate: Sat Oct 20 15:31:09 2007 +%%Orientation: portrait +%%BoundingBox: 18 180 594 612 +%%EndComments +%%BeginProlog +/mpldict 7 dict def +mpldict begin +/m { moveto } bind def +/l { lineto } bind def +/r { rlineto } bind def +/box { +m +1 index 0 r +0 exch r +neg 0 r +closepath +} bind def +/clipbox { +box +clip +newpath +} bind def +/ellipse { +newpath +matrix currentmatrix 7 1 roll +translate +scale +0 0 1 5 3 roll arc +setmatrix +closepath +} bind def +%!PS-Adobe-3.0 Resource-Font +%%Title: Bitstream Vera Sans +%%Copyright: Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. +%%Creator: Converted from TrueType by PPR +25 dict begin +/_d{bind def}bind def +/_m{moveto}_d +/_l{lineto}_d +/_cl{closepath eofill}_d +/_c{curveto}_d +/_sc{7 -1 roll{setcachedevice}{pop pop pop pop pop pop}ifelse}_d +/_e{exec}_d +/FontName /BitstreamVeraSans-Roman def +/PaintType 0 def +/FontMatrix[.001 0 0 .001 0 0]def +/FontBBox[-182 -235 1287 928]def +/FontType 3 def +/Encoding StandardEncoding def +/FontInfo 10 dict dup begin +/FamilyName (Bitstream Vera Sans) def +/FullName (Bitstream Vera Sans) def +/Notice (Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc.) def +/Weight (Roman) def +/Version (Release 1.10) def +/ItalicAngle 0.0 def +/isFixedPitch false def +/UnderlinePosition -213 def +/UnderlineThickness 143 def +end readonly def +/CharStrings 30 dict dup begin +/hyphen{361 0 49 234 312 314 _sc +49 314 _m +312 314 _l +312 234 _l +49 234 _l +49 314 _l +_cl}_d +/zero{636 0 66 -13 570 742 _sc +318 664 _m +267 664 229 639 203 589 _c +177 539 165 464 165 364 _c +165 264 177 189 203 139 _c +229 89 267 64 318 64 _c +369 64 407 89 433 139 _c +458 189 471 264 471 364 _c +471 464 458 539 433 589 _c +407 639 369 664 318 664 _c +318 742 _m +399 742 461 709 505 645 _c +548 580 570 486 570 364 _c +570 241 548 147 505 83 _c +461 19 399 -13 318 -13 _c +236 -13 173 19 130 83 _c +87 147 66 241 66 364 _c +66 486 87 580 130 645 _c +173 709 236 742 318 742 _c +_cl}_d +/one{636 0 110 0 544 729 _sc +124 83 _m +285 83 _l +285 639 _l +110 604 _l +110 694 _l +284 729 _l +383 729 _l +383 83 _l +544 83 _l +544 0 _l +124 0 _l +124 83 _l +_cl}_d +/two{{636 0 73 0 536 742 _sc +192 83 _m +536 83 _l +536 0 _l +73 0 _l +73 83 _l +110 121 161 173 226 239 _c +290 304 331 346 348 365 _c +380 400 402 430 414 455 _c +426 479 433 504 433 528 _c +433 566 419 598 392 622 _c +365 646 330 659 286 659 _c +255 659 222 653 188 643 _c +154 632 117 616 78 594 _c +78 694 _l +118 710 155 722 189 730 _c +223 738 255 742 284 742 _c +359 742 419 723 464 685 _c +509 647 532 597 532 534 _c +532 504 526 475 515 449 _c +504 422 484 390 454 354 _c +446 344 420 317 376 272 _c +332 227 271 164 192 83 _c +_cl}_e}_d +/three{{636 0 76 -13 556 742 _sc +406 393 _m +453 383 490 362 516 330 _c +542 298 556 258 556 212 _c +556 140 531 84 482 45 _c +432 6 362 -13 271 -13 _c +240 -13 208 -10 176 -4 _c +144 1 110 10 76 22 _c +76 117 _l +103 101 133 89 166 81 _c +198 73 232 69 268 69 _c +330 69 377 81 409 105 _c +441 129 458 165 458 212 _c +458 254 443 288 413 312 _c +383 336 341 349 287 349 _c +202 349 _l +202 430 _l +291 430 _l +339 430 376 439 402 459 _c +428 478 441 506 441 543 _c +441 580 427 609 401 629 _c +374 649 336 659 287 659 _c +260 659 231 656 200 650 _c +169 644 135 635 98 623 _c +98 711 _l +135 721 170 729 203 734 _c +235 739 266 742 296 742 _c +}_e{370 742 429 725 473 691 _c +517 657 539 611 539 553 _c +539 513 527 479 504 451 _c +481 423 448 403 406 393 _c +_cl}_e}_d +/four{636 0 49 0 580 729 _sc +378 643 _m +129 254 _l +378 254 _l +378 643 _l +352 729 _m +476 729 _l +476 254 _l +580 254 _l +580 172 _l +476 172 _l +476 0 _l +378 0 _l +378 172 _l +49 172 _l +49 267 _l +352 729 _l +_cl}_d +/five{{636 0 77 -13 549 729 _sc +108 729 _m +495 729 _l +495 646 _l +198 646 _l +198 467 _l +212 472 227 476 241 478 _c +255 480 270 482 284 482 _c +365 482 429 459 477 415 _c +525 370 549 310 549 234 _c +549 155 524 94 475 51 _c +426 8 357 -13 269 -13 _c +238 -13 207 -10 175 -6 _c +143 -1 111 6 77 17 _c +77 116 _l +106 100 136 88 168 80 _c +199 72 232 69 267 69 _c +323 69 368 83 401 113 _c +433 143 450 183 450 234 _c +450 284 433 324 401 354 _c +368 384 323 399 267 399 _c +241 399 214 396 188 390 _c +162 384 135 375 108 363 _c +108 729 _l +_cl}_e}_d +/six{{636 0 70 -13 573 742 _sc +330 404 _m +286 404 251 388 225 358 _c +199 328 186 286 186 234 _c +186 181 199 139 225 109 _c +251 79 286 64 330 64 _c +374 64 409 79 435 109 _c +461 139 474 181 474 234 _c +474 286 461 328 435 358 _c +409 388 374 404 330 404 _c +526 713 _m +526 623 _l +501 635 476 644 451 650 _c +425 656 400 659 376 659 _c +310 659 260 637 226 593 _c +192 549 172 482 168 394 _c +187 422 211 444 240 459 _c +269 474 301 482 336 482 _c +409 482 467 459 509 415 _c +551 371 573 310 573 234 _c +573 159 550 99 506 54 _c +462 9 403 -13 330 -13 _c +246 -13 181 19 137 83 _c +92 147 70 241 70 364 _c +70 479 97 571 152 639 _c +206 707 280 742 372 742 _c +}_e{396 742 421 739 447 735 _c +472 730 498 723 526 713 _c +_cl}_e}_d +/seven{636 0 82 0 551 729 _sc +82 729 _m +551 729 _l +551 687 _l +286 0 _l +183 0 _l +432 646 _l +82 646 _l +82 729 _l +_cl}_d +/eight{{636 0 68 -13 568 742 _sc +318 346 _m +271 346 234 333 207 308 _c +180 283 167 249 167 205 _c +167 161 180 126 207 101 _c +234 76 271 64 318 64 _c +364 64 401 76 428 102 _c +455 127 469 161 469 205 _c +469 249 455 283 429 308 _c +402 333 365 346 318 346 _c +219 388 _m +177 398 144 418 120 447 _c +96 476 85 511 85 553 _c +85 611 105 657 147 691 _c +188 725 245 742 318 742 _c +390 742 447 725 489 691 _c +530 657 551 611 551 553 _c +551 511 539 476 515 447 _c +491 418 459 398 417 388 _c +464 377 501 355 528 323 _c +554 291 568 251 568 205 _c +568 134 546 80 503 43 _c +459 5 398 -13 318 -13 _c +237 -13 175 5 132 43 _c +89 80 68 134 68 205 _c +68 251 81 291 108 323 _c +134 355 171 377 219 388 _c +}_e{183 544 _m +183 506 194 476 218 455 _c +242 434 275 424 318 424 _c +360 424 393 434 417 455 _c +441 476 453 506 453 544 _c +453 582 441 611 417 632 _c +393 653 360 664 318 664 _c +275 664 242 653 218 632 _c +194 611 183 582 183 544 _c +_cl}_e}_d +/A{684 0 8 0 676 729 _sc +342 632 _m +208 269 _l +476 269 _l +342 632 _l +286 729 _m +398 729 _l +676 0 _l +573 0 _l +507 187 _l +178 187 _l +112 0 _l +8 0 _l +286 729 _l +_cl}_d +/C{{698 0 56 -13 644 742 _sc +644 673 _m +644 569 _l +610 599 575 622 537 638 _c +499 653 460 661 418 661 _c +334 661 270 635 226 584 _c +182 533 160 460 160 364 _c +160 268 182 194 226 143 _c +270 92 334 67 418 67 _c +460 67 499 74 537 90 _c +575 105 610 128 644 159 _c +644 56 _l +609 32 572 15 534 4 _c +496 -7 455 -13 412 -13 _c +302 -13 215 20 151 87 _c +87 154 56 246 56 364 _c +56 481 87 573 151 641 _c +215 708 302 742 412 742 _c +456 742 497 736 535 725 _c +573 713 610 696 644 673 _c +_cl}_e}_d +/E{632 0 98 0 568 729 _sc +98 729 _m +559 729 _l +559 646 _l +197 646 _l +197 430 _l +544 430 _l +544 347 _l +197 347 _l +197 83 _l +568 83 _l +568 0 _l +98 0 _l +98 729 _l +_cl}_d +/F{575 0 98 0 517 729 _sc +98 729 _m +517 729 _l +517 646 _l +197 646 _l +197 431 _l +486 431 _l +486 348 _l +197 348 _l +197 0 _l +98 0 _l +98 729 _l +_cl}_d +/G{{775 0 56 -13 693 742 _sc +595 104 _m +595 300 _l +434 300 _l +434 381 _l +693 381 _l +693 68 _l +655 40 613 20 567 7 _c +521 -6 472 -13 420 -13 _c +306 -13 216 20 152 86 _c +88 152 56 245 56 364 _c +56 482 88 575 152 642 _c +216 708 306 742 420 742 _c +467 742 512 736 555 724 _c +598 712 638 695 674 673 _c +674 568 _l +637 598 598 621 557 637 _c +516 653 473 661 428 661 _c +338 661 271 636 227 586 _c +182 536 160 462 160 364 _c +160 265 182 191 227 141 _c +271 91 338 67 428 67 _c +462 67 493 70 521 76 _c +549 82 573 91 595 104 _c +_cl}_e}_d +/H{752 0 98 0 654 729 _sc +98 729 _m +197 729 _l +197 430 _l +555 430 _l +555 729 _l +654 729 _l +654 0 _l +555 0 _l +555 347 _l +197 347 _l +197 0 _l +98 0 _l +98 729 _l +_cl}_d +/I{295 0 98 0 197 729 _sc +98 729 _m +197 729 _l +197 0 _l +98 0 _l +98 729 _l +_cl}_d +/L{557 0 98 0 552 729 _sc +98 729 _m +197 729 _l +197 83 _l +552 83 _l +552 0 _l +98 0 _l +98 729 _l +_cl}_d +/M{863 0 98 0 765 729 _sc +98 729 _m +245 729 _l +431 233 _l +618 729 _l +765 729 _l +765 0 _l +669 0 _l +669 640 _l +481 140 _l +382 140 _l +194 640 _l +194 0 _l +98 0 _l +98 729 _l +_cl}_d +/N{748 0 98 0 650 729 _sc +98 729 _m +231 729 _l +554 119 _l +554 729 _l +650 729 _l +650 0 _l +517 0 _l +194 610 _l +194 0 _l +98 0 _l +98 729 _l +_cl}_d +/O{787 0 56 -13 731 742 _sc +394 662 _m +322 662 265 635 223 582 _c +181 528 160 456 160 364 _c +160 272 181 199 223 146 _c +265 92 322 66 394 66 _c +465 66 522 92 564 146 _c +606 199 627 272 627 364 _c +627 456 606 528 564 582 _c +522 635 465 662 394 662 _c +394 742 _m +496 742 577 707 639 639 _c +700 571 731 479 731 364 _c +731 248 700 157 639 89 _c +577 21 496 -13 394 -13 _c +291 -13 209 21 148 89 _c +86 157 56 248 56 364 _c +56 479 86 571 148 639 _c +209 707 291 742 394 742 _c +_cl}_d +/P{603 0 98 0 569 729 _sc +197 648 _m +197 374 _l +321 374 _l +367 374 402 385 427 409 _c +452 433 465 467 465 511 _c +465 555 452 588 427 612 _c +402 636 367 648 321 648 _c +197 648 _l +98 729 _m +321 729 _l +402 729 464 710 506 673 _c +548 636 569 582 569 511 _c +569 439 548 384 506 348 _c +464 311 402 293 321 293 _c +197 293 _l +197 0 _l +98 0 _l +98 729 _l +_cl}_d +/S{{635 0 66 -13 579 742 _sc +535 705 _m +535 609 _l +497 627 462 640 429 649 _c +395 657 363 662 333 662 _c +279 662 237 651 208 631 _c +179 610 165 580 165 542 _c +165 510 174 485 194 469 _c +213 452 250 439 304 429 _c +364 417 _l +437 403 491 378 526 343 _c +561 307 579 260 579 201 _c +579 130 555 77 508 41 _c +460 5 391 -13 300 -13 _c +265 -13 228 -9 189 -2 _c +150 5 110 16 69 32 _c +69 134 _l +109 111 148 94 186 83 _c +224 71 262 66 300 66 _c +356 66 399 77 430 99 _c +460 121 476 152 476 194 _c +476 230 465 258 443 278 _c +421 298 385 313 335 323 _c +275 335 _l +201 349 148 372 115 404 _c +82 435 66 478 66 534 _c +66 598 88 649 134 686 _c +179 723 242 742 322 742 _c +}_e{356 742 390 739 426 733 _c +461 727 497 717 535 705 _c +_cl}_e}_d +/T{611 0 -2 0 614 729 _sc +-2 729 _m +614 729 _l +614 646 _l +355 646 _l +355 0 _l +256 0 _l +256 646 _l +-2 646 _l +-2 729 _l +_cl}_d +/W{989 0 33 0 956 729 _sc +33 729 _m +133 729 _l +286 113 _l +439 729 _l +550 729 _l +703 113 _l +856 729 _l +956 729 _l +773 0 _l +649 0 _l +495 633 _l +340 0 _l +216 0 _l +33 729 _l +_cl}_d +/Y{611 0 -1 0 613 729 _sc +-1 729 _m +104 729 _l +306 429 _l +507 729 _l +613 729 _l +355 347 _l +355 0 _l +256 0 _l +256 347 _l +-1 729 _l +_cl}_d +/a{{613 0 60 -13 522 560 _sc +343 275 _m +270 275 220 266 192 250 _c +164 233 150 205 150 165 _c +150 133 160 107 181 89 _c +202 70 231 61 267 61 _c +317 61 357 78 387 114 _c +417 149 432 196 432 255 _c +432 275 _l +343 275 _l +522 312 _m +522 0 _l +432 0 _l +432 83 _l +411 49 385 25 355 10 _c +325 -5 287 -13 243 -13 _c +187 -13 142 2 109 33 _c +76 64 60 106 60 159 _c +60 220 80 266 122 298 _c +163 329 224 345 306 345 _c +432 345 _l +432 354 _l +432 395 418 427 391 450 _c +364 472 326 484 277 484 _c +245 484 215 480 185 472 _c +155 464 127 453 100 439 _c +100 522 _l +}_e{132 534 164 544 195 550 _c +226 556 256 560 286 560 _c +365 560 424 539 463 498 _c +502 457 522 395 522 312 _c +_cl}_e}_d +/d{{635 0 55 -13 544 760 _sc +454 464 _m +454 760 _l +544 760 _l +544 0 _l +454 0 _l +454 82 _l +435 49 411 25 382 10 _c +353 -5 319 -13 279 -13 _c +213 -13 159 13 117 65 _c +75 117 55 187 55 273 _c +55 359 75 428 117 481 _c +159 533 213 560 279 560 _c +319 560 353 552 382 536 _c +411 520 435 496 454 464 _c +148 273 _m +148 207 161 155 188 117 _c +215 79 253 61 301 61 _c +348 61 385 79 413 117 _c +440 155 454 207 454 273 _c +454 339 440 390 413 428 _c +385 466 348 485 301 485 _c +253 485 215 466 188 428 _c +161 390 148 339 148 273 _c +_cl}_e}_d +/e{{615 0 55 -13 562 560 _sc +562 296 _m +562 252 _l +149 252 _l +153 190 171 142 205 110 _c +238 78 284 62 344 62 _c +378 62 412 66 444 74 _c +476 82 509 95 541 113 _c +541 28 _l +509 14 476 3 442 -3 _c +408 -9 373 -13 339 -13 _c +251 -13 182 12 131 62 _c +80 112 55 181 55 268 _c +55 357 79 428 127 481 _c +175 533 241 560 323 560 _c +397 560 455 536 498 489 _c +540 441 562 377 562 296 _c +472 322 _m +471 371 457 410 431 440 _c +404 469 368 484 324 484 _c +274 484 234 469 204 441 _c +174 413 156 373 152 322 _c +472 322 _l +_cl}_e}_d +/t{392 0 27 0 368 702 _sc +183 702 _m +183 547 _l +368 547 _l +368 477 _l +183 477 _l +183 180 _l +183 135 189 106 201 94 _c +213 81 238 75 276 75 _c +368 75 _l +368 0 _l +276 0 _l +206 0 158 13 132 39 _c +106 65 93 112 93 180 _c +93 477 _l +27 477 _l +27 547 _l +93 547 _l +93 702 _l +183 702 _l +_cl}_d +end readonly def + +/BuildGlyph + {exch begin + CharStrings exch + 2 copy known not{pop /.notdef}if + true 3 1 roll get exec + end}_d + +/BuildChar { + 1 index /Encoding get exch get + 1 index /BuildGlyph get exec +}_d + +FontName currentdict end definefont pop +%%EOF +end +%%EndProlog +mpldict begin +18 180 translate +576 432 0 0 clipbox +1.000 setgray +1.000 setlinewidth +0 setlinejoin +2 setlinecap +[] 0 setdash +0 0 m +0 432 l +576 432 l +576 0 l +closepath +gsave +fill +grestore +stroke +0.000 setgray +72 43.2 m +72 388.8 l +518.4 388.8 l +518.4 43.2 l +closepath +gsave +1.000 setgray +fill +grestore +stroke +0.000 0.000 1.000 setrgbcolor +gsave +446.4 345.6 72 43.2 clipbox +110.389 100.8 m +110.598 100.698 l +111.228 101.137 l +111.438 101.261 l +111.647 100.793 l +111.857 101.056 l +112.067 101.305 l +112.696 101.276 l +112.906 101.554 l +113.116 101.254 l +113.326 101.151 l +113.535 100.558 l +114.374 100.522 l +114.584 100.493 l +114.794 100.785 l +115.004 100.222 l +115.633 100.236 l +115.843 100.346 l +116.053 100.778 l +116.262 100.171 l +116.472 100.09 l +117.102 100.171 l +117.311 100.075 l +117.521 100.046 l +117.731 99.929 l +117.941 99.6802 l +118.57 99.8339 l +118.78 99.8778 l +118.989 99.7461 l +119.199 100.01 l +119.409 100.441 l +120.248 100.844 l +120.458 100.873 l +120.668 100.998 l +120.877 100.881 l +121.507 100.712 l +121.717 100.844 l +121.926 100.5 l +122.136 100.822 l +122.346 101.203 l +122.975 100.793 l +123.185 100.763 l +123.395 101.012 l +123.605 100.793 l +123.814 100.346 l +124.444 100.266 l +124.653 100.229 l +124.863 100.456 l +125.073 101.268 l +125.283 101.144 l +125.912 101.759 l +126.122 101.891 l +126.332 101.708 l +126.541 101.905 l +126.751 102.352 l +127.38 101.59 l +127.59 101.744 l +127.8 101.642 l +128.01 101.429 l +128.22 101.181 l +128.849 100.529 l +129.059 100.624 l +129.268 101.386 l +129.478 101.422 l +129.688 101.063 l +130.317 101.268 l +130.527 101.093 l +130.737 100.807 l +130.947 100.946 l +131.156 100.851 l +131.786 101.137 l +131.995 101.115 l +132.205 101.832 l +132.415 102.176 l +133.254 102.169 l +133.464 102.41 l +133.674 102.74 l +133.883 102.374 l +134.093 101.912 l +134.723 102.235 l +134.932 102.352 l +135.142 101.993 l +135.352 102.088 l +135.562 102.432 l +136.191 102.439 l +136.401 102.791 l +136.611 102.564 l +136.82 102.33 l +137.03 102.827 l +137.659 103.105 l +137.869 102.996 l +138.079 102.879 l +138.289 103.113 l +138.498 102.769 l +139.128 102.198 l +139.338 102.191 l +139.547 102.315 l +139.757 102.264 l +139.967 102.293 l +140.806 102.959 l +141.016 102.937 l +141.226 103.691 l +141.435 103.684 l +142.065 103.376 l +142.274 103.874 l +142.484 104.072 l +142.694 104.386 l +142.904 104.335 l +143.533 104.269 l +143.743 104.474 l +143.953 104.423 l +144.162 104.599 l +144.372 104.057 l +145.002 104.408 l +145.211 104.115 l +145.421 104.328 l +145.631 103.889 l +145.841 103.581 l +146.47 103.362 l +146.68 103.427 l +146.889 103.142 l +147.099 103.552 l +147.309 103.508 l +147.938 103.676 l +148.148 104.094 l +148.358 104.642 l +148.568 104.306 l +149.407 105.125 l +149.617 105.294 l +149.826 105.521 l +150.036 105.125 l +150.246 105.426 l +150.875 105.894 l +151.085 105.953 l +151.295 106.787 l +151.505 106.523 l +151.714 106.34 l +152.344 105.923 l +152.553 106.172 l +152.763 106.443 l +152.973 105.865 l +153.183 106.509 l +153.812 106.406 l +154.022 106.501 l +154.232 106.223 l +154.441 106.494 l +154.651 106.589 l +155.28 106.662 l +155.49 106.084 l +155.7 105.989 l +155.91 105.887 l +156.12 105.601 l +156.749 105.828 l +156.959 106.15 l +157.168 106.384 l +157.378 106.684 l +157.588 106.619 l +158.217 107.409 l +158.427 107.607 l +158.637 107.526 l +158.847 107.548 l +159.056 108.243 l +159.686 108.141 l +159.895 108.463 l +160.105 108.675 l +160.315 108.873 l +160.525 109.07 l +161.364 109.173 l +161.574 108.814 l +161.783 109.078 l +161.993 109.158 l +162.623 109.48 l +162.832 109.209 l +163.042 108.426 l +163.252 108.682 l +163.462 108.902 l +164.091 108.661 l +164.301 109.297 l +164.511 109.275 l +164.72 109.466 l +164.93 109.473 l +165.559 109.026 l +165.769 109.312 l +165.979 108.514 l +166.189 108.28 l +166.398 108.156 l +167.028 108.917 l +167.238 108.331 l +167.447 109.1 l +167.657 109.092 l +167.867 109.78 l +168.496 109.744 l +168.706 110.015 l +168.916 109.817 l +169.126 109.89 l +169.335 110.344 l +169.965 110.6 l +170.174 110.798 l +170.384 111.266 l +170.594 111.595 l +170.804 111.2 l +171.433 111.544 l +171.643 111.515 l +171.853 111.098 l +172.062 110.893 l +172.272 110.798 l +172.902 111.032 l +173.111 111.896 l +173.321 111.991 l +173.531 112.049 l +173.741 112.093 l +174.37 112.847 l +174.58 112.598 l +174.789 112.649 l +174.999 112.913 l +175.209 112.744 l +175.838 112.408 l +176.048 112.422 l +176.258 112.898 l +176.468 112.679 l +176.677 111.998 l +177.307 111.603 l +177.517 111.339 l +177.726 111.808 l +177.936 111.332 l +178.146 111.669 l +178.775 112.459 l +178.985 112.188 l +179.195 112.379 l +179.614 112.51 l +180.244 112.862 l +180.453 112.73 l +180.663 112.371 l +180.873 112.51 l +181.083 111.515 l +181.712 111.2 l +181.922 110.234 l +182.132 110.351 l +182.341 110.688 l +182.551 110.659 l +183.18 110.227 l +183.39 110.241 l +183.6 110.176 l +183.81 110.688 l +184.02 110.454 l +184.649 110.351 l +184.859 110.827 l +185.068 110.812 l +185.488 111.003 l +186.117 111.552 l +186.327 111.471 l +186.537 111.478 l +186.956 111.559 l +187.586 112.078 l +187.795 112.071 l +188.005 112.825 l +188.215 113.001 l +188.425 112.81 l +189.054 112.935 l +189.264 112.547 l +189.474 112.408 l +189.683 112.181 l +189.893 112.064 l +190.732 111.866 l +190.942 111.588 l +191.152 111.193 l +191.362 111.273 l +191.991 111.742 l +192.201 111.193 l +192.411 111.017 l +192.62 110.681 l +192.83 110.424 l +193.459 110.285 l +193.669 111.032 l +193.879 110.102 l +194.089 110.029 l +194.298 110.695 l +194.928 110.483 l +195.138 110.461 l +195.347 110.776 l +195.557 110.6 l +195.767 110.183 l +196.606 110.651 l +196.816 110.505 l +197.026 110.015 l +197.235 110.088 l +197.865 109.392 l +198.074 109.531 l +198.284 109.824 l +198.494 109.744 l +198.704 109.531 l +199.333 109.875 l +199.543 109.81 l +199.753 109.422 l +199.962 109.846 l +200.172 109.356 l +200.802 108.492 l +201.011 108.69 l +201.221 108.221 l +201.431 108.06 l +201.641 108.485 l +202.27 108.075 l +202.48 108.119 l +202.689 108.558 l +202.899 108.148 l +203.109 107.651 l +203.738 107.475 l +203.948 107.424 l +204.158 107.68 l +204.368 108.558 l +204.577 108.273 l +205.207 108.485 l +205.417 108.302 l +205.626 108.148 l +205.836 108.273 l +206.046 108.785 l +206.675 109.085 l +206.885 108.887 l +207.095 108.434 l +207.305 108.265 l +208.144 108.426 l +208.353 108.47 l +208.563 108.265 l +208.773 107.768 l +208.983 107.629 l +209.612 107.782 l +209.822 107.365 l +210.032 107.504 l +210.241 107.672 l +210.451 108.375 l +211.08 108.112 l +211.29 107.921 l +211.5 107.555 l +211.71 107.402 l +211.92 107.124 l +212.549 107.343 l +212.759 107.504 l +212.968 107.482 l +213.178 107.328 l +213.388 107.665 l +214.017 107.724 l +214.227 108.573 l +214.437 108.434 l +214.647 108.339 l +214.856 108.06 l +215.486 107.921 l +215.695 108.141 l +215.905 108.112 l +216.115 108.324 l +216.325 108.419 l +216.954 108.551 l +217.164 108.8 l +217.374 108.99 l +217.583 109.041 l +217.793 109.114 l +218.632 108.961 l +218.842 108.734 l +219.052 108.324 l +219.262 108.829 l +219.891 109.253 l +220.101 109.414 l +220.311 109.005 l +220.52 109.173 l +221.359 108.726 l +221.569 109.026 l +221.779 108.814 l +221.989 108.47 l +222.198 108.478 l +222.828 108.397 l +223.038 108.756 l +223.247 109.092 l +223.457 108.697 l +223.667 108.58 l +224.296 108.302 l +224.506 108.456 l +224.716 108.456 l +224.926 108.046 l +225.135 107.57 l +225.974 107.416 l +226.184 107.577 l +226.394 107.497 l +226.604 107.738 l +227.233 107.504 l +227.443 107.438 l +227.653 105.521 l +227.862 105.36 l +228.072 105.067 l +228.702 105.191 l +228.911 105.426 l +229.121 104.95 l +229.331 105.448 l +229.541 105.03 l +230.17 105.235 l +230.38 105.448 l +230.589 105.579 l +230.799 106.121 l +231.009 106.216 l +231.638 106.575 l +231.848 106.07 l +232.058 105.96 l +232.268 105.748 l +232.477 105.125 l +233.107 104.986 l +233.317 104.964 l +233.526 104.701 l +233.736 104.057 l +233.946 104.284 l +234.575 104.181 l +234.785 104.247 l +234.995 104.738 l +235.205 104.591 l +235.414 104.32 l +236.044 104.511 l +236.253 104.357 l +236.463 104.555 l +236.673 104.43 l +236.883 104.599 l +237.512 104.306 l +237.722 104.094 l +237.932 104.189 l +238.141 104.328 l +238.351 103.23 l +239.19 103.12 l +239.4 103.003 l +239.61 103.318 l +239.82 103.596 l +240.449 103.75 l +240.659 103.735 l +240.868 103.486 l +241.078 103.274 l +241.288 103.603 l +241.917 103.837 l +242.127 103.947 l +242.337 103.486 l +242.547 103.457 l +242.756 103.288 l +243.386 103.142 l +243.595 102.974 l +243.805 103.245 l +244.015 103.237 l +244.225 103.786 l +244.854 103.984 l +245.064 104.115 l +245.274 103.984 l +245.483 104.057 l +245.693 103.581 l +246.323 103.618 l +246.532 103.391 l +246.742 103.881 l +246.952 103.552 l +247.162 103.618 l +247.791 103.742 l +248.001 103.75 l +248.211 104.203 l +248.42 104.372 l +248.63 104.101 l +249.259 104.108 l +249.469 104.167 l +249.679 104.584 l +249.889 104.774 l +250.098 104.767 l +250.728 104.891 l +250.938 105.008 l +251.147 105.082 l +251.357 105.228 l +251.567 105.565 l +252.196 105.469 l +252.406 105.367 l +252.616 105.213 l +252.826 105.433 l +253.035 105.792 l +253.665 105.85 l +253.874 105.894 l +254.084 106.231 l +254.294 106.567 l +254.504 106.121 l +255.133 106.077 l +255.343 105.572 l +255.553 105.74 l +255.972 105.455 l +256.602 105.352 l +256.811 104.877 l +257.021 105.382 l +257.231 105.111 l +257.441 105.945 l +258.07 106.018 l +258.28 105.645 l +258.489 105.316 l +258.699 105.147 l +258.909 105.008 l +259.538 105.052 l +259.748 105.477 l +259.958 105.411 l +260.168 105.221 l +260.377 105.155 l +261.007 105.104 l +261.217 105.652 l +261.426 105.623 l +261.636 105.689 l +262.475 105.572 l +262.685 105.506 l +262.895 105.484 l +263.105 105.484 l +263.314 105.587 l +263.944 105.36 l +264.153 105.038 l +264.363 104.884 l +264.573 104.935 l +264.783 105.169 l +265.412 105.228 l +265.622 104.994 l +265.832 105.426 l +266.041 105.184 l +266.251 105.323 l +267.09 105.272 l +267.3 105.03 l +267.51 105.016 l +267.72 104.906 l +268.349 104.606 l +268.559 104.796 l +268.768 104.906 l +268.978 104.833 l +269.188 104.781 l +269.817 104.928 l +270.027 105.052 l +270.237 105.016 l +270.447 104.935 l +270.656 105.367 l +271.286 105.308 l +271.495 105.652 l +271.705 105.579 l +271.915 105.718 l +272.125 106.187 l +272.754 106.282 l +272.964 106.399 l +273.174 106.165 l +273.383 105.806 l +273.593 106.084 l +274.432 105.901 l +274.642 105.587 l +274.852 105.857 l +275.062 106.128 l +275.691 106.062 l +275.901 106.501 l +276.111 106.436 l +276.32 106.421 l +276.53 106.545 l +277.159 106.845 l +277.369 106.626 l +277.579 106.655 l +277.789 106.662 l +277.998 106.209 l +278.628 106.26 l +278.838 105.982 l +279.047 105.748 l +279.257 105.652 l +279.467 105.652 l +280.096 105.718 l +280.306 105.382 l +280.516 105.645 l +280.726 105.491 l +281.565 105.579 l +281.774 105.477 l +281.984 105.711 l +282.194 105.528 l +282.404 105.374 l +283.033 105.323 l +283.243 105.462 l +283.453 105.404 l +283.662 105.652 l +283.872 105.572 l +284.502 105.455 l +284.711 105.521 l +284.921 105.243 l +285.131 105.008 l +285.341 104.752 l +285.97 104.818 l +286.18 105.111 l +286.389 105.133 l +286.599 105.623 l +286.809 105.535 l +287.438 105.652 l +287.648 105.594 l +287.858 105.726 l +288.068 105.499 l +288.277 105.733 l +288.907 105.755 l +289.117 105.953 l +289.326 106.201 l +289.536 106.304 l +289.746 106.472 l +290.375 106.684 l +290.585 106.597 l +290.795 106.662 l +291.005 106.714 l +291.214 106.911 l +291.844 107.058 l +292.053 107.321 l +292.263 107.482 l +292.473 107.533 l +292.683 107.775 l +293.312 107.877 l +293.522 108.199 l +293.732 108.229 l +293.941 108.492 l +294.151 108.507 l +294.99 108.199 l +295.2 108.434 l +295.41 108.646 l +295.62 108.463 l +296.249 108.353 l +296.459 108.134 l +296.668 108.302 l +296.878 108.719 l +297.088 108.214 l +297.717 108.229 l +297.927 108.016 l +298.137 108.185 l +298.347 108.317 l +298.556 108.317 l +299.186 108.163 l +299.395 108.353 l +299.605 108.309 l +299.815 108.068 l +300.025 107.599 l +300.654 107.431 l +300.864 107.76 l +301.074 107.702 l +301.283 107.541 l +301.493 107.672 l +302.332 108.009 l +302.542 107.877 l +302.752 107.921 l +302.962 108.426 l +303.591 108.719 l +303.801 108.756 l +304.011 108.646 l +304.22 108.851 l +304.43 109.144 l +305.059 109.092 l +305.269 109.429 l +305.479 108.536 l +305.689 108.251 l +305.898 108.053 l +306.528 107.892 l +306.738 108.156 l +306.947 108.273 l +307.157 108.47 l +307.367 108.331 l +307.996 108.309 l +308.206 108.624 l +308.416 108.734 l +308.626 108.295 l +308.835 108.126 l +309.465 108.082 l +309.674 108.214 l +309.884 108.199 l +310.094 108.156 l +310.304 107.797 l +310.933 107.958 l +311.143 107.585 l +311.353 107.643 l +311.562 107.497 l +311.772 107.336 l +312.402 107.621 l +312.611 107.387 l +312.821 107.248 l +313.031 107.204 l +313.241 107.167 l +313.87 107.394 l +314.08 107.277 l +314.289 107.387 l +314.499 107.058 l +314.709 107.072 l +315.548 107.372 l +315.758 107.343 l +315.968 107.643 l +316.177 107.05 l +316.807 106.867 l +317.017 106.809 l +317.226 106.516 l +317.436 106.56 l +317.646 106.743 l +318.275 106.655 l +318.485 106.509 l +318.695 106.523 l +318.905 106.567 l +319.114 106.443 l +319.744 106.326 l +319.953 106.055 l +320.163 106.136 l +320.373 106.509 l +320.583 106.633 l +321.212 106.597 l +321.422 106.523 l +321.632 106.223 l +321.841 106.004 l +322.051 106.048 l +322.68 105.762 l +322.89 105.762 l +323.1 105.638 l +323.31 105.609 l +323.52 105.63 l +324.149 105.792 l +324.359 105.974 l +324.568 105.953 l +324.778 105.909 l +324.988 105.572 l +325.617 105.543 l +325.827 105.55 l +326.037 105.521 l +326.247 105.36 l +326.456 105.704 l +327.086 105.821 l +327.295 105.221 l +327.505 105.733 l +327.715 106.157 l +327.925 106.223 l +328.554 106.582 l +328.764 106.619 l +328.974 106.794 l +329.183 107.109 l +329.393 107.028 l +330.023 107.197 l +330.232 106.992 l +330.442 106.875 l +330.652 107.014 l +330.862 107.153 l +331.491 107.116 l +331.701 107.76 l +331.911 108.097 l +332.33 108.214 l +332.959 108.251 l +333.169 108.192 l +333.379 108.126 l +333.589 108.478 l +333.798 108.653 l +334.428 108.28 l +334.638 108.119 l +334.847 107.753 l +335.057 107.431 l +335.267 107.702 l +335.896 108.082 l +336.106 108.156 l +336.316 108.09 l +336.526 108.053 l +336.735 107.914 l +337.365 107.49 l +337.574 107.511 l +337.784 107.563 l +337.994 107.621 l +338.204 107.621 l +339.043 107.263 l +339.253 107.248 l +339.462 106.984 l +339.672 106.911 l +340.511 107.343 l +340.721 107.577 l +340.931 107.833 l +341.141 107.863 l +341.77 107.98 l +341.98 107.731 l +342.189 107.746 l +342.399 107.621 l +342.609 107.497 l +343.448 107.307 l +343.658 105.243 l +343.868 105.104 l +344.077 104.65 l +344.707 104.357 l +344.917 104.313 l +345.126 104.262 l +345.336 104.459 l +345.546 104.584 l +346.175 104.569 l +346.385 104.298 l +346.595 104.503 l +346.805 104.255 l +347.014 103.998 l +347.644 103.903 l +347.853 103.947 l +348.063 103.947 l +348.273 104.181 l +348.483 104.386 l +349.112 104.276 l +349.322 104.445 l +349.532 104.43 l +349.741 104.43 l +349.951 103.903 l +350.79 103.911 l +351 103.581 l +351.21 103.676 l +351.42 103.728 l +352.049 103.845 l +352.259 103.896 l +352.468 104.042 l +352.678 103.823 l +352.888 103.698 l +353.517 103.684 l +353.727 103.515 l +353.937 103.479 l +354.147 103.296 l +354.356 103.369 l +354.986 103.281 l +355.195 103.303 l +355.405 103.42 l +355.615 103.223 l +355.825 103.149 l +356.454 103.201 l +356.664 103.318 l +356.874 103.457 l +357.083 103.259 l +357.293 103.186 l +357.923 103.296 l +358.132 103.179 l +358.342 103.347 l +358.552 103.259 l +358.762 103.091 l +359.391 103.01 l +359.601 102.974 l +359.811 103.105 l +360.02 103.032 l +360.23 102.937 l +360.859 103.018 l +361.069 102.879 l +361.279 102.849 l +361.489 103.084 l +362.328 102.901 l +362.538 103.04 l +362.747 103.164 l +362.957 103.084 l +363.167 102.805 l +363.796 102.703 l +364.006 102.871 l +364.216 103.113 l +364.426 103.53 l +364.635 103.457 l +365.265 103.113 l +365.474 103.186 l +365.684 102.944 l +365.894 103.076 l +366.104 103.193 l +366.733 103.625 l +366.943 103.471 l +367.153 103.245 l +367.362 103.091 l +367.572 102.864 l +368.202 103.062 l +368.411 102.879 l +368.621 102.593 l +368.831 102.586 l +369.041 102.374 l +369.67 102.125 l +369.88 102.081 l +370.089 102.044 l +370.299 102.154 l +370.509 102.278 l +371.348 101.986 l +371.558 102.132 l +371.768 102.147 l +371.977 102.286 l +372.607 102.103 l +372.817 101.971 l +373.026 101.686 l +373.236 101.488 l +373.446 101.517 l +374.075 101.305 l +374.285 101.495 l +374.495 101.927 l +374.705 102.205 l +374.914 102.337 l +375.544 102.293 l +375.753 102.227 l +375.963 102.403 l +376.173 102.3 l +376.383 102.117 l +377.012 102.322 l +377.222 102.154 l +377.432 102.593 l +377.641 103.062 l +377.851 102.835 l +378.48 103.091 l +378.9 102.652 l +379.11 102.725 l +379.32 102.52 l +379.949 102.249 l +380.159 102.6 l +380.368 102.037 l +380.578 101.92 l +380.788 102.037 l +381.417 102.008 l +381.627 102.271 l +381.837 102.469 l +382.047 101.481 l +382.256 101.51 l +382.886 101.751 l +383.095 101.788 l +383.305 101.766 l +383.515 101.744 l +383.725 102.249 l +384.354 102.117 l +384.564 101.876 l +384.774 101.825 l +384.983 101.715 l +385.193 101.825 l +385.823 101.708 l +386.032 101.737 l +386.242 101.766 l +386.452 102.015 l +386.662 101.773 l +387.291 102.103 l +387.501 102.286 l +387.711 102.63 l +387.92 102.593 l +388.13 102.483 l +388.759 102.374 l +388.969 102.439 l +389.179 102.469 l +389.389 102.593 l +389.598 102.842 l +390.228 103.186 l +390.438 103.398 l +390.647 103.515 l +390.857 103.318 l +391.067 103.545 l +391.906 103.618 l +392.116 103.135 l +392.326 103.069 l +392.535 103.23 l +393.165 103.201 l +393.374 103.449 l +393.584 103.508 l +393.794 103.471 l +394.004 103.274 l +394.633 103.376 l +394.843 103.215 l +395.053 103.259 l +395.262 103.047 l +395.472 102.959 l +396.102 103.208 l +396.311 103.596 l +396.521 103.911 l +396.731 104.181 l +396.941 104.035 l +397.57 103.947 l +397.78 104.035 l +397.989 104.218 l +398.199 104.189 l +398.409 104.079 l +399.038 104.072 l +399.248 104.269 l +399.458 104.269 l +399.668 104.694 l +399.877 104.774 l +400.507 104.781 l +400.717 104.276 l +400.926 104.423 l +401.136 104.364 l +401.346 104.584 l +401.975 104.672 l +402.185 104.789 l +402.395 104.862 l +402.605 104.899 l +402.814 104.416 l +403.444 104.533 l +403.653 104.591 l +403.863 104.357 l +404.073 104.115 l +404.283 104.064 l +404.912 104.291 l +405.122 104.276 l +405.332 104.211 l +405.541 103.998 l +405.751 104.115 l +406.38 104.416 l +406.59 105.052 l +406.8 105.367 l +407.01 105.374 l +407.22 105.213 l +407.849 105.33 l +408.059 104.833 l +408.268 104.943 l +408.688 104.847 l +409.317 104.43 l +409.527 104.401 l +409.737 104.591 l +409.947 104.708 l +410.156 104.372 l +410.786 104.577 l +410.995 104.503 l +411.205 104.35 l +411.415 104.167 l +411.625 104.189 l +412.254 104.203 l +412.464 104.225 l +412.674 104.203 l +412.883 104.255 l +413.093 104.386 l +413.723 104.306 l +413.932 104.174 l +414.142 104.13 l +414.352 103.962 l +414.562 103.757 l +415.401 103.808 l +415.611 103.984 l +415.82 103.998 l +416.03 103.881 l +417.079 103.947 l +417.289 104.54 l +417.498 104.489 l +418.128 104.423 l +418.338 104.438 l +418.547 104.796 l +418.757 105.082 l +418.967 105.235 l +419.806 105.352 l +420.016 104.445 l +420.226 104.167 l +420.435 104.291 l +421.065 104.269 l +421.274 104.094 l +421.484 104.306 l +421.694 104.13 l +421.904 104.079 l +422.533 104.342 l +422.743 104.372 l +422.953 104.386 l +423.162 104.496 l +423.372 104.584 l +424.002 104.701 l +424.211 104.723 l +424.421 104.869 l +424.631 104.76 l +424.841 104.518 l +425.47 104.357 l +425.68 104.408 l +425.889 104.599 l +426.099 104.723 l +426.309 104.664 l +427.148 104.628 l +427.358 104.416 l +427.568 104.474 l +427.777 104.328 l +428.407 104.394 l +428.617 103.793 l +428.826 103.676 l +429.036 103.479 l +429.246 103.208 l +429.875 103.127 l +430.085 103.34 l +430.295 103.135 l +430.505 103.215 l +430.714 103.12 l +431.344 103.398 l +431.553 103.135 l +431.763 103.215 l +431.973 103.149 l +432.183 103.157 l +432.812 103.127 l +433.022 103.04 l +433.232 103.296 l +433.441 103.164 l +433.651 103.245 l +434.28 103.259 l +434.49 103.091 l +434.7 102.952 l +434.91 103.113 l +435.12 103.142 l +435.749 103.142 l +435.959 103.274 l +436.168 103.325 l +436.378 103.471 l +437.217 103.845 l +437.427 104.269 l +437.637 104.115 l +437.847 104.137 l +438.056 104.108 l +438.686 104.276 l +438.895 104.481 l +439.105 104.752 l +439.315 105.089 l +439.525 105.338 l +440.154 105.162 l +440.364 105.184 l +440.574 105.411 l +440.783 105.287 l +440.993 105.133 l +441.623 104.862 l +441.832 105.082 l +442.042 105.177 l +442.252 105.118 l +442.462 105.235 l +443.091 105.279 l +443.301 105.418 l +443.511 105.652 l +443.72 105.462 l +443.93 105.513 l +444.559 105.396 l +444.769 105.316 l +444.979 105.44 l +445.189 105.477 l +445.398 105.813 l +446.028 105.762 l +446.238 106.026 l +446.447 105.792 l +446.657 105.287 l +446.867 105.426 l +447.706 105.528 l +447.916 105.367 l +448.126 105.44 l +448.335 105.572 l +448.965 105.426 l +449.174 105.279 l +449.384 104.935 l +449.594 104.803 l +449.804 105.184 l +450.433 105.257 l +450.643 105.455 l +450.853 105.792 l +451.062 106.201 l +451.272 106.941 l +451.902 106.889 l +452.111 106.838 l +452.321 106.721 l +452.531 106.977 l +452.741 106.545 l +453.37 106.384 l +453.58 106.311 l +453.789 106.611 l +453.999 106.706 l +454.209 106.575 l +454.838 106.963 l +455.048 107.197 l +455.468 107.204 l +455.677 107.263 l +456.307 107.46 l +456.517 107.468 l +456.726 107.182 l +456.936 108.221 l +457.146 108.199 l +457.775 108.185 l +457.985 108.463 l +458.195 107.533 l +458.405 107.68 l +458.614 107.167 l +459.244 107.292 l +459.453 107.153 l +459.663 107.131 l +459.873 106.765 l +460.083 106.428 l +460.712 106.655 l +460.922 106.487 l +461.132 106.619 l +461.341 106.984 l +461.551 106.78 l +462.18 106.941 l +462.39 106.941 l +462.6 107.343 l +462.81 106.787 l +463.02 106.831 l +463.649 106.86 l +463.859 106.699 l +464.068 106.275 l +464.278 106.187 l +464.488 106.626 l +465.117 106.926 l +465.327 106.765 l +465.537 106.955 l +465.747 107.014 l +465.956 107.424 l +466.586 107.175 l +466.795 106.816 l +467.005 107.643 l +467.215 107.782 l +467.425 108.126 l +468.264 108.441 l +468.474 108.302 l +468.683 108.419 l +468.893 107.921 l +469.523 107.833 l +469.732 108.06 l +469.942 107.914 l +470.152 107.833 l +470.362 107.526 l +470.991 107.468 l +471.201 107.877 l +471.411 108.075 l +471.62 108.17 l +471.83 108.214 l +472.459 108.295 l +472.669 108.229 l +472.879 108.243 l +473.089 108.134 l +473.298 108.207 l +473.928 108.58 l +474.138 108.587 l +474.347 108.17 l +474.557 108.016 l +474.767 107.973 l +475.396 108.06 l +475.606 108.192 l +475.816 108.221 l +476.026 107.892 l +476.235 107.98 l +476.865 108.126 l +477.074 107.929 l +477.284 108.836 l +477.494 109.019 l +477.704 108.529 l +stroke +grestore +0.000 0.500 0.000 setrgbcolor +gsave +446.4 345.6 72 43.2 clipbox +110.389 100.8 m +110.598 100.815 l +111.228 101.026 l +111.438 101.247 l +111.647 100.91 l +111.857 101.247 l +112.067 101.272 l +112.696 101.372 l +112.906 101.497 l +113.116 101.347 l +113.326 101.151 l +113.535 100.313 l +114.374 100.288 l +114.584 100.218 l +114.794 100.489 l +115.004 99.9721 l +115.633 99.8266 l +115.843 99.7514 l +116.053 99.9822 l +116.262 99.6259 l +116.472 99.4553 l +117.102 99.6911 l +117.311 99.4252 l +117.521 99.35 l +117.731 99.4503 l +117.941 99.2697 l +118.57 99.4403 l +118.78 99.2396 l +118.989 99.2396 l +119.199 99.355 l +119.409 99.636 l +120.248 99.9872 l +120.458 99.8367 l +120.668 99.6661 l +120.877 99.8768 l +121.507 99.636 l +121.717 99.6861 l +121.926 99.4403 l +122.136 99.4252 l +122.346 99.4754 l +122.975 99.4102 l +123.185 99.2045 l +123.395 99.365 l +123.605 99.2948 l +123.814 99.4152 l +124.444 99.1543 l +124.653 99.0891 l +124.863 99.3449 l +125.073 99.8969 l +125.283 99.9771 l +125.912 100.439 l +126.122 100.484 l +126.332 100.604 l +126.541 100.574 l +126.751 100.715 l +127.38 100.163 l +127.59 100.248 l +127.8 100.143 l +128.01 100.052 l +128.22 99.8969 l +128.849 99.6962 l +129.059 99.7564 l +129.268 100.348 l +129.478 100.348 l +129.688 100.077 l +130.317 100.108 l +130.527 100.288 l +130.737 99.8517 l +130.947 99.8617 l +131.156 99.6911 l +131.786 99.932 l +131.995 99.8668 l +132.205 100.002 l +132.415 100.253 l +133.254 100.128 l +133.464 100.363 l +133.674 100.348 l +133.883 100.248 l +134.093 100.133 l +134.723 100.353 l +134.932 100.379 l +135.142 100.283 l +135.352 100.348 l +135.562 100.509 l +136.191 100.409 l +136.401 100.624 l +136.611 100.464 l +136.82 100.353 l +137.03 100.619 l +137.659 100.554 l +137.869 100.464 l +138.079 100.303 l +138.289 100.379 l +138.498 100.283 l +139.128 99.932 l +139.338 99.8768 l +139.547 99.6209 l +139.757 99.6761 l +139.967 99.7012 l +140.806 99.947 l +141.016 99.7815 l +141.226 99.7764 l +141.435 99.8668 l +142.065 99.8818 l +142.274 99.9872 l +142.484 99.9822 l +142.694 99.646 l +142.904 99.4654 l +143.533 99.5005 l +143.743 99.8969 l +143.953 99.9872 l +144.162 100.032 l +144.372 99.8868 l +145.002 100.203 l +145.211 100.449 l +145.421 100.499 l +145.631 100.499 l +145.841 100.609 l +146.47 100.374 l +146.68 100.338 l +146.889 100.148 l +147.099 100.358 l +147.309 100.308 l +147.938 100.313 l +148.148 100.529 l +148.358 100.845 l +148.568 100.685 l +149.407 101.076 l +149.617 101.196 l +149.826 101.101 l +150.036 100.86 l +150.246 101.031 l +150.875 101.071 l +151.085 101.016 l +151.295 101.121 l +151.505 100.765 l +151.714 100.85 l +152.344 100.484 l +152.553 100.629 l +152.763 100.66 l +152.973 100.469 l +153.183 100.85 l +153.812 100.73 l +154.022 100.67 l +154.232 100.564 l +154.441 100.644 l +154.651 100.539 l +155.28 100.544 l +155.49 100.318 l +155.7 100.318 l +155.91 100.343 l +156.12 100.288 l +156.749 100.298 l +156.959 100.348 l +157.168 100.293 l +157.378 100.308 l +157.588 100.268 l +158.217 100.338 l +158.427 100.735 l +158.637 100.66 l +158.847 100.569 l +159.056 100.559 l +159.686 100.685 l +159.895 100.715 l +160.105 100.649 l +160.315 100.685 l +160.525 100.69 l +161.364 101.011 l +161.574 101.457 l +161.783 101.512 l +161.993 101.492 l +162.623 101.688 l +162.832 101.487 l +163.042 101.136 l +163.252 101.257 l +163.462 101.472 l +164.091 101.482 l +164.301 101.713 l +164.511 101.543 l +164.72 101.974 l +164.93 102.17 l +165.559 101.788 l +165.769 102.014 l +165.979 101.528 l +166.189 101.432 l +166.398 101.407 l +167.028 101.683 l +167.238 101.242 l +167.447 101.553 l +167.657 101.543 l +167.867 101.793 l +168.496 101.839 l +168.706 101.819 l +168.916 101.678 l +169.126 101.733 l +169.335 101.718 l +169.965 101.663 l +170.174 101.618 l +170.384 101.859 l +170.594 101.929 l +170.804 101.798 l +171.433 101.979 l +171.643 101.979 l +171.853 101.778 l +172.062 101.788 l +172.272 100.795 l +172.902 100.925 l +173.111 101.051 l +173.321 100.85 l +173.531 100.579 l +173.741 100.589 l +174.37 100.825 l +174.58 100.559 l +174.789 100.574 l +174.999 100.629 l +175.209 100.574 l +175.838 100.529 l +176.048 100.444 l +176.258 100.519 l +176.468 100.394 l +176.677 100.313 l +177.307 100.163 l +177.517 100.163 l +177.726 100.248 l +177.936 100.143 l +178.146 100.143 l +178.775 100.414 l +178.985 100.268 l +179.195 100.293 l +179.614 100.404 l +180.244 100.459 l +180.453 100.384 l +180.663 100.389 l +180.873 100.614 l +181.083 100.519 l +181.712 100.634 l +181.922 100.695 l +182.132 100.785 l +182.341 100.795 l +182.551 100.81 l +183.18 100.85 l +183.39 100.991 l +183.6 100.981 l +183.81 101.136 l +184.02 101.116 l +184.649 101.041 l +184.859 101.026 l +185.068 100.981 l +185.488 101.051 l +186.117 101.161 l +186.327 101.186 l +186.537 101.121 l +186.956 101.156 l +187.586 101.457 l +187.795 101.497 l +188.005 101.487 l +188.215 101.462 l +188.425 101.247 l +189.054 101.211 l +189.264 101.146 l +189.474 101.267 l +189.683 101.196 l +189.893 101.312 l +190.732 101.437 l +190.942 101.523 l +191.152 101.397 l +191.362 101.603 l +191.991 101.743 l +192.201 101.502 l +192.411 101.272 l +192.62 101.357 l +192.83 101.242 l +193.459 101.136 l +193.669 101.086 l +193.879 100.966 l +194.089 100.946 l +194.298 100.996 l +194.928 100.92 l +195.138 100.971 l +195.347 101.026 l +195.557 100.94 l +195.767 100.785 l +196.606 100.961 l +196.816 100.865 l +197.026 100.73 l +197.235 100.775 l +197.865 100.795 l +198.074 100.91 l +198.284 100.835 l +198.494 100.745 l +198.704 100.76 l +199.333 100.835 l +199.543 100.7 l +199.753 100.69 l +199.962 100.69 l +200.172 100.68 l +200.802 100.454 l +201.011 100.409 l +201.221 100.258 l +201.431 100.138 l +201.641 100.263 l +202.27 100.168 l +202.48 100.173 l +202.689 100.153 l +202.899 100.047 l +203.109 99.937 l +203.738 99.8818 l +203.948 99.7313 l +204.158 99.8417 l +204.368 100.178 l +204.577 100.108 l +205.207 100.233 l +205.417 100.183 l +205.626 100.067 l +205.836 100.133 l +206.046 100.464 l +206.675 100.509 l +206.885 100.444 l +207.095 100.353 l +207.305 100.303 l +208.144 100.363 l +208.353 100.293 l +208.563 100.318 l +208.773 100.193 l +208.983 100.168 l +209.612 100.328 l +209.822 100.238 l +210.032 100.293 l +210.241 100.509 l +210.451 101.196 l +211.08 101.066 l +211.29 101.056 l +211.5 100.77 l +211.71 100.74 l +211.92 100.584 l +212.549 100.68 l +212.759 100.675 l +212.968 100.66 l +213.178 100.579 l +213.388 100.434 l +214.017 100.499 l +214.227 100.504 l +214.437 100.504 l +214.647 100.574 l +214.856 100.469 l +215.486 100.328 l +215.695 100.454 l +215.905 100.363 l +216.115 100.414 l +216.325 100.484 l +216.954 100.424 l +217.164 100.574 l +217.374 100.589 l +217.583 100.614 l +217.793 100.629 l +218.632 100.579 l +218.842 100.584 l +219.052 100.484 l +219.262 100.509 l +219.891 100.715 l +220.101 100.79 l +220.311 100.735 l +220.52 100.865 l +221.359 100.92 l +221.569 101.141 l +221.779 101.101 l +221.989 101.297 l +222.198 101.548 l +222.828 101.548 l +223.038 101.523 l +223.247 101.523 l +223.457 101.563 l +223.667 101.643 l +224.296 101.517 l +224.506 101.613 l +224.716 101.638 l +224.926 101.668 l +225.135 101.643 l +225.974 101.402 l +226.184 101.437 l +226.394 101.242 l +226.604 101.337 l +227.233 101.347 l +227.443 101.221 l +227.653 101.452 l +227.862 101.337 l +228.072 101.171 l +228.702 101.372 l +228.911 101.533 l +229.121 101.768 l +229.331 101.829 l +229.541 101.407 l +230.17 101.683 l +230.38 101.588 l +230.589 101.648 l +230.799 101.603 l +231.009 101.608 l +231.638 101.618 l +231.848 101.427 l +232.058 101.422 l +232.268 101.191 l +232.477 101.021 l +233.107 101.041 l +233.317 101.272 l +233.526 101.141 l +233.736 100.91 l +233.946 100.971 l +234.575 101.001 l +234.785 100.986 l +234.995 101.161 l +235.205 101.016 l +235.414 101.051 l +236.044 101.101 l +236.253 101.101 l +236.463 101.237 l +236.673 101.186 l +236.883 101.196 l +237.512 101.126 l +237.722 101.126 l +237.932 101.166 l +238.141 101.267 l +238.351 101.046 l +239.19 101.151 l +239.4 101.111 l +239.61 101.116 l +239.82 101.211 l +240.449 101.106 l +240.659 101.186 l +240.868 101.081 l +241.078 101.111 l +241.288 101.216 l +241.917 101.216 l +242.127 101.111 l +242.337 101.051 l +242.547 101.151 l +242.756 101.121 l +243.386 101.081 l +243.595 101.116 l +243.805 101.247 l +244.015 101.277 l +244.225 101.538 l +244.854 101.482 l +245.064 101.598 l +245.274 101.663 l +245.483 101.502 l +245.693 101.427 l +246.323 101.457 l +246.532 101.442 l +246.742 101.442 l +246.952 101.342 l +247.162 101.427 l +247.791 101.608 l +248.001 101.507 l +248.211 101.733 l +248.42 101.673 l +248.63 101.317 l +249.259 101.272 l +249.469 101.387 l +249.679 101.497 l +249.889 101.437 l +250.098 101.417 l +250.728 101.467 l +250.938 101.533 l +251.147 101.633 l +251.357 101.864 l +251.567 101.999 l +252.196 101.984 l +252.406 102.2 l +252.616 102.18 l +252.826 102.29 l +253.035 102.285 l +253.665 102.526 l +253.874 102.396 l +254.084 102.421 l +254.294 102.37 l +254.504 102.27 l +255.133 102.17 l +255.343 102.11 l +255.553 102.165 l +255.972 102.145 l +256.602 102.23 l +256.811 102.245 l +257.021 102.461 l +257.231 102.38 l +257.441 102.451 l +258.07 102.501 l +258.28 102.37 l +258.489 102.511 l +258.699 102.451 l +258.909 102.375 l +259.538 102.461 l +259.748 102.451 l +259.958 102.391 l +260.168 102.416 l +260.377 102.32 l +261.007 102.315 l +261.217 102.37 l +261.426 102.325 l +261.636 102.345 l +262.475 102.265 l +262.685 102.315 l +262.895 102.29 l +263.105 102.225 l +263.314 102.205 l +263.944 102.215 l +264.153 102.26 l +264.363 102.235 l +264.573 102.22 l +264.783 102.18 l +265.412 102.24 l +265.622 102.21 l +265.832 102.235 l +266.041 101.984 l +266.251 101.914 l +267.09 102.009 l +267.3 101.844 l +267.51 101.788 l +267.72 101.688 l +268.349 101.698 l +268.559 101.864 l +268.768 101.859 l +268.978 101.909 l +269.188 101.944 l +269.817 101.989 l +270.027 102.044 l +270.237 102.079 l +270.447 101.944 l +270.656 102.009 l +271.286 101.934 l +271.495 101.969 l +271.705 101.889 l +271.915 101.884 l +272.125 101.839 l +272.754 101.859 l +272.964 101.859 l +273.174 101.793 l +273.383 101.723 l +273.593 101.643 l +274.432 101.523 l +274.642 101.507 l +274.852 101.588 l +275.062 101.533 l +275.691 101.487 l +275.901 101.543 l +276.111 101.538 l +276.32 101.492 l +276.53 101.492 l +277.159 101.638 l +277.369 101.603 l +277.579 101.558 l +277.789 101.618 l +277.998 101.452 l +278.628 101.462 l +278.838 101.367 l +279.047 101.231 l +279.257 101.186 l +279.467 101.076 l +280.096 101.021 l +280.306 100.92 l +280.516 101.011 l +280.726 101.061 l +281.565 101.021 l +281.774 100.885 l +281.984 101.001 l +282.194 101.006 l +282.404 100.981 l +283.033 101.036 l +283.243 101.151 l +283.453 101.247 l +283.662 101.457 l +283.872 101.382 l +284.502 101.392 l +284.711 101.563 l +284.921 101.427 l +285.131 101.332 l +285.341 101.146 l +285.97 101.242 l +286.18 101.231 l +286.389 101.081 l +286.599 101.543 l +286.809 101.397 l +287.438 101.402 l +287.648 101.292 l +287.858 101.402 l +288.068 101.141 l +288.277 101.553 l +288.907 101.523 l +289.117 101.583 l +289.326 101.512 l +289.536 101.523 l +289.746 101.517 l +290.375 101.462 l +290.585 101.362 l +290.795 101.367 l +291.005 101.407 l +291.214 101.553 l +291.844 101.688 l +292.053 101.673 l +292.263 101.788 l +292.473 101.894 l +292.683 101.809 l +293.312 101.859 l +293.522 101.814 l +293.732 101.793 l +293.941 101.884 l +294.151 101.969 l +294.99 101.839 l +295.2 101.844 l +295.41 101.834 l +295.62 101.658 l +296.249 101.628 l +296.459 101.698 l +296.668 101.643 l +296.878 101.698 l +297.088 101.658 l +297.717 101.598 l +297.927 101.623 l +298.137 101.573 l +298.347 101.467 l +298.556 101.467 l +299.186 101.502 l +299.395 101.523 l +299.605 101.482 l +299.815 101.598 l +300.025 101.467 l +300.654 101.472 l +300.864 101.482 l +301.074 101.492 l +301.283 101.372 l +301.493 101.307 l +302.332 101.437 l +302.542 101.302 l +302.752 101.277 l +302.962 101.492 l +303.591 101.588 l +303.801 101.743 l +304.011 101.768 l +304.22 101.919 l +304.43 101.834 l +305.059 101.713 l +305.269 102.014 l +305.479 102.024 l +305.689 102.15 l +305.898 101.778 l +306.528 101.783 l +306.738 101.708 l +306.947 101.798 l +307.157 101.814 l +307.367 101.743 l +307.996 101.894 l +308.206 102.33 l +308.416 102.541 l +308.626 102.576 l +308.835 102.792 l +309.465 102.486 l +309.674 102.591 l +309.884 102.396 l +310.094 102.551 l +310.304 102.446 l +310.933 102.521 l +311.143 102.335 l +311.353 102.436 l +311.562 102.37 l +311.772 102.325 l +312.402 102.416 l +312.611 102.396 l +312.821 102.365 l +313.031 102.476 l +313.241 102.446 l +313.87 102.531 l +314.08 102.546 l +314.289 102.646 l +314.499 102.556 l +314.709 102.471 l +315.548 102.461 l +315.758 102.386 l +315.968 102.27 l +316.177 102.255 l +316.807 102.27 l +317.017 102.205 l +317.226 102.125 l +317.436 102.105 l +317.646 102.004 l +318.275 101.974 l +318.485 101.894 l +318.695 101.723 l +318.905 101.648 l +319.114 101.613 l +319.744 101.613 l +319.953 101.648 l +320.163 101.809 l +320.373 101.944 l +320.583 101.839 l +321.212 101.728 l +321.422 101.472 l +321.632 101.322 l +321.841 101.352 l +322.051 101.282 l +322.68 101.221 l +322.89 101.196 l +323.1 101.141 l +323.31 101.282 l +323.52 101.322 l +324.149 101.252 l +324.359 101.272 l +324.568 101.528 l +324.778 101.382 l +324.988 101.377 l +325.617 101.533 l +325.827 101.497 l +326.037 101.538 l +326.247 101.412 l +326.456 101.743 l +327.086 101.824 l +327.295 101.954 l +327.505 102.195 l +327.715 102.185 l +327.925 102.295 l +328.554 102.466 l +328.764 102.486 l +328.974 102.441 l +329.183 102.506 l +329.393 102.596 l +330.023 102.641 l +330.232 102.742 l +330.442 102.862 l +330.652 102.973 l +330.862 103.023 l +331.491 103.068 l +331.701 102.942 l +331.911 102.947 l +332.33 102.872 l +332.959 102.867 l +333.169 102.832 l +333.379 102.832 l +333.589 102.932 l +333.798 102.993 l +334.428 102.912 l +334.638 102.837 l +334.847 102.867 l +335.057 102.837 l +335.267 102.847 l +335.896 102.717 l +336.106 102.561 l +336.316 102.541 l +336.526 102.461 l +336.735 102.451 l +337.365 102.416 l +337.574 102.431 l +337.784 102.365 l +337.994 102.295 l +338.204 102.32 l +339.043 102.235 l +339.253 102.2 l +339.462 102.14 l +339.672 102.084 l +340.511 102.421 l +340.721 102.486 l +340.931 102.496 l +341.141 102.456 l +341.77 102.431 l +341.98 102.501 l +342.189 102.641 l +342.399 102.566 l +342.609 102.591 l +343.448 102.496 l +343.658 102.416 l +343.868 102.506 l +344.077 102.21 l +344.707 102.18 l +344.917 102.145 l +345.126 102.205 l +345.336 102.255 l +345.546 102.887 l +346.175 102.988 l +346.385 103.063 l +346.595 103.008 l +346.805 102.832 l +347.014 102.762 l +347.644 102.581 l +347.853 102.471 l +348.063 102.456 l +348.273 102.33 l +348.483 102.345 l +349.112 102.2 l +349.322 102.325 l +349.532 102.486 l +349.741 102.451 l +349.951 102.396 l +350.79 102.315 l +351 102.406 l +351.21 102.375 l +351.42 102.36 l +352.049 102.566 l +352.259 102.481 l +352.468 102.611 l +352.678 102.526 l +352.888 102.511 l +353.517 102.501 l +353.727 102.571 l +353.937 102.666 l +354.147 102.541 l +354.356 102.626 l +354.986 102.596 l +355.195 102.656 l +355.405 102.722 l +355.615 102.677 l +355.825 102.787 l +356.454 102.983 l +356.664 102.907 l +356.874 102.616 l +357.083 102.471 l +357.293 102.546 l +357.923 102.546 l +358.132 102.496 l +358.342 102.551 l +358.552 102.656 l +358.762 102.646 l +359.391 102.817 l +359.601 102.857 l +359.811 102.907 l +360.02 102.817 l +360.23 102.666 l +360.859 102.687 l +361.069 102.606 l +361.279 102.641 l +361.489 102.576 l +362.328 102.466 l +362.538 102.651 l +362.747 102.556 l +362.957 102.556 l +363.167 102.616 l +363.796 102.596 l +364.006 102.596 l +364.216 102.591 l +364.426 102.666 l +364.635 101.141 l +365.265 101.211 l +365.474 101.076 l +365.684 100.66 l +365.894 100.795 l +366.104 100.971 l +366.733 100.935 l +366.943 100.885 l +367.153 100.956 l +367.362 100.685 l +367.572 100.66 l +368.202 100.695 l +368.411 100.629 l +368.621 100.489 l +368.831 100.539 l +369.041 100.404 l +369.67 100.564 l +369.88 100.519 l +370.089 100.87 l +370.299 100.986 l +370.509 100.976 l +371.348 100.695 l +371.558 100.449 l +371.768 100.534 l +371.977 100.504 l +372.607 100.374 l +372.817 100.193 l +373.026 100.148 l +373.236 100.183 l +373.446 100.088 l +374.075 99.9872 l +374.285 99.8868 l +374.495 100.072 l +374.705 100.163 l +374.914 100.178 l +375.544 100.399 l +375.753 100.404 l +375.963 100.66 l +376.173 100.564 l +376.383 100.374 l +377.012 100.534 l +377.222 100.554 l +377.432 100.7 l +377.641 100.855 l +377.851 100.77 l +378.48 100.966 l +378.9 100.795 l +379.11 100.86 l +379.32 100.77 l +379.949 100.87 l +380.159 100.67 l +380.368 100.444 l +380.578 100.258 l +380.788 100.273 l +381.417 100.363 l +381.627 100.494 l +381.837 100.82 l +382.047 100.549 l +382.256 101.051 l +382.886 101.116 l +383.095 101.221 l +383.305 101.297 l +383.515 101.051 l +383.725 101.237 l +384.354 101.146 l +384.564 101.111 l +384.774 101.262 l +384.983 101.221 l +385.193 101.257 l +385.823 101.221 l +386.032 101.282 l +386.242 101.332 l +386.452 101.342 l +386.662 101.327 l +387.291 101.377 l +387.501 101.467 l +387.711 101.507 l +387.92 101.507 l +388.13 102.044 l +388.759 102.21 l +388.969 101.959 l +389.179 101.984 l +389.389 102.019 l +389.598 102.074 l +390.228 102.125 l +390.438 102.069 l +390.647 102.049 l +390.857 101.999 l +391.067 102.069 l +391.906 101.954 l +392.116 101.954 l +392.326 101.869 l +392.535 101.949 l +393.165 102.105 l +393.374 102.115 l +393.584 102.14 l +393.794 102.31 l +394.004 102.571 l +394.633 102.541 l +394.843 102.576 l +395.053 102.732 l +395.262 102.596 l +395.472 102.476 l +396.102 102.621 l +396.311 102.742 l +396.521 102.862 l +396.731 102.842 l +396.941 102.817 l +397.57 102.822 l +397.78 102.827 l +397.989 103.108 l +398.199 103.098 l +398.409 103.073 l +399.038 103.003 l +399.248 102.988 l +399.458 102.912 l +399.668 103.249 l +399.877 103.324 l +400.507 103.364 l +400.717 103.359 l +400.926 103.394 l +401.136 103.284 l +401.346 103.354 l +401.975 103.364 l +402.185 103.279 l +402.395 103.294 l +402.605 103.314 l +402.814 103.309 l +403.444 103.399 l +403.653 103.489 l +403.863 103.54 l +404.073 103.519 l +404.283 103.499 l +404.912 103.555 l +405.122 103.61 l +405.332 103.625 l +405.541 103.76 l +405.751 103.75 l +406.38 103.805 l +406.59 103.795 l +406.8 103.74 l +407.01 103.916 l +407.22 103.881 l +407.849 104.127 l +408.059 104.142 l +408.268 104.142 l +408.688 104.061 l +409.317 103.921 l +409.527 103.876 l +409.737 103.966 l +409.947 103.861 l +410.156 103.74 l +410.786 103.846 l +410.995 103.745 l +411.205 103.68 l +411.415 103.61 l +411.625 103.881 l +412.254 103.951 l +412.464 103.896 l +412.674 103.956 l +412.883 104.217 l +413.093 104.272 l +413.723 104.127 l +413.932 104.177 l +414.142 104.222 l +414.352 104.172 l +414.562 104.001 l +415.401 104.177 l +415.611 104.192 l +415.82 104.172 l +416.03 104.111 l +417.079 104.111 l +417.289 104.086 l +417.498 104.001 l +418.128 104.147 l +418.338 104.162 l +418.547 104.011 l +418.757 104.528 l +418.967 104.779 l +419.806 104.754 l +420.016 104.724 l +420.226 104.678 l +420.435 104.729 l +421.065 104.538 l +421.274 104.548 l +421.484 104.719 l +421.694 104.403 l +421.904 104.478 l +422.533 104.443 l +422.743 104.418 l +422.953 104.608 l +423.162 104.458 l +423.372 104.272 l +424.002 103.986 l +424.211 103.936 l +424.421 103.866 l +424.631 103.81 l +424.841 103.675 l +425.47 103.655 l +425.68 103.74 l +425.889 103.931 l +426.099 103.961 l +426.309 103.605 l +427.148 103.65 l +427.358 103.906 l +427.568 103.926 l +427.777 103.685 l +428.407 103.765 l +428.617 103.168 l +428.826 103.319 l +429.036 103.279 l +429.246 103.113 l +429.875 103.013 l +430.085 103.148 l +430.295 103.038 l +430.505 102.897 l +430.714 102.882 l +431.344 102.957 l +431.553 102.596 l +431.763 102.937 l +431.973 102.877 l +432.183 102.902 l +432.812 103.148 l +433.022 103.153 l +433.232 103.494 l +433.441 103.369 l +433.651 103.243 l +434.28 103.344 l +434.49 103.093 l +434.7 103.053 l +434.91 103.108 l +435.12 103.168 l +435.749 103.103 l +435.959 103.168 l +436.168 103.484 l +436.378 103.509 l +437.217 103.519 l +437.427 103.434 l +437.637 103.289 l +437.847 103.504 l +438.056 103.54 l +438.686 103.6 l +438.895 103.66 l +439.105 103.534 l +439.315 103.58 l +439.525 103.745 l +440.154 103.625 l +440.364 103.63 l +440.574 103.73 l +440.783 103.78 l +440.993 104.292 l +441.623 104.202 l +441.832 104.433 l +442.042 104.533 l +442.252 104.714 l +442.462 104.508 l +443.091 104.583 l +443.301 104.603 l +443.511 104.618 l +443.72 104.518 l +443.93 104.673 l +444.559 104.714 l +444.769 104.729 l +444.979 104.814 l +445.189 104.769 l +445.398 104.694 l +446.028 104.804 l +446.238 104.623 l +446.447 104.568 l +446.657 104.362 l +446.867 104.518 l +447.706 104.673 l +447.916 104.834 l +448.126 104.623 l +448.335 104.573 l +448.965 104.638 l +449.174 104.568 l +449.384 104.423 l +449.594 104.091 l +449.804 104.307 l +450.433 104.292 l +450.643 104.207 l +450.853 104.473 l +451.062 104.538 l +451.272 104.523 l +451.902 104.533 l +452.111 104.508 l +452.321 104.287 l +452.531 104.387 l +452.741 104.026 l +453.37 104.026 l +453.58 104.041 l +453.789 104.217 l +453.999 104.197 l +454.209 104.016 l +454.838 104.152 l +455.048 104.292 l +455.468 104.277 l +455.677 104.267 l +456.307 104.217 l +456.517 103.946 l +456.726 104.026 l +456.936 104.312 l +457.146 104.192 l +457.775 104.297 l +457.985 104.668 l +458.195 104.739 l +458.405 105.035 l +458.614 104.859 l +459.244 104.874 l +459.453 104.678 l +459.663 104.633 l +459.873 104.272 l +460.083 103.976 l +460.712 103.981 l +460.922 103.775 l +461.132 103.931 l +461.341 104.041 l +461.551 103.76 l +462.18 104.051 l +462.39 104.056 l +462.6 104.282 l +462.81 103.931 l +463.02 103.635 l +463.649 103.595 l +463.859 103.464 l +464.068 103.379 l +464.278 103.233 l +464.488 103.454 l +465.117 103.459 l +465.327 103.364 l +465.537 103.439 l +465.747 103.479 l +465.956 103.735 l +466.586 103.575 l +466.795 103.294 l +467.005 103.625 l +467.215 103.555 l +467.425 103.695 l +468.264 103.735 l +468.474 103.57 l +468.683 103.785 l +468.893 103.55 l +469.523 103.57 l +469.732 103.795 l +469.942 103.795 l +470.152 103.911 l +470.362 103.851 l +470.991 103.695 l +471.201 103.795 l +471.411 103.665 l +471.62 103.54 l +471.83 103.655 l +472.459 103.871 l +472.669 104.111 l +472.879 104.081 l +473.089 104.076 l +473.298 104.061 l +473.928 104.217 l +474.138 104.182 l +474.347 104.056 l +474.557 104.187 l +474.767 104.252 l +475.396 104.252 l +475.606 104.382 l +475.816 104.448 l +476.026 104.287 l +476.235 104.418 l +476.865 104.352 l +477.074 104.493 l +477.284 104.874 l +477.494 104.914 l +477.704 104.418 l +stroke +grestore +1.000 0.000 0.000 setrgbcolor +gsave +446.4 345.6 72 43.2 clipbox +110.389 100.8 m +110.598 101.127 l +111.228 101.677 l +111.438 101.808 l +111.647 101.559 l +111.857 102.004 l +112.067 102.371 l +112.696 102.161 l +112.906 102.175 l +113.116 102.096 l +113.326 101.559 l +113.535 101.311 l +114.374 101.009 l +114.584 101.376 l +114.794 101.769 l +115.004 101.572 l +115.633 101.14 l +115.843 101.468 l +116.053 101.599 l +116.262 101.127 l +116.472 101.193 l +117.102 101.036 l +117.311 100.905 l +117.521 100.931 l +117.731 101.023 l +117.941 100.761 l +118.57 101.009 l +118.78 101.258 l +118.989 101.18 l +119.199 101.088 l +119.409 101.651 l +120.248 102.031 l +120.458 101.965 l +120.668 102.188 l +120.877 102.253 l +121.507 102.161 l +121.717 102.371 l +121.926 102.175 l +122.136 102.423 l +122.346 102.934 l +122.975 102.319 l +123.185 102.292 l +123.395 102.305 l +123.605 102.004 l +123.814... [truncated message content] |
From: <jd...@us...> - 2007-10-26 02:35:25
|
Revision: 4008 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4008&view=rev Author: jdh2358 Date: 2007-10-25 19:35:23 -0700 (Thu, 25 Oct 2007) Log Message: ----------- added workbook Modified Paths: -------------- trunk/py4science/workbook/main.tex Added Paths: ----------- trunk/py4science/workbook/main.pdf Added: trunk/py4science/workbook/main.pdf =================================================================== --- trunk/py4science/workbook/main.pdf (rev 0) +++ trunk/py4science/workbook/main.pdf 2007-10-26 02:35:23 UTC (rev 4008) @@ -0,0 +1,8917 @@ +%PDF-1.4 +5 0 obj +<< /S /GoTo /D (chapter.1) >> +endobj +8 0 obj +(Chapter 1. Introduction) +endobj +9 0 obj +<< /S /GoTo /D (chapter.2) >> +endobj +12 0 obj +(Chapter 2. Simple non-numerical problems) +endobj +13 0 obj +<< /S /GoTo /D (section.2.1) >> +endobj +16 0 obj +(1. Sorting quickly with QuickSort ) +endobj +17 0 obj +<< /S /GoTo /D (section.2.2) >> +endobj +20 0 obj +(2. Dictionaries for counting words) +endobj +21 0 obj +<< /S /GoTo /D (chapter.3) >> +endobj +24 0 obj +(Chapter 3. Working with files, the internet, and numpy arrays) +endobj +25 0 obj +<< /S /GoTo /D (section.3.1) >> +endobj +28 0 obj +(1. Loading and saving ASCII data) +endobj +29 0 obj +<< /S /GoTo /D (section.3.2) >> +endobj +32 0 obj +(2. Working with CSV files) +endobj +33 0 obj +<< /S /GoTo /D (section.3.3) >> +endobj +36 0 obj +(3. Loading and saving binary data) +endobj +37 0 obj +<< /S /GoTo /D (chapter.4) >> +endobj +40 0 obj +(Chapter 4. Elementary Numerics) +endobj +41 0 obj +<< /S /GoTo /D (section.4.1) >> +endobj +44 0 obj +(1. Wallis' slow road to ) +endobj +45 0 obj +<< /S /GoTo /D (section.4.2) >> +endobj +48 0 obj +(2. Trapezoidal rule) +endobj +49 0 obj +<< /S /GoTo /D (section.4.3) >> +endobj +52 0 obj +(3. Newton's method) +endobj +53 0 obj +<< /S /GoTo /D (chapter.5) >> +endobj +56 0 obj +(Chapter 5. Linear algebra) +endobj +57 0 obj +<< /S /GoTo /D (section.5.1) >> +endobj +60 0 obj +(1. Glass Moir\351 Patterns) +endobj +61 0 obj +<< /S /GoTo /D [62 0 R /Fit ] >> +endobj +64 0 obj << +/Length 292 +/Filter /FlateDecode +>> +stream +xڍQ;O\xC30\xDE\xF3+<ڃ\x9F_\x8F\xBC +\xEAT\x89H\x94\xA1\xA4\xA1\x8DJm\xB5\xFCz\xEC\x86VEb\xA8,\xD9:/\xDF\x99\xCAY0\xE0\x95Ҍ\x8C\x81`\x89X\xBB\xAD[e\xEC\xA1\xC2_\x8E\xD5(\x9F\x8BP\xE9\xB0B\xCD\xE4\xB9\xC9MS]M\x8Cch\xC1X\xAFY\xF3δR\xA0\x9D\xAF\x99G\xB5Ɋf\xF9\xC2gâ\xDD\xF5\xED\xE2CH\xE3\x89?\xB5}\x85Q|'\x90\xF7B"\x9F+c\xDBz~\x9B\xB6\xE5\xE6s\xE3J\xBC6SF\xD11\xA9P+:8\xF7q\xB4\x9C}f\x91\xACS<\xD0e |
From: <jd...@us...> - 2007-10-26 17:43:54
|
Revision: 4013 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4013&view=rev Author: jdh2358 Date: 2007-10-26 10:43:50 -0700 (Fri, 26 Oct 2007) Log Message: ----------- added some figs for convolution example Added Paths: ----------- trunk/py4science/workbook/fig/convolve_deltas.eps trunk/py4science/workbook/fig/convolve_deltas.png trunk/py4science/workbook/scripts/ trunk/py4science/workbook/scripts/convolve_deltas.py trunk/py4science/workbook/scripts/convolve_explain.py Added: trunk/py4science/workbook/fig/convolve_deltas.eps =================================================================== --- trunk/py4science/workbook/fig/convolve_deltas.eps (rev 0) +++ trunk/py4science/workbook/fig/convolve_deltas.eps 2007-10-26 17:43:50 UTC (rev 4013) @@ -0,0 +1,780 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Title: convolve_deltas.eps +%%Creator: matplotlib version 0.90.1, http://matplotlib.sourceforge.net/ +%%CreationDate: Fri Oct 26 12:42:28 2007 +%%Orientation: portrait +%%BoundingBox: 18 180 594 612 +%%EndComments +%%BeginProlog +/mpldict 7 dict def +mpldict begin +/m { moveto } bind def +/l { lineto } bind def +/r { rlineto } bind def +/box { +m +1 index 0 r +0 exch r +neg 0 r +closepath +} bind def +/clipbox { +box +clip +newpath +} bind def +/ellipse { +newpath +matrix currentmatrix 7 1 roll +translate +scale +0 0 1 5 3 roll arc +setmatrix +closepath +} bind def +%!PS-Adobe-3.0 Resource-Font +%%Title: Bitstream Vera Sans +%%Copyright: Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. +%%Creator: Converted from TrueType by PPR +25 dict begin +/_d{bind def}bind def +/_m{moveto}_d +/_l{lineto}_d +/_cl{closepath eofill}_d +/_c{curveto}_d +/_sc{7 -1 roll{setcachedevice}{pop pop pop pop pop pop}ifelse}_d +/_e{exec}_d +/FontName /BitstreamVeraSans-Roman def +/PaintType 0 def +/FontMatrix[.001 0 0 .001 0 0]def +/FontBBox[-182 -235 1287 928]def +/FontType 3 def +/Encoding StandardEncoding def +/FontInfo 10 dict dup begin +/FamilyName (Bitstream Vera Sans) def +/FullName (Bitstream Vera Sans) def +/Notice (Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc.) def +/Weight (Roman) def +/Version (Release 1.10) def +/ItalicAngle 0.0 def +/isFixedPitch false def +/UnderlinePosition -213 def +/UnderlineThickness 143 def +end readonly def +/CharStrings 7 dict dup begin +/period{318 0 107 0 210 124 _sc +107 124 _m +210 124 _l +210 0 _l +107 0 _l +107 124 _l +_cl}_d +/zero{636 0 66 -13 570 742 _sc +318 664 _m +267 664 229 639 203 589 _c +177 539 165 464 165 364 _c +165 264 177 189 203 139 _c +229 89 267 64 318 64 _c +369 64 407 89 433 139 _c +458 189 471 264 471 364 _c +471 464 458 539 433 589 _c +407 639 369 664 318 664 _c +318 742 _m +399 742 461 709 505 645 _c +548 580 570 486 570 364 _c +570 241 548 147 505 83 _c +461 19 399 -13 318 -13 _c +236 -13 173 19 130 83 _c +87 147 66 241 66 364 _c +66 486 87 580 130 645 _c +173 709 236 742 318 742 _c +_cl}_d +/one{636 0 110 0 544 729 _sc +124 83 _m +285 83 _l +285 639 _l +110 604 _l +110 694 _l +284 729 _l +383 729 _l +383 83 _l +544 83 _l +544 0 _l +124 0 _l +124 83 _l +_cl}_d +/two{{636 0 73 0 536 742 _sc +192 83 _m +536 83 _l +536 0 _l +73 0 _l +73 83 _l +110 121 161 173 226 239 _c +290 304 331 346 348 365 _c +380 400 402 430 414 455 _c +426 479 433 504 433 528 _c +433 566 419 598 392 622 _c +365 646 330 659 286 659 _c +255 659 222 653 188 643 _c +154 632 117 616 78 594 _c +78 694 _l +118 710 155 722 189 730 _c +223 738 255 742 284 742 _c +359 742 419 723 464 685 _c +509 647 532 597 532 534 _c +532 504 526 475 515 449 _c +504 422 484 390 454 354 _c +446 344 420 317 376 272 _c +332 227 271 164 192 83 _c +_cl}_e}_d +/three{{636 0 76 -13 556 742 _sc +406 393 _m +453 383 490 362 516 330 _c +542 298 556 258 556 212 _c +556 140 531 84 482 45 _c +432 6 362 -13 271 -13 _c +240 -13 208 -10 176 -4 _c +144 1 110 10 76 22 _c +76 117 _l +103 101 133 89 166 81 _c +198 73 232 69 268 69 _c +330 69 377 81 409 105 _c +441 129 458 165 458 212 _c +458 254 443 288 413 312 _c +383 336 341 349 287 349 _c +202 349 _l +202 430 _l +291 430 _l +339 430 376 439 402 459 _c +428 478 441 506 441 543 _c +441 580 427 609 401 629 _c +374 649 336 659 287 659 _c +260 659 231 656 200 650 _c +169 644 135 635 98 623 _c +98 711 _l +135 721 170 729 203 734 _c +235 739 266 742 296 742 _c +}_e{370 742 429 725 473 691 _c +517 657 539 611 539 553 _c +539 513 527 479 504 451 _c +481 423 448 403 406 393 _c +_cl}_e}_d +/four{636 0 49 0 580 729 _sc +378 643 _m +129 254 _l +378 254 _l +378 643 _l +352 729 _m +476 729 _l +476 254 _l +580 254 _l +580 172 _l +476 172 _l +476 0 _l +378 0 _l +378 172 _l +49 172 _l +49 267 _l +352 729 _l +_cl}_d +/five{{636 0 77 -13 549 729 _sc +108 729 _m +495 729 _l +495 646 _l +198 646 _l +198 467 _l +212 472 227 476 241 478 _c +255 480 270 482 284 482 _c +365 482 429 459 477 415 _c +525 370 549 310 549 234 _c +549 155 524 94 475 51 _c +426 8 357 -13 269 -13 _c +238 -13 207 -10 175 -6 _c +143 -1 111 6 77 17 _c +77 116 _l +106 100 136 88 168 80 _c +199 72 232 69 267 69 _c +323 69 368 83 401 113 _c +433 143 450 183 450 234 _c +450 284 433 324 401 354 _c +368 384 323 399 267 399 _c +241 399 214 396 188 390 _c +162 384 135 375 108 363 _c +108 729 _l +_cl}_e}_d +end readonly def + +/BuildGlyph + {exch begin + CharStrings exch + 2 copy known not{pop /.notdef}if + true 3 1 roll get exec + end}_d + +/BuildChar { + 1 index /Encoding get exch get + 1 index /BuildGlyph get exec +}_d + +FontName currentdict end definefont pop +%%EOF +end +%%EndProlog +mpldict begin +18 180 translate +576 432 0 0 clipbox +gsave +1.000 setgray +1.000 setlinewidth +0 setlinejoin +2 setlinecap +[] 0 setdash +0 0 m +0 432 l +576 432 l +576 0 l +closepath +gsave +fill +grestore +stroke +grestore +gsave +0.000 setgray +72 43.2 m +72 388.8 l +518.4 388.8 l +518.4 43.2 l +closepath +gsave +1.000 setgray +fill +grestore +stroke +grestore +gsave +gsave +446.4 345.6 72 43.2 clipbox +69.21 43.2 m +69.21 388.8 l +74.79 388.8 l +74.79 43.2 l +closepath +gsave +0.000 0.000 1.000 setrgbcolor +fill +grestore +stroke +grestore +grestore +gsave +gsave +446.4 345.6 72 43.2 clipbox +91.53 43.2 m +91.53 362.457 l +97.11 362.457 l +97.11 43.2 l +closepath +gsave +0.000 0.000 1.000 setrgbcolor +fill +grestore +stroke +grestore +grestore +gsave +gsave +446.4 345.6 72 43.2 clipbox +113.85 43.2 m +113.85 307.904 l +119.43 307.904 l +119.43 43.2 l +closepath +gsave +0.000 0.000 1.000 setrgbcolor +fill +grestore +stroke +grestore +grestore +gsave +gsave +446.4 345.6 72 43.2 clipbox +136.17 43.2 m +136.17 239.267 l +141.75 239.267 l +141.75 43.2 l +closepath +gsave +0.000 0.000 1.000 setrgbcolor +fill +grestore +stroke +grestore +grestore +gsave +gsave +446.4 345.6 72 43.2 clipbox +158.49 43.2 m +158.49 172.281 l +164.07 172.281 l +164.07 43.2 l +closepath +gsave +0.000 0.000 1.000 setrgbcolor +fill +grestore +stroke +grestore +grestore +gsave +gsave +446.4 345.6 72 43.2 clipbox +180.81 43.2 m +180.81 120.84 l +186.39 120.84 l +186.39 43.2 l +closepath +gsave +0.000 0.000 1.000 setrgbcolor +fill +grestore +stroke +grestore +grestore +gsave +gsave +446.4 345.6 72 43.2 clipbox +203.13 43.2 m +203.13 94.252 l +208.71 94.252 l +208.71 43.2 l +closepath +gsave +0.000 0.000 1.000 setrgbcolor +fill +grestore +stroke +grestore +grestore +gsave +gsave +446.4 345.6 72 43.2 clipbox +225.45 43.2 m +225.45 95.729 l +231.03 95.729 l +231.03 43.2 l +closepath +gsave +0.000 0.000 1.000 setrgbcolor +fill +grestore +stroke +grestore +grestore +gsave +gsave +446.4 345.6 72 43.2 clipbox +247.77 43.2 m +247.77 122.291 l +253.35 122.291 l +253.35 43.2 l +closepath +gsave +0.000 0.000 1.000 setrgbcolor +fill +grestore +stroke +grestore +grestore +gsave +gsave +446.4 345.6 72 43.2 clipbox +270.09 43.2 m +270.09 165.978 l +275.67 165.978 l +275.67 43.2 l +closepath +gsave +0.000 0.000 1.000 setrgbcolor +fill +grestore +stroke +grestore +grestore +gsave +gsave +446.4 345.6 72 43.2 clipbox +292.41 43.2 m +292.41 216 l +297.99 216 l +297.99 43.2 l +closepath +gsave +0.000 0.000 1.000 setrgbcolor +fill +grestore +stroke +grestore +grestore +gsave +gsave +446.4 345.6 72 43.2 clipbox +314.73 43.2 m +314.73 261.261 l +320.31 261.261 l +320.31 43.2 l +closepath +gsave +0.000 0.000 1.000 setrgbcolor +fill +grestore +stroke +grestore +grestore +gsave +gsave +446.4 345.6 72 43.2 clipbox +337.05 43.2 m +337.05 292.723 l +342.63 292.723 l +342.63 43.2 l +closepath +gsave +0.000 0.000 1.000 setrgbcolor +fill +grestore +stroke +grestore +grestore +gsave +gsave +446.4 345.6 72 43.2 clipbox +359.37 43.2 m +359.37 305.099 l +364.95 305.099 l +364.95 43.2 l +closepath +gsave +0.000 0.000 1.000 setrgbcolor +fill +grestore +stroke +grestore +grestore +gsave +gsave +446.4 345.6 72 43.2 clipbox +381.69 43.2 m +381.69 297.61 l +387.27 297.61 l +387.27 43.2 l +closepath +gsave +0.000 0.000 1.000 setrgbcolor +fill +grestore +stroke +grestore +grestore +gsave +gsave +446.4 345.6 72 43.2 clipbox +404.01 43.2 m +404.01 273.718 l +409.59 273.718 l +409.59 43.2 l +closepath +gsave +0.000 0.000 1.000 setrgbcolor +fill +grestore +stroke +grestore +grestore +gsave +gsave +446.4 345.6 72 43.2 clipbox +426.33 43.2 m +426.33 239.993 l +431.91 239.993 l +431.91 43.2 l +closepath +gsave +0.000 0.000 1.000 setrgbcolor +fill +grestore +stroke +grestore +grestore +gsave +gsave +446.4 345.6 72 43.2 clipbox +448.65 43.2 m +448.65 204.446 l +454.23 204.446 l +454.23 43.2 l +closepath +gsave +0.000 0.000 1.000 setrgbcolor +fill +grestore +stroke +grestore +grestore +gsave +gsave +446.4 345.6 72 43.2 clipbox +470.97 43.2 m +470.97 174.705 l +476.55 174.705 l +476.55 43.2 l +closepath +gsave +0.000 0.000 1.000 setrgbcolor +fill +grestore +stroke +grestore +grestore +gsave +gsave +446.4 345.6 72 43.2 clipbox +493.29 43.2 m +493.29 156.455 l +498.87 156.455 l +498.87 43.2 l +closepath +gsave +0.000 0.000 1.000 setrgbcolor +fill +grestore +stroke +grestore +grestore +0.000 0.000 1.000 setrgbcolor +2.000 setlinewidth +gsave +446.4 345.6 72 43.2 clipbox +72 388.8 m +94.32 362.457 l +116.64 307.904 l +138.96 239.267 l +161.28 172.281 l +183.6 120.84 l +205.92 94.252 l +228.24 95.7291 l +250.56 122.291 l +272.88 165.978 l +295.2 216 l +317.52 261.261 l +339.84 292.723 l +362.16 305.099 l +384.48 297.61 l +406.8 273.718 l +429.12 239.993 l +451.44 204.446 l +473.76 174.705 l +496.08 156.455 l +stroke +grestore +0.000 setgray +gsave +446.4 345.6 72 43.2 clipbox +72 43.2 m +518.4 43.2 l +stroke +grestore +/BitstreamVeraSans-Roman findfont +12.000 scalefont +setfont +63.25 30.122 m +0 0.172 rmoveto +(0.0) show +0.500 setlinewidth +0 setlinecap +/o { gsave +newpath +translate +-0.5 0 m +-0.5 4 l +closepath +stroke +grestore } bind def +161.28 43.2 o +/o { gsave +newpath +translate +-0.5 -4 m +-0.5 0 l +closepath +stroke +grestore } bind def +161.28 388.8 o +152.686 30.122 m +0 0.172 rmoveto +(0.1) show +/o { gsave +newpath +translate +-0.5 0 m +-0.5 4 l +closepath +stroke +grestore } bind def +250.56 43.2 o +/o { gsave +newpath +translate +-0.5 -4 m +-0.5 0 l +closepath +stroke +grestore } bind def +250.56 388.8 o +242.013 30.122 m +0 0.172 rmoveto +(0.2) show +/o { gsave +newpath +translate +-0.5 0 m +-0.5 4 l +closepath +stroke +grestore } bind def +339.84 43.2 o +/o { gsave +newpath +translate +-0.5 -4 m +-0.5 0 l +closepath +stroke +grestore } bind def +339.84 388.8 o +331.176 30.122 m +0 0.172 rmoveto +(0.3) show +/o { gsave +newpath +translate +-0.5 0 m +-0.5 4 l +closepath +stroke +grestore } bind def +429.12 43.2 o +/o { gsave +newpath +translate +-0.5 -4 m +-0.5 0 l +closepath +stroke +grestore } bind def +429.12 388.8 o +420.307 30.122 m +0 0.172 rmoveto +(0.4) show +/o { gsave +newpath +translate +-0.5 0 m +-0.5 4 l +closepath +stroke +grestore } bind def +518.4 43.2 o +/o { gsave +newpath +translate +-0.5 -4 m +-0.5 0 l +closepath +stroke +grestore } bind def +518.4 388.8 o +509.775 30.122 m +0 0.172 rmoveto +(0.5) show +50.5 38.661 m +0 0.172 rmoveto +(0.0) show +/o { gsave +newpath +translate +0 0.5 m +4 0.5 l +closepath +stroke +grestore } bind def +72 129.6 o +/o { gsave +newpath +translate +-4 0.5 m +0 0.5 l +closepath +stroke +grestore } bind def +518.4 129.6 o +50.75 125.061 m +0 0.172 rmoveto +(0.5) show +/o { gsave +newpath +translate +0 0.5 m +4 0.5 l +closepath +stroke +grestore } bind def +72 216 o +/o { gsave +newpath +translate +-4 0.5 m +0 0.5 l +closepath +stroke +grestore } bind def +518.4 216 o +51.016 211.461 m +0 0.172 rmoveto +(1.0) show +/o { gsave +newpath +translate +0 0.5 m +4 0.5 l +closepath +stroke +grestore } bind def +72 302.4 o +/o { gsave +newpath +translate +-4 0.5 m +0 0.5 l +closepath +stroke +grestore } bind def +518.4 302.4 o +51.266 297.939 m +0 0.172 rmoveto +(1.5) show +50.578 384.261 m +0 0.172 rmoveto +(2.0) show +1.000 setlinewidth +2 setlinecap +72 43.2 m +518.4 43.2 l +518.4 388.8 l +72 388.8 l +72 43.2 l +stroke + +end +showpage Added: trunk/py4science/workbook/fig/convolve_deltas.png =================================================================== (Binary files differ) Property changes on: trunk/py4science/workbook/fig/convolve_deltas.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/py4science/workbook/scripts/convolve_deltas.py =================================================================== --- trunk/py4science/workbook/scripts/convolve_deltas.py (rev 0) +++ trunk/py4science/workbook/scripts/convolve_deltas.py 2007-10-26 17:43:50 UTC (rev 4013) @@ -0,0 +1,18 @@ +import numpy as npy +from pylab import figure, show + +dt = 0.025 +t = npy.arange(0.0, 0.5, dt) +Nt = len(t) + + +s = npy.exp(-2*t)*npy.cos(2*3*npy.pi*t)+1.0 +fig = figure() +ax = fig.add_subplot(111) +ax.plot(t, s, color='blue', lw=2) +ax.bar(t-dt/8., s, facecolor='blue', width=dt/4.) +ax.axhline(0, color='black', lw=2) +ax.set_xlim(xmin=0) +fig.savefig('convolve_deltas.png', dpi=150) +fig.savefig('convolve_deltas.eps') +show() Added: trunk/py4science/workbook/scripts/convolve_explain.py =================================================================== --- trunk/py4science/workbook/scripts/convolve_explain.py (rev 0) +++ trunk/py4science/workbook/scripts/convolve_explain.py 2007-10-26 17:43:50 UTC (rev 4013) @@ -0,0 +1,48 @@ +import numpy as npy +from pylab import figure, show + +dt = 0.01 +t = npy.arange(0.0, 10.0, dt) +Nt = len(t) + +def impulse_response(t): + 'double exponential response function' + return (npy.exp(-t) - npy.exp(-5*t)) + +i1 = npy.zeros(len(t)) +i2 = npy.zeros(len(t)) +i3 = npy.zeros(len(t)) +r = impulse_response(t) + +ind1, ind2, ind3 = 100, 300, 900 +i1[ind1] = 1 +i2[ind2] = 1.7 +i3[ind3] = 0.6 + +y1 = npy.convolve(i1, r, mode='full')[:Nt] +y2 = npy.convolve(i2, r, mode='full')[:Nt] +y3 = npy.convolve(i3, r, mode='full')[:Nt] + +fig = figure() +ax1 = ax = fig.add_subplot(311) +ax.plot(t, r, 'k', lw=2) +ax.set_ylabel('impulse response') + +ax = fig.add_subplot(312, sharex=ax1) +ax.bar(t[ind1], i1[ind1], facecolor='blue', lw=2, edgecolor='blue', width=3*dt) +ax.bar(t[ind2], i2[ind2], facecolor='green', lw=2, edgecolor='green', width=3*dt) +ax.bar(t[ind3], i3[ind3], facecolor='red', lw=2, edgecolor='red', width=3*dt) +ax.plot(t, y1, color='blue', lw=1, label='input 1') +ax.plot(t, y2, color='green', lw=1, label='input 2') +ax.plot(t, y3, color='red', lw=1, label='input d') +ax.set_ylabel('3 inputs') + + +ax = fig.add_subplot(313, sharex=ax1) +ax.plot(t, y1+y2+y3, color='black', lw=2, label='sum') +ax.set_ylabel('output') +#ax.legend(loc='best') + +fig.savefig('../fig/convolve_inputs.png', dpi=150) +fig.savefig('../fig/convolve_inputs.eps') +show() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jd...@us...> - 2007-10-26 17:56:08
|
Revision: 4015 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4015&view=rev Author: jdh2358 Date: 2007-10-26 10:56:06 -0700 (Fri, 26 Oct 2007) Log Message: ----------- added more convolution figs Modified Paths: -------------- trunk/py4science/workbook/scripts/convolve_explain.py Added Paths: ----------- trunk/py4science/workbook/fig/convolve_explain.eps trunk/py4science/workbook/fig/convolve_explain.png Added: trunk/py4science/workbook/fig/convolve_explain.eps =================================================================== --- trunk/py4science/workbook/fig/convolve_explain.eps (rev 0) +++ trunk/py4science/workbook/fig/convolve_explain.eps 2007-10-26 17:56:06 UTC (rev 4015) @@ -0,0 +1,6355 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Title: ../fig/convolve_explain.eps +%%Creator: matplotlib version 0.90.1, http://matplotlib.sourceforge.net/ +%%CreationDate: Fri Oct 26 12:55:41 2007 +%%Orientation: portrait +%%BoundingBox: 18 180 594 612 +%%EndComments +%%BeginProlog +/mpldict 7 dict def +mpldict begin +/m { moveto } bind def +/l { lineto } bind def +/r { rlineto } bind def +/box { +m +1 index 0 r +0 exch r +neg 0 r +closepath +} bind def +/clipbox { +box +clip +newpath +} bind def +/ellipse { +newpath +matrix currentmatrix 7 1 roll +translate +scale +0 0 1 5 3 roll arc +setmatrix +closepath +} bind def +%!PS-Adobe-3.0 Resource-Font +%%Title: Bitstream Vera Sans +%%Copyright: Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. +%%Creator: Converted from TrueType by PPR +25 dict begin +/_d{bind def}bind def +/_m{moveto}_d +/_l{lineto}_d +/_cl{closepath eofill}_d +/_c{curveto}_d +/_sc{7 -1 roll{setcachedevice}{pop pop pop pop pop pop}ifelse}_d +/_e{exec}_d +/FontName /BitstreamVeraSans-Roman def +/PaintType 0 def +/FontMatrix[.001 0 0 .001 0 0]def +/FontBBox[-182 -235 1287 928]def +/FontType 3 def +/Encoding StandardEncoding def +/FontInfo 10 dict dup begin +/FamilyName (Bitstream Vera Sans) def +/FullName (Bitstream Vera Sans) def +/Notice (Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc.) def +/Weight (Roman) def +/Version (Release 1.10) def +/ItalicAngle 0.0 def +/isFixedPitch false def +/UnderlinePosition -213 def +/UnderlineThickness 143 def +end readonly def +/CharStrings 21 dict dup begin +/space{318 0 0 0 0 0 _sc +}_d +/period{318 0 107 0 210 124 _sc +107 124 _m +210 124 _l +210 0 _l +107 0 _l +107 124 _l +_cl}_d +/zero{636 0 66 -13 570 742 _sc +318 664 _m +267 664 229 639 203 589 _c +177 539 165 464 165 364 _c +165 264 177 189 203 139 _c +229 89 267 64 318 64 _c +369 64 407 89 433 139 _c +458 189 471 264 471 364 _c +471 464 458 539 433 589 _c +407 639 369 664 318 664 _c +318 742 _m +399 742 461 709 505 645 _c +548 580 570 486 570 364 _c +570 241 548 147 505 83 _c +461 19 399 -13 318 -13 _c +236 -13 173 19 130 83 _c +87 147 66 241 66 364 _c +66 486 87 580 130 645 _c +173 709 236 742 318 742 _c +_cl}_d +/one{636 0 110 0 544 729 _sc +124 83 _m +285 83 _l +285 639 _l +110 604 _l +110 694 _l +284 729 _l +383 729 _l +383 83 _l +544 83 _l +544 0 _l +124 0 _l +124 83 _l +_cl}_d +/two{{636 0 73 0 536 742 _sc +192 83 _m +536 83 _l +536 0 _l +73 0 _l +73 83 _l +110 121 161 173 226 239 _c +290 304 331 346 348 365 _c +380 400 402 430 414 455 _c +426 479 433 504 433 528 _c +433 566 419 598 392 622 _c +365 646 330 659 286 659 _c +255 659 222 653 188 643 _c +154 632 117 616 78 594 _c +78 694 _l +118 710 155 722 189 730 _c +223 738 255 742 284 742 _c +359 742 419 723 464 685 _c +509 647 532 597 532 534 _c +532 504 526 475 515 449 _c +504 422 484 390 454 354 _c +446 344 420 317 376 272 _c +332 227 271 164 192 83 _c +_cl}_e}_d +/three{{636 0 76 -13 556 742 _sc +406 393 _m +453 383 490 362 516 330 _c +542 298 556 258 556 212 _c +556 140 531 84 482 45 _c +432 6 362 -13 271 -13 _c +240 -13 208 -10 176 -4 _c +144 1 110 10 76 22 _c +76 117 _l +103 101 133 89 166 81 _c +198 73 232 69 268 69 _c +330 69 377 81 409 105 _c +441 129 458 165 458 212 _c +458 254 443 288 413 312 _c +383 336 341 349 287 349 _c +202 349 _l +202 430 _l +291 430 _l +339 430 376 439 402 459 _c +428 478 441 506 441 543 _c +441 580 427 609 401 629 _c +374 649 336 659 287 659 _c +260 659 231 656 200 650 _c +169 644 135 635 98 623 _c +98 711 _l +135 721 170 729 203 734 _c +235 739 266 742 296 742 _c +}_e{370 742 429 725 473 691 _c +517 657 539 611 539 553 _c +539 513 527 479 504 451 _c +481 423 448 403 406 393 _c +_cl}_e}_d +/four{636 0 49 0 580 729 _sc +378 643 _m +129 254 _l +378 254 _l +378 643 _l +352 729 _m +476 729 _l +476 254 _l +580 254 _l +580 172 _l +476 172 _l +476 0 _l +378 0 _l +378 172 _l +49 172 _l +49 267 _l +352 729 _l +_cl}_d +/five{{636 0 77 -13 549 729 _sc +108 729 _m +495 729 _l +495 646 _l +198 646 _l +198 467 _l +212 472 227 476 241 478 _c +255 480 270 482 284 482 _c +365 482 429 459 477 415 _c +525 370 549 310 549 234 _c +549 155 524 94 475 51 _c +426 8 357 -13 269 -13 _c +238 -13 207 -10 175 -6 _c +143 -1 111 6 77 17 _c +77 116 _l +106 100 136 88 168 80 _c +199 72 232 69 267 69 _c +323 69 368 83 401 113 _c +433 143 450 183 450 234 _c +450 284 433 324 401 354 _c +368 384 323 399 267 399 _c +241 399 214 396 188 390 _c +162 384 135 375 108 363 _c +108 729 _l +_cl}_e}_d +/six{{636 0 70 -13 573 742 _sc +330 404 _m +286 404 251 388 225 358 _c +199 328 186 286 186 234 _c +186 181 199 139 225 109 _c +251 79 286 64 330 64 _c +374 64 409 79 435 109 _c +461 139 474 181 474 234 _c +474 286 461 328 435 358 _c +409 388 374 404 330 404 _c +526 713 _m +526 623 _l +501 635 476 644 451 650 _c +425 656 400 659 376 659 _c +310 659 260 637 226 593 _c +192 549 172 482 168 394 _c +187 422 211 444 240 459 _c +269 474 301 482 336 482 _c +409 482 467 459 509 415 _c +551 371 573 310 573 234 _c +573 159 550 99 506 54 _c +462 9 403 -13 330 -13 _c +246 -13 181 19 137 83 _c +92 147 70 241 70 364 _c +70 479 97 571 152 639 _c +206 707 280 742 372 742 _c +}_e{396 742 421 739 447 735 _c +472 730 498 723 526 713 _c +_cl}_e}_d +/eight{{636 0 68 -13 568 742 _sc +318 346 _m +271 346 234 333 207 308 _c +180 283 167 249 167 205 _c +167 161 180 126 207 101 _c +234 76 271 64 318 64 _c +364 64 401 76 428 102 _c +455 127 469 161 469 205 _c +469 249 455 283 429 308 _c +402 333 365 346 318 346 _c +219 388 _m +177 398 144 418 120 447 _c +96 476 85 511 85 553 _c +85 611 105 657 147 691 _c +188 725 245 742 318 742 _c +390 742 447 725 489 691 _c +530 657 551 611 551 553 _c +551 511 539 476 515 447 _c +491 418 459 398 417 388 _c +464 377 501 355 528 323 _c +554 291 568 251 568 205 _c +568 134 546 80 503 43 _c +459 5 398 -13 318 -13 _c +237 -13 175 5 132 43 _c +89 80 68 134 68 205 _c +68 251 81 291 108 323 _c +134 355 171 377 219 388 _c +}_e{183 544 _m +183 506 194 476 218 455 _c +242 434 275 424 318 424 _c +360 424 393 434 417 455 _c +441 476 453 506 453 544 _c +453 582 441 611 417 632 _c +393 653 360 664 318 664 _c +275 664 242 653 218 632 _c +194 611 183 582 183 544 _c +_cl}_e}_d +/e{{615 0 55 -13 562 560 _sc +562 296 _m +562 252 _l +149 252 _l +153 190 171 142 205 110 _c +238 78 284 62 344 62 _c +378 62 412 66 444 74 _c +476 82 509 95 541 113 _c +541 28 _l +509 14 476 3 442 -3 _c +408 -9 373 -13 339 -13 _c +251 -13 182 12 131 62 _c +80 112 55 181 55 268 _c +55 357 79 428 127 481 _c +175 533 241 560 323 560 _c +397 560 455 536 498 489 _c +540 441 562 377 562 296 _c +472 322 _m +471 371 457 410 431 440 _c +404 469 368 484 324 484 _c +274 484 234 469 204 441 _c +174 413 156 373 152 322 _c +472 322 _l +_cl}_e}_d +/i{278 0 94 0 184 760 _sc +94 547 _m +184 547 _l +184 0 _l +94 0 _l +94 547 _l +94 760 _m +184 760 _l +184 646 _l +94 646 _l +94 760 _l +_cl}_d +/l{278 0 94 0 184 760 _sc +94 760 _m +184 760 _l +184 0 _l +94 0 _l +94 760 _l +_cl}_d +/m{{974 0 91 0 889 560 _sc +520 442 _m +542 482 569 511 600 531 _c +631 550 668 560 711 560 _c +767 560 811 540 842 500 _c +873 460 889 403 889 330 _c +889 0 _l +799 0 _l +799 327 _l +799 379 789 418 771 444 _c +752 469 724 482 686 482 _c +639 482 602 466 575 435 _c +548 404 535 362 535 309 _c +535 0 _l +445 0 _l +445 327 _l +445 379 435 418 417 444 _c +398 469 369 482 331 482 _c +285 482 248 466 221 435 _c +194 404 181 362 181 309 _c +181 0 _l +91 0 _l +91 547 _l +181 547 _l +181 462 _l +201 495 226 520 255 536 _c +283 552 317 560 357 560 _c +397 560 430 550 458 530 _c +486 510 506 480 520 442 _c +}_e{_cl}_e}_d +/n{634 0 91 0 549 560 _sc +549 330 _m +549 0 _l +459 0 _l +459 327 _l +459 379 448 417 428 443 _c +408 469 378 482 338 482 _c +289 482 251 466 223 435 _c +195 404 181 362 181 309 _c +181 0 _l +91 0 _l +91 547 _l +181 547 _l +181 462 _l +202 494 227 519 257 535 _c +286 551 320 560 358 560 _c +420 560 468 540 500 501 _c +532 462 549 405 549 330 _c +_cl}_d +/o{612 0 55 -13 557 560 _sc +306 484 _m +258 484 220 465 192 427 _c +164 389 150 338 150 273 _c +150 207 163 156 191 118 _c +219 80 257 62 306 62 _c +354 62 392 80 420 118 _c +448 156 462 207 462 273 _c +462 337 448 389 420 427 _c +392 465 354 484 306 484 _c +306 560 _m +384 560 445 534 490 484 _c +534 433 557 363 557 273 _c +557 183 534 113 490 63 _c +445 12 384 -13 306 -13 _c +227 -13 165 12 121 63 _c +77 113 55 183 55 273 _c +55 363 77 433 121 484 _c +165 534 227 560 306 560 _c +_cl}_d +/p{{635 0 91 -207 580 560 _sc +181 82 _m +181 -207 _l +91 -207 _l +91 547 _l +181 547 _l +181 464 _l +199 496 223 520 252 536 _c +281 552 316 560 356 560 _c +422 560 476 533 518 481 _c +559 428 580 359 580 273 _c +580 187 559 117 518 65 _c +476 13 422 -13 356 -13 _c +316 -13 281 -5 252 10 _c +223 25 199 49 181 82 _c +487 273 _m +487 339 473 390 446 428 _c +418 466 381 485 334 485 _c +286 485 249 466 222 428 _c +194 390 181 339 181 273 _c +181 207 194 155 222 117 _c +249 79 286 61 334 61 _c +381 61 418 79 446 117 _c +473 155 487 207 487 273 _c +_cl}_e}_d +/r{411 0 91 0 411 560 _sc +411 463 _m +401 469 390 473 378 476 _c +366 478 353 480 339 480 _c +288 480 249 463 222 430 _c +194 397 181 350 181 288 _c +181 0 _l +91 0 _l +91 547 _l +181 547 _l +181 462 _l +199 495 224 520 254 536 _c +284 552 321 560 365 560 _c +371 560 378 559 386 559 _c +393 558 401 557 411 555 _c +411 463 _l +_cl}_d +/s{{521 0 54 -13 472 560 _sc +443 531 _m +443 446 _l +417 458 391 468 364 475 _c +336 481 308 485 279 485 _c +234 485 200 478 178 464 _c +156 450 145 430 145 403 _c +145 382 153 366 169 354 _c +185 342 217 330 265 320 _c +296 313 _l +360 299 405 279 432 255 _c +458 230 472 195 472 151 _c +472 100 452 60 412 31 _c +372 1 316 -13 246 -13 _c +216 -13 186 -10 154 -5 _c +122 0 89 8 54 20 _c +54 113 _l +87 95 120 82 152 74 _c +184 65 216 61 248 61 _c +290 61 323 68 346 82 _c +368 96 380 117 380 144 _c +380 168 371 187 355 200 _c +339 213 303 226 247 238 _c +216 245 _l +160 257 119 275 95 299 _c +70 323 58 356 58 399 _c +58 450 76 490 112 518 _c +148 546 200 560 268 560 _c +}_e{301 560 332 557 362 552 _c +391 547 418 540 443 531 _c +_cl}_e}_d +/t{392 0 27 0 368 702 _sc +183 702 _m +183 547 _l +368 547 _l +368 477 _l +183 477 _l +183 180 _l +183 135 189 106 201 94 _c +213 81 238 75 276 75 _c +368 75 _l +368 0 _l +276 0 _l +206 0 158 13 132 39 _c +106 65 93 112 93 180 _c +93 477 _l +27 477 _l +27 547 _l +93 547 _l +93 702 _l +183 702 _l +_cl}_d +/u{634 0 85 -13 543 547 _sc +85 216 _m +85 547 _l +175 547 _l +175 219 _l +175 167 185 129 205 103 _c +225 77 255 64 296 64 _c +344 64 383 79 411 110 _c +439 141 453 183 453 237 _c +453 547 _l +543 547 _l +543 0 _l +453 0 _l +453 84 _l +431 50 405 26 377 10 _c +348 -5 315 -13 277 -13 _c +214 -13 166 6 134 45 _c +101 83 85 140 85 216 _c +_cl}_d +end readonly def + +/BuildGlyph + {exch begin + CharStrings exch + 2 copy known not{pop /.notdef}if + true 3 1 roll get exec + end}_d + +/BuildChar { + 1 index /Encoding get exch get + 1 index /BuildGlyph get exec +}_d + +FontName currentdict end definefont pop +%%EOF +end +%%EndProlog +mpldict begin +18 180 translate +576 432 0 0 clipbox +gsave +1.000 setgray +1.000 setlinewidth +0 setlinejoin +2 setlinecap +[] 0 setdash +0 0 m +0 432 l +576 432 l +576 0 l +closepath +gsave +fill +grestore +stroke +grestore +gsave +0.000 setgray +72 287.153 m +72 388.8 l +518.4 388.8 l +518.4 287.153 l +closepath +gsave +1.000 setgray +fill +grestore +stroke +grestore +2.000 setlinewidth +gsave +446.4 101.647 72 287.153 clipbox +72 287.153 m +72.4464 293.73 l +72.8928 299.92 l +73.3392 305.744 l +73.7856 311.219 l +74.232 316.364 l +74.6784 321.196 l +75.1248 325.729 l +75.5712 329.98 l +76.0176 333.962 l +76.464 337.69 l +76.9104 341.176 l +77.3568 344.433 l +77.8032 347.472 l +78.2496 350.305 l +78.696 352.943 l +79.1424 355.395 l +79.5888 357.671 l +80.0352 359.78 l +80.4816 361.731 l +80.928 363.532 l +81.3744 365.192 l +81.8208 366.717 l +82.2672 368.114 l +82.7136 369.391 l +83.16 370.554 l +83.6064 371.608 l +84.0528 372.56 l +84.4992 373.415 l +84.9456 374.179 l +85.392 374.855 l +85.8384 375.45 l +86.2848 375.967 l +86.7312 376.412 l +87.1776 376.786 l +87.624 377.096 l +88.0704 377.344 l +88.5168 377.534 l +88.9632 377.668 l +89.4096 377.751 l +89.856 377.786 l +90.3024 377.774 l +90.7488 377.719 l +91.1952 377.623 l +91.6416 377.489 l +92.088 377.319 l +92.5344 377.115 l +92.9808 376.879 l +93.4272 376.613 l +93.8736 376.32 l +94.32 376 l +94.7664 375.656 l +95.2128 375.289 l +95.6592 374.9 l +96.1056 374.492 l +96.552 374.065 l +96.9984 373.621 l +97.4448 373.16 l +97.8912 372.685 l +98.3376 372.196 l +98.784 371.694 l +99.2304 371.18 l +99.6768 370.655 l +100.123 370.121 l +100.57 369.577 l +101.016 369.025 l +101.462 368.465 l +101.909 367.899 l +102.355 367.326 l +102.802 366.748 l +103.248 366.165 l +103.694 365.577 l +104.141 364.986 l +104.587 364.391 l +105.034 363.793 l +105.48 363.193 l +105.926 362.591 l +106.373 361.988 l +106.819 361.383 l +107.266 360.778 l +107.712 360.172 l +108.158 359.566 l +108.605 358.96 l +109.051 358.354 l +109.498 357.749 l +109.944 357.146 l +110.39 356.543 l +110.837 355.942 l +111.283 355.342 l +111.73 354.744 l +112.176 354.149 l +112.622 353.555 l +113.069 352.964 l +113.515 352.375 l +113.962 351.789 l +114.408 351.206 l +114.854 350.625 l +115.301 350.048 l +115.747 349.474 l +116.194 348.902 l +116.64 348.335 l +117.086 347.77 l +117.533 347.209 l +117.979 346.652 l +118.426 346.098 l +118.872 345.548 l +119.318 345.001 l +119.765 344.458 l +120.211 343.919 l +120.658 343.384 l +121.104 342.853 l +121.55 342.326 l +121.997 341.802 l +122.443 341.283 l +122.89 340.767 l +123.336 340.256 l +123.782 339.748 l +124.229 339.245 l +124.675 338.745 l +125.122 338.25 l +125.568 337.759 l +126.014 337.272 l +126.461 336.788 l +126.907 336.309 l +127.354 335.834 l +127.8 335.363 l +128.246 334.896 l +128.693 334.433 l +129.139 333.974 l +129.586 333.519 l +130.032 333.068 l +130.478 332.621 l +130.925 332.178 l +131.371 331.739 l +131.818 331.304 l +132.264 330.873 l +132.71 330.446 l +133.157 330.022 l +133.603 329.603 l +134.05 329.187 l +134.496 328.775 l +134.942 328.367 l +135.389 327.962 l +135.835 327.562 l +136.282 327.165 l +136.728 326.772 l +137.174 326.382 l +137.621 325.996 l +138.067 325.614 l +138.514 325.235 l +138.96 324.86 l +139.406 324.489 l +139.853 324.121 l +140.299 323.756 l +140.746 323.395 l +141.192 323.037 l +141.638 322.683 l +142.085 322.332 l +142.531 321.985 l +142.978 321.641 l +143.424 321.3 l +143.87 320.962 l +144.317 320.628 l +144.763 320.297 l +145.21 319.969 l +145.656 319.644 l +146.102 319.323 l +146.549 319.004 l +146.995 318.689 l +147.442 318.376 l +147.888 318.067 l +148.334 317.761 l +148.781 317.458 l +149.227 317.157 l +149.674 316.86 l +150.12 316.565 l +150.566 316.274 l +151.013 315.985 l +151.459 315.699 l +151.906 315.416 l +152.352 315.136 l +152.798 314.858 l +153.245 314.583 l +153.691 314.311 l +154.138 314.041 l +154.584 313.774 l +155.03 313.51 l +155.477 313.249 l +155.923 312.989 l +156.37 312.733 l +156.816 312.479 l +157.262 312.227 l +157.709 311.978 l +158.155 311.732 l +158.602 311.488 l +159.048 311.246 l +159.494 311.007 l +159.941 310.77 l +160.387 310.535 l +160.834 310.303 l +161.28 310.073 l +161.726 309.845 l +162.173 309.619 l +162.619 309.396 l +163.066 309.175 l +163.512 308.956 l +163.958 308.739 l +164.405 308.525 l +164.851 308.312 l +165.298 308.102 l +165.744 307.894 l +166.19 307.688 l +166.637 307.483 l +167.083 307.281 l +167.53 307.081 l +167.976 306.883 l +168.422 306.687 l +168.869 306.493 l +169.315 306.3 l +169.762 306.11 l +170.208 305.921 l +170.654 305.735 l +171.101 305.55 l +171.547 305.367 l +171.994 305.186 l +172.44 305.007 l +172.886 304.829 l +173.333 304.653 l +173.779 304.479 l +174.226 304.307 l +174.672 304.136 l +175.118 303.967 l +175.565 303.8 l +176.011 303.635 l +176.458 303.471 l +176.904 303.308 l +177.35 303.148 l +177.797 302.988 l +178.243 302.831 l +178.69 302.675 l +179.136 302.521 l +179.582 302.368 l +180.029 302.216 l +180.475 302.067 l +180.922 301.918 l +181.368 301.771 l +181.814 301.626 l +182.261 301.482 l +182.707 301.339 l +183.154 301.198 l +183.6 301.058 l +184.046 300.92 l +184.493 300.783 l +184.939 300.648 l +185.386 300.513 l +185.832 300.38 l +186.278 300.249 l +186.725 300.119 l +187.171 299.99 l +187.618 299.862 l +188.064 299.735 l +188.51 299.61 l +188.957 299.486 l +189.403 299.364 l +189.85 299.242 l +190.296 299.122 l +190.742 299.003 l +191.189 298.885 l +191.635 298.768 l +192.082 298.653 l +192.528 298.538 l +192.974 298.425 l +193.421 298.313 l +193.867 298.202 l +194.314 298.092 l +194.76 297.983 l +195.206 297.875 l +195.653 297.768 l +196.099 297.663 l +196.546 297.558 l +196.992 297.455 l +197.438 297.352 l +197.885 297.251 l +198.331 297.15 l +198.778 297.051 l +199.224 296.952 l +199.67 296.855 l +200.117 296.758 l +200.563 296.663 l +201.01 296.568 l +201.456 296.474 l +201.902 296.382 l +202.349 296.29 l +202.795 296.199 l +203.242 296.109 l +203.688 296.02 l +204.134 295.932 l +204.581 295.844 l +205.027 295.758 l +205.474 295.672 l +205.92 295.587 l +206.366 295.503 l +206.813 295.42 l +207.259 295.338 l +207.706 295.257 l +208.152 295.176 l +208.598 295.096 l +209.045 295.017 l +209.491 294.939 l +209.938 294.861 l +210.384 294.785 l +210.83 294.709 l +211.277 294.634 l +211.723 294.559 l +212.17 294.486 l +212.616 294.413 l +213.062 294.34 l +213.509 294.269 l +213.955 294.198 l +214.402 294.128 l +214.848 294.059 l +215.294 293.99 l +215.741 293.922 l +216.187 293.854 l +216.634 293.788 l +217.08 293.722 l +217.526 293.656 l +217.973 293.592 l +218.419 293.528 l +218.866 293.464 l +219.312 293.401 l +219.758 293.339 l +220.205 293.278 l +220.651 293.217 l +221.098 293.156 l +221.544 293.097 l +221.99 293.037 l +222.437 292.979 l +222.883 292.921 l +223.33 292.864 l +223.776 292.807 l +224.222 292.751 l +224.669 292.695 l +225.115 292.64 l +225.562 292.585 l +226.008 292.531 l +226.454 292.478 l +226.901 292.425 l +227.347 292.372 l +227.794 292.32 l +228.24 292.269 l +228.686 292.218 l +229.133 292.167 l +229.579 292.118 l +230.026 292.068 l +230.472 292.019 l +230.918 291.971 l +231.365 291.923 l +231.811 291.875 l +232.258 291.828 l +232.704 291.782 l +233.15 291.736 l +233.597 291.69 l +234.043 291.645 l +234.49 291.6 l +234.936 291.556 l +235.382 291.512 l +235.829 291.469 l +236.275 291.426 l +236.722 291.383 l +237.168 291.341 l +237.614 291.3 l +238.061 291.258 l +238.507 291.218 l +238.954 291.177 l +239.4 291.137 l +239.846 291.097 l +240.293 291.058 l +240.739 291.019 l +241.186 290.981 l +241.632 290.943 l +242.078 290.905 l +242.525 290.868 l +242.971 290.831 l +243.418 290.794 l +243.864 290.758 l +244.31 290.722 l +244.757 290.687 l +245.203 290.651 l +245.65 290.617 l +246.096 290.582 l +246.542 290.548 l +246.989 290.514 l +247.435 290.481 l +247.882 290.448 l +248.328 290.415 l +248.774 290.382 l +249.221 290.35 l +249.667 290.319 l +250.114 290.287 l +250.56 290.256 l +251.006 290.225 l +251.453 290.194 l +251.899 290.164 l +252.346 290.134 l +252.792 290.104 l +253.238 290.075 l +253.685 290.046 l +254.131 290.017 l +254.578 289.989 l +255.024 289.961 l +255.47 289.933 l +255.917 289.905 l +256.363 289.878 l +256.81 289.85 l +257.256 289.824 l +257.702 289.797 l +258.149 289.771 l +258.595 289.745 l +259.042 289.719 l +259.488 289.693 l +259.934 289.668 l +260.381 289.643 l +260.827 289.618 l +261.274 289.594 l +261.72 289.569 l +262.166 289.545 l +262.613 289.522 l +263.059 289.498 l +263.506 289.475 l +263.952 289.452 l +264.398 289.429 l +264.845 289.406 l +265.291 289.384 l +265.738 289.361 l +266.184 289.34 l +266.63 289.318 l +267.077 289.296 l +267.523 289.275 l +267.97 289.254 l +268.416 289.233 l +268.862 289.212 l +269.309 289.192 l +269.755 289.171 l +270.202 289.151 l +270.648 289.131 l +271.094 289.112 l +271.541 289.092 l +271.987 289.073 l +272.434 289.054 l +272.88 289.035 l +273.326 289.016 l +273.773 288.998 l +274.219 288.979 l +274.666 288.961 l +275.112 288.943 l +275.558 288.925 l +276.005 288.908 l +276.451 288.89 l +276.898 288.873 l +277.344 288.856 l +277.79 288.839 l +278.237 288.822 l +278.683 288.806 l +279.13 288.789 l +279.576 288.773 l +280.022 288.757 l +280.469 288.741 l +280.915 288.725 l +281.362 288.709 l +281.808 288.694 l +282.254 288.678 l +282.701 288.663 l +283.147 288.648 l +283.594 288.633 l +284.04 288.619 l +284.486 288.604 l +284.933 288.59 l +285.379 288.575 l +285.826 288.561 l +286.272 288.547 l +286.718 288.533 l +287.165 288.52 l +287.611 288.506 l +288.058 288.492 l +288.504 288.479 l +288.95 288.466 l +289.397 288.453 l +289.843 288.44 l +290.29 288.427 l +290.736 288.414 l +291.182 288.402 l +291.629 288.389 l +292.075 288.377 l +292.522 288.365 l +292.968 288.353 l +293.414 288.341 l +293.861 288.329 l +294.307 288.317 l +294.754 288.306 l +295.2 288.294 l +295.646 288.283 l +296.093 288.272 l +296.539 288.261 l +296.986 288.25 l +297.432 288.239 l +297.878 288.228 l +298.325 288.217 l +298.771 288.207 l +299.218 288.196 l +299.664 288.186 l +300.11 288.176 l +300.557 288.165 l +301.003 288.155 l +301.45 288.145 l +301.896 288.135 l +302.342 288.126 l +302.789 288.116 l +303.235 288.106 l +303.682 288.097 l +304.128 288.088 l +304.574 288.078 l +305.021 288.069 l +305.467 288.06 l +305.914 288.051 l +306.36 288.042 l +306.806 288.033 l +307.253 288.024 l +307.699 288.016 l +308.146 288.007 l +308.592 287.999 l +309.038 287.99 l +309.485 287.982 l +309.931 287.974 l +310.378 287.965 l +310.824 287.957 l +311.27 287.949 l +311.717 287.941 l +312.163 287.934 l +312.61 287.926 l +313.056 287.918 l +313.502 287.91 l +313.949 287.903 l +314.395 287.895 l +314.842 287.888 l +315.288 287.881 l +315.734 287.874 l +316.181 287.866 l +316.627 287.859 l +317.074 287.852 l +317.52 287.845 l +317.966 287.838 l +318.413 287.832 l +318.859 287.825 l +319.306 287.818 l +319.752 287.812 l +320.198 287.805 l +320.645 287.798 l +321.091 287.792 l +321.538 287.786 l +321.984 287.779 l +322.43 287.773 l +322.877 287.767 l +323.323 287.761 l +323.77 287.755 l +324.216 287.749 l +324.662 287.743 l +325.109 287.737 l +325.555 287.731 l +326.002 287.725 l +326.448 287.72 l +326.894 287.714 l +327.341 287.709 l +327.787 287.703 l +328.234 287.698 l +328.68 287.692 l +329.126 287.687 l +329.573 287.681 l +330.019 287.676 l +330.466 287.671 l +330.912 287.666 l +331.358 287.661 l +331.805 287.656 l +332.251 287.651 l +332.698 287.646 l +333.144 287.641 l +333.59 287.636 l +334.037 287.631 l +334.483 287.626 l +334.93 287.622 l +335.376 287.617 l +335.822 287.612 l +336.269 287.608 l +336.715 287.603 l +337.162 287.599 l +337.608 287.594 l +338.054 287.59 l +338.501 287.586 l +338.947 287.581 l +339.394 287.577 l +339.84 287.573 l +340.286 287.569 l +340.733 287.565 l +341.179 287.56 l +341.626 287.556 l +342.072 287.552 l +342.518 287.548 l +342.965 287.544 l +343.411 287.541 l +343.858 287.537 l +344.304 287.533 l +344.75 287.529 l +345.197 287.525 l +345.643 287.522 l +346.09 287.518 l +346.536 287.514 l +346.982 287.511 l +347.429 287.507 l +347.875 287.504 l +348.322 287.5 l +348.768 287.497 l +349.214 287.493 l +349.661 287.49 l +350.107 287.487 l +350.554 287.483 l +351 287.48 l +351.446 287.477 l +351.893 287.474 l +352.339 287.47 l +352.786 287.467 l +353.232 287.464 l +353.678 287.461 l +354.125 287.458 l +354.571 287.455 l +355.018 287.452 l +355.464 287.449 l +355.91 287.446 l +356.357 287.443 l +356.803 287.44 l +357.25 287.437 l +357.696 287.434 l +358.142 287.432 l +358.589 287.429 l +359.035 287.426 l +359.482 287.423 l +359.928 287.421 l +360.374 287.418 l +360.821 287.415 l +361.267 287.413 l +361.714 287.41 l +362.16 287.408 l +362.606 287.405 l +363.053 287.403 l +363.499 287.4 l +363.946 287.398 l +364.392 287.395 l +364.838 287.393 l +365.285 287.39 l +365.731 287.388 l +366.178 287.386 l +366.624 287.383 l +367.07 287.381 l +367.517 287.379 l +367.963 287.377 l +368.41 287.374 l +368.856 287.372 l +369.302 287.37 l +369.749 287.368 l +370.195 287.366 l +370.642 287.364 l +371.088 287.361 l +371.534 287.359 l +371.981 287.357 l +372.427 287.355 l +372.874 287.353 l +373.32 287.351 l +373.766 287.349 l +374.213 287.347 l +374.659 287.345 l +375.106 287.344 l +375.552 287.342 l +375.998 287.34 l +376.445 287.338 l +376.891 287.336 l +377.338 287.334 l +377.784 287.332 l +378.23 287.331 l +378.677 287.329 l +379.123 287.327 l +379.57 287.325 l +380.016 287.324 l +380.462 287.322 l +380.909 287.32 l +381.355 287.319 l +381.802 287.317 l +382.248 287.315 l +382.694 287.314 l +383.141 287.312 l +383.587 287.311 l +384.034 287.309 l +384.48 287.307 l +384.926 287.306 l +385.373 287.304 l +385.819 287.303 l +386.266 287.301 l +386.712 287.3 l +387.158 287.298 l +387.605 287.297 l +388.051 287.296 l +388.498 287.294 l +388.944 287.293 l +389.39 287.291 l +389.837 287.29 l +390.283 287.289 l +390.73 287.287 l +391.176 287.286 l +391.622 287.285 l +392.069 287.283 l +392.515 287.282 l +392.962 287.281 l +393.408 287.279 l +393.854 287.278 l +394.301 287.277 l +394.747 287.276 l +395.194 287.274 l +395.64 287.273 l +396.086 287.272 l +396.533 287.271 l +396.979 287.27 l +397.426 287.269 l +397.872 287.267 l +398.318 287.266 l +398.765 287.265 l +399.211 287.264 l +399.658 287.263 l +400.104 287.262 l +400.55 287.261 l +400.997 287.26 l +401.443 287.259 l +401.89 287.258 l +402.336 287.256 l +402.782 287.255 l +403.229 287.254 l +403.675 287.253 l +404.122 287.252 l +404.568 287.251 l +405.014 287.25 l +405.461 287.249 l +405.907 287.249 l +406.354 287.248 l +406.8 287.247 l +407.246 287.246 l +407.693 287.245 l +408.139 287.244 l +408.586 287.243 l +409.032 287.242 l +409.478 287.241 l +409.925 287.24 l +410.371 287.239 l +410.818 287.239 l +411.264 287.238 l +411.71 287.237 l +412.157 287.236 l +412.603 287.235 l +413.05 287.234 l +413.496 287.234 l +413.942 287.233 l +414.389 287.232 l +414.835 287.231 l +415.282 287.23 l +415.728 287.23 l +416.174 287.229 l +416.621 287.228 l +417.067 287.227 l +417.514 287.227 l +417.96 287.226 l +418.406 287.225 l +418.853 287.224 l +419.299 287.224 l +419.746 287.223 l +420.192 287.222 l +420.638 287.222 l +421.085 287.221 l +421.531 287.22 l +421.978 287.22 l +422.424 287.219 l +422.87 287.218 l +423.317 287.218 l +423.763 287.217 l +424.21 287.216 l +424.656 287.216 l +425.102 287.215 l +425.549 287.215 l +425.995 287.214 l +426.442 287.213 l +426.888 287.213 l +427.334 287.212 l +427.781 287.212 l +428.227 287.211 l +428.674 287.21 l +429.12 287.21 l +429.566 287.209 l +430.013 287.209 l +430.459 287.208 l +430.906 287.208 l +431.352 287.207 l +431.798 287.206 l +432.245 287.206 l +432.691 287.205 l +433.138 287.205 l +433.584 287.204 l +434.03 287.204 l +434.477 287.203 l +434.923 287.203 l +435.37 287.202 l +435.816 287.202 l +436.262 287.201 l +436.709 287.201 l +437.155 287.2 l +437.602 287.2 l +438.048 287.199 l +438.494 287.199 l +438.941 287.199 l +439.387 287.198 l +439.834 287.198 l +440.28 287.197 l +440.726 287.197 l +441.173 287.196 l +441.619 287.196 l +442.066 287.195 l +442.512 287.195 l +442.958 287.195 l +443.405 287.194 l +443.851 287.194 l +444.298 287.193 l +444.744 287.193 l +445.19 287.193 l +445.637 287.192 l +446.083 287.192 l +446.53 287.191 l +446.976 287.191 l +447.422 287.191 l +447.869 287.19 l +448.315 287.19 l +448.762 287.19 l +449.208 287.189 l +449.654 287.189 l +450.101 287.188 l +450.547 287.188 l +450.994 287.188 l +451.44 287.187 l +451.886 287.187 l +452.333 287.187 l +452.779 287.186 l +453.226 287.186 l +453.672 287.186 l +454.118 287.185 l +454.565 287.185 l +455.011 287.185 l +455.458 287.184 l +455.904 287.184 l +456.35 287.184 l +456.797 287.184 l +457.243 287.183 l +457.69 287.183 l +458.136 287.183 l +458.582 287.182 l +459.029 287.182 l +459.475 287.182 l +459.922 287.181 l +460.368 287.181 l +460.814 287.181 l +461.261 287.181 l +461.707 287.18 l +462.154 287.18 l +462.6 287.18 l +463.046 287.18 l +463.493 287.179 l +463.939 287.179 l +464.386 287.179 l +464.832 287.178 l +465.278 287.178 l +465.725 287.178 l +466.171 287.178 l +466.618 287.177 l +467.064 287.177 l +467.51 287.177 l +467.957 287.177 l +468.403 287.177 l +468.85 287.176 l +469.296 287.176 l +469.742 287.176 l +470.189 287.176 l +470.635 287.175 l +471.082 287.175 l +471.528 287.175 l +471.974 287.175 l +472.421 287.174 l +472.867 287.174 l +473.314 287.174 l +473.76 287.174 l +474.206 287.174 l +474.653 287.173 l +475.099 287.173 l +475.546 287.173 l +475.992 287.173 l +476.438 287.173 l +476.885 287.172 l +477.331 287.172 l +477.778 287.172 l +478.224 287.172 l +478.67 287.172 l +479.117 287.171 l +479.563 287.171 l +480.01 287.171 l +480.456 287.171 l +480.902 287.171 l +481.349 287.171 l +481.795 287.17 l +482.242 287.17 l +482.688 287.17 l +483.134 287.17 l +483.581 287.17 l +484.027 287.17 l +484.474 287.169 l +484.92 287.169 l +485.366 287.169 l +485.813 287.169 l +486.259 287.169 l +486.706 287.169 l +487.152 287.168 l +487.598 287.168 l +488.045 287.168 l +488.491 287.168 l +488.938 287.168 l +489.384 287.168 l +489.83 287.168 l +490.277 287.167 l +490.723 287.167 l +491.17 287.167 l +491.616 287.167 l +492.062 287.167 l +492.509 287.167 l +492.955 287.167 l +493.402 287.166 l +493.848 287.166 l +494.294 287.166 l +494.741 287.166 l +495.187 287.166 l +495.634 287.166 l +496.08 287.166 l +496.526 287.165 l +496.973 287.165 l +497.419 287.165 l +497.866 287.165 l +498.312 287.165 l +498.758 287.165 l +499.205 287.165 l +499.651 287.165 l +500.098 287.165 l +500.544 287.164 l +500.99 287.164 l +501.437 287.164 l +501.883 287.164 l +502.33 287.164 l +502.776 287.164 l +503.222 287.164 l +503.669 287.164 l +504.115 287.164 l +504.562 287.163 l +505.008 287.163 l +505.454 287.163 l +505.901 287.163 l +506.347 287.163 l +506.794 287.163 l +507.24 287.163 l +507.686 287.163 l +508.133 287.163 l +508.579 287.163 l +509.026 287.162 l +509.472 287.162 l +509.918 287.162 l +510.365 287.162 l +510.811 287.162 l +511.258 287.162 l +511.704 287.162 l +512.15 287.162 l +512.597 287.162 l +513.043 287.162 l +513.49 287.162 l +513.936 287.161 l +514.382 287.161 l +514.829 287.161 l +515.275 287.161 l +515.722 287.161 l +516.168 287.161 l +516.614 287.161 l +517.061 287.161 l +517.507 287.161 l +517.954 287.161 l +stroke +grestore +/BitstreamVeraSans-Roman findfont +12.000 scalefont +setfont +68.977 274.075 m +0 0.172 rmoveto +(0) show +0.500 setlinewidth +0 setlinecap +/o { gsave +newpath +translate +-0.5 0 m +-0.5 4 l +closepath +stroke +grestore } bind def +161.28 287.153 o +/o { gsave +newpath +translate +-0.5 -4 m +-0.5 0 l +closepath +stroke +grestore } bind def +161.28 388.8 o +158.499 274.247 m +(2) show +/o { gsave +newpath +translate +-0.5 0 m +-0.5 4 l +closepath +stroke +grestore } bind def +250.56 287.153 o +/o { gsave +newpath +translate +-0.5 -4 m +-0.5 0 l +closepath +stroke +grestore } bind def +250.56 388.8 o +247.372 274.403 m +(4) show +/o { gsave +newpath +translate +-0.5 0 m +-0.5 4 l +closepath +stroke +grestore } bind def +339.84 287.153 o +/o { gsave +newpath +translate +-0.5 -4 m +-0.5 0 l +closepath +stroke +grestore } bind def +339.84 388.8 o +336.824 274.075 m +0 0.172 rmoveto +(6) show +/o { gsave +newpath +translate +-0.5 0 m +-0.5 4 l +closepath +stroke +grestore } bind def +429.12 287.153 o +/o { gsave +newpath +translate +-0.5 -4 m +-0.5 0 l +closepath +stroke +grestore } bind def +429.12 388.8 o +426.12 274.075 m +0 0.172 rmoveto +(8) show +511.814 274.075 m +0 0.172 rmoveto +(10) show +50.5 282.614 m +0 0.172 rmoveto +(0.0) show +/o { gsave +newpath +translate +0 0.5 m +4 0.5 l +closepath +stroke +grestore } bind def +72 304.094 o +/o { gsave +newpath +translate +-4 0.5 m +0 0.5 l +closepath +stroke +grestore } bind def +518.4 304.094 o +50.812 299.555 m +0 0.172 rmoveto +(0.1) show +/o { gsave +newpath +translate +0 0.5 m +4 0.5 l +closepath +stroke +grestore } bind def +72 321.035 o +/o { gsave +newpath +translate +-4 0.5 m +0 0.5 l +closepath +stroke +grestore } bind def +518.4 321.035 o +50.906 316.496 m +0 0.172 rmoveto +(0.2) show +/o { gsave +newpath +translate +0 0.5 m +4 0.5 l +closepath +stroke +grestore } bind def +72 337.976 o +/o { gsave +newpath +translate +-4 0.5 m +0 0.5 l +closepath +stroke +grestore } bind def +518.4 337.976 o +50.672 333.437 m +0 0.172 rmoveto +(0.3) show +/o { gsave +newpath +translate +0 0.5 m +4 0.5 l +closepath +stroke +grestore } bind def +72 354.918 o +/o { gsave +newpath +translate +-4 0.5 m +0 0.5 l +closepath +stroke +grestore } bind def +518.4 354.918 o +50.375 350.379 m +0 0.172 rmoveto +(0.4) show +/o { gsave +newpath +translate +0 0.5 m +4 0.5 l +closepath +stroke +grestore } bind def +72 371.859 o +/o { gsave +newpath +translate +-4 0.5 m +0 0.5 l +closepath +stroke +grestore } bind def +518.4 371.859 o +50.75 367.32 m +0 0.172 rmoveto +(0.5) show +50.469 384.261 m +0 0.172 rmoveto +(0.6) show +45.375 285.383 m +gsave +90 rotate +0 2.5 rmoveto +(impulse response) show +grestore +1.000 setlinewidth +2 setlinecap +72 287.153 m +518.4 287.153 l +518.4 388.8 l +72 388.8 l +72 287.153 l +stroke +gsave +72 165.176 m +72 266.824 l +518.4 266.824 l +518.4 165.176 l +closepath +gsave +1.000 setgray +fill +grestore +stroke +grestore +gsave +0.000 0.000 1.000 setrgbcolor +2.000 setlinewidth +gsave +446.4 101.6 72 165.2 clipbox +116.64 165.176 m +116.64 221.647 l +117.979 221.647 l +117.979 165.176 l +closepath +gsave +fill +grestore +stroke +grestore +grestore +gsave +0.000 0.502 0.000 setrgbcolor +gsave +446.4 101.6 72 165.2 clipbox +205.92 165.176 m +205.92 261.176 l +207.259 261.176 l +207.259 165.176 l +closepath +gsave +fill +grestore +stroke +grestore +grestore +gsave +1.000 0.000 0.000 setrgbcolor +gsave +446.4 101.6 72 165.2 clipbox +473.76 165.176 m +473.76 199.059 l +475.099 199.059 l +475.099 165.176 l +closepath +gsave +fill +grestore +stroke +grestore +grestore +0.000 0.000 1.000 setrgbcolor +1.000 setlinewidth +gsave +446.4 101.647 72 165.176 clipbox +72 165.176 m +72.4464 165.176 l +72.8928 165.176 l +73.3392 165.176 l +73.7856 165.176 l +74.232 165.176 l +74.6784 165.176 l +75.1248 165.176 l +75.5712 165.176 l +76.0176 165.176 l +76.464 165.176 l +76.9104 165.176 l +77.3568 165.176 l +77.8032 165.176 l +78.2496 165.176 l +78.696 165.176 l +79.1424 165.176 l +79.5888 165.176 l +80.0352 165.176 l +80.4816 165.176 l +80.928 165.176 l +81.3744 165.176 l +81.8208 165.176 l +82.2672 165.176 l +82.7136 165.176 l +83.16 165.176 l +83.6064 165.176 l +84.0528 165.176 l +84.4992 165.176 l +84.9456 165.176 l +85.392 165.176 l +85.8384 165.176 l +86.2848 165.176 l +86.7312 165.176 l +87.1776 165.176 l +87.624 165.176 l +88.0704 165.176 l +88.5168 165.176 l +88.9632 165.176 l +89.4096 165.176 l +89.856 165.176 l +90.3024 165.176 l +90.7488 165.176 l +91.1952 165.176 l +91.6416 165.176 l +92.088 165.176 l +92.5344 165.176 l +92.9808 165.176 l +93.4272 165.176 l +93.8736 165.176 l +94.32 165.176 l +94.7664 165.176 l +95.2128 165.176 l +95.6592 165.176 l +96.1056 165.176 l +96.552 165.176 l +96.9984 165.176 l +97.4448 165.176 l +97.8912 165.176 l +98.3376 165.176 l +98.784 165.176 l +99.2304 165.176 l +99.6768 165.176 l +100.123 165.176 l +100.57 165.176 l +101.016 165.176 l +101.462 165.176 l +101.909 165.176 l +102.355 165.176 l +102.802 165.176 l +103.248 165.176 l +103.694 165.176 l +104.141 165.176 l +104.587 165.176 l +105.034 165.176 l +105.48 165.176 l +105.926 165.176 l +106.373 165.176 l +106.819 165.176 l +107.266 165.176 l +107.712 165.176 l +108.158 165.176 l +108.605 165.176 l +109.051 165.176 l +109.498 165.176 l +109.944 165.176 l +110.39 165.176 l +110.837 165.176 l +111.283 165.176 l +111.73 165.176 l +112.176 165.176 l +112.622 165.176 l +113.069 165.176 l +113.515 165.176 l +113.962 165.176 l +114.408 165.176 l +114.854 165.176 l +115.301 165.176 l +115.747 165.176 l +116.194 165.176 l +116.64 165.176 l +117.086 167.369 l +117.533 169.432 l +117.979 171.373 l +118.426 173.199 l +118.872 174.914 l +119.318 176.524 l +119.765 178.035 l +120.211 179.452 l +120.658 180.779 l +121.104 182.022 l +121.55 183.184 l +121.997 184.27 l +122.443 185.283 l +122.89 186.227 l +123.336 187.106 l +123.782 187.924 l +124.229 188.682 l +124.675 189.385 l +125.122 190.036 l +125.568 190.636 l +126.014 191.189 l +126.461 191.698 l +126.907 192.164 l +127.354 192.589 l +127.8 192.977 l +128.246 193.328 l +128.693 193.646 l +129.139 193.931 l +129.586 194.185 l +130.032 194.411 l +130.478 194.609 l +130.925 194.781 l +131.371 194.929 l +131.818 195.054 l +132.264 195.158 l +132.71 195.24 l +133.157 195.303 l +133.603 195.348 l +134.05 195.376 l +134.496 195.387 l +134.942 195.383 l +135.389 195.365 l +135.835 195.333 l +136.282 195.288 l +136.728 195.232 l +137.174 195.164 l +137.621 195.085 l +138.067 194.997 l +138.514 194.899 l +138.96 194.792 l +139.406 194.677 l +139.853 194.555 l +140.299 194.426 l +140.746 194.289 l +141.192 194.147 l +141.638 193.999 l +142.085 193.846 l +142.531 193.687 l +142.978 193.524 l +143.424 193.357 l +143.87 193.185 l +144.317 193.011 l +144.763 192.832 l +145.21 192.651 l +145.656 192.467 l +146.102 192.281 l +146.549 192.092 l +146.995 191.901 l +147.442 191.708 l +147.888 191.514 l +148.334 191.318 l +148.781 191.121 l +149.227 190.922 l +149.674 190.723 l +150.12 190.523 l +150.566 190.323 l +151.013 190.121 l +151.459 189.92 l +151.906 189.718 l +152.352 189.516 l +152.798 189.314 l +153.245 189.112 l +153.691 188.91 l +154.138 188.709 l +154.584 188.507 l +155.03 188.306 l +155.477 188.106 l +155.923 187.906 l +156.37 187.707 l +156.816 187.508 l +157.262 187.311 l +157.709 187.113 l +158.155 186.917 l +158.602 186.722 l +159.048 186.527 l +159.494 186.334 l +159.941 186.141 l +160.387 185.95 l +160.834 185.76 l +161.28 185.57 l +161.726 185.382 l +162.173 185.195 l +162.619 185.009 l +163.066 184.825 l +163.512 184.641 l +163.958 184.459 l +164.405 184.278 l +164.851 184.099 l +165.298 183.92 l +165.744 183.743 l +166.19 183.567 l +166.637 183.393 l +167.083 183.22 l +167.53 183.048 l +167.976 182.877 l +168.422 182.708 l +168.869 182.54 l +169.315 182.374 l +169.762 182.209 l +170.208 182.045 l +170.654 181.883 l +171.101 181.722 l +171.547 181.562 l +171.994 181.404 l +172.44 181.247 l +172.886 181.091 l +173.333 180.937 l +173.779 180.784 l +174.226 180.632 l +174.672 180.482 l +175.118 180.333 l +175.565 180.185 l +176.011 180.039 l +176.458 179.894 l +176.904 179.75 l +177.35 179.607 l +177.797 179.466 l +178.243 179.326 l +178.69 179.188 l +179.136 179.05 l +179.582 178.914 l +180.029 178.78 l +180.475 178.646 l +180.922 178.514 l +181.368 178.383 l +181.814 178.253 l +182.261 178.124 l +182.707 177.997 l +183.154 177.871 l +183.6 177.746 l +184.046 177.622 l +184.493 177.499 l +184.939 177.377 l +185.386 177.257 l +185.832 177.138 l +186.278 177.02 l +186.725 176.903 l +187.171 176.787 l +187.618 176.672 l +188.064 176.559 l +188.51 176.446 l +188.957 176.335 l +189.403 176.224 l +189.85 176.115 l +190.296 176.007 l +190.742 175.9 l +191.189 175.794 l +191.635 175.688 l +192.082 175.584 l +192.528 175.481 l +192.974 175.379 l +193.421 175.278 l +193.867 175.178 l +194.314 175.079 l +194.76 174.981 l +195.206 174.883 l +195.653 174.787 l +196.099 174.692 l +196.546 174.597 l +196.992 174.504 l +197.438 174.411 l +197.885 174.32 l +198.331 174.229 l +198.778 174.139 l +199.224 174.05 l +199.67 173.962 l +200.117 173.875 l +200.563 173.789 l +201.01 173.703 l +201.456 173.618 l +201.902 173.535 l +202.349 173.452 l +202.795 173.369 l +203.242 173.288 l +203.688 173.207 l +204.134 173.128 l +204.581 173.049 l +205.027 172.97 l +205.474 172.893 l +205.92 172.816 l +206.366 172.74 l +206.813 172.665 l +207.259 172.591 l +207.706 172.517 l +208.152 172.444 l +208.598 172.372 l +209.045 172.3 l +209.491 172.23 l +209.938 172.16 l +210.384 172.09 l +210.83 172.021 l +211.277 171.953 l +211.723 171.886 l +212.17 171.819 l +212.616 171.753 l +213.062 171.688 l +213.509 171.623 l +213.955 171.559 l +214.402 171.495 l +214.848 171.433 l +215.294 171.37 l +215.741 171.309 l +216.187 171.248 l +216.634 171.187 l +217.08 171.128 l +217.526 171.069 l +217.973 171.01 l +218.419 170.952 l +218.866 170.894 l +219.312 170.838 l +219.758 170.781 l +220.205 170.726 l +220.651 170.67 l +221.098 170.616 l +221.544 170.562 l +221.99 170.508 l +222.437 170.455 l +222.883 170.402 l +223.33 170.35 l +223.776 170.299 l +224.222 170.248 l +224.669 170.198 l +225.115 170.148 l +225.562 170.098 l +226.008 170.049 l +226.454 170.001 l +226.901 169.953 l +227.347 169.905 l +227.794 169.858 l +228.24 169.812 l +228.686 169.766 l +229.133 169.72 l +229.579 169.675 l +230.026 169.63 l +230.472 169.586 l +230.918 169.542 l +231.365 169.498 l +231.811 169.455 l +232.258 169.413 l +232.704 169.371 l +233.15 169.329 l +233.597 169.288 l +234.043 169.247 l +234.49 169.206 l +234.936 169.166 l +235.382 169.126 l +235.829 169.087 l +236.275 169.048 l +236.722 169.01 l +237.168 168.972 l +237.614 168.934 l +238.061 168.896 l +238.507 168.859 l +238.954 168.823 l +239.4 168.786 l +239.846 168.751 l +240.293 168.715 l +240.739 168.68 l +241.186 168.645 l +241.632 168.61 l +242.078 168.576 l +242.525 168.542 l +242.971 168.509 l +243.418 168.476 l +243.864 168.443 l +244.31 168.41 l +244.757 168.378 l +245.203 168.346 l +245.65 168.315 l +246.096 168.284 l +246.542 168.253 l +246.989 168.222 l +247.435 168.192 l +247.882 168.162 l +248.328 168.132 l +248.774 168.103 l +249.221 168.074 l +249.667 168.045 l +250.114 168.016 l +250.56 167.988 l +251.006 167.96 l +251.453 167.932 l +251.899 167.905 l +252.346 167.878 l +252.792 167.851 l +253.238 167.824 l +253.685 167.798 l +254.131 167.772 l +254.578 167.746 l +255.024 167.72 l +255.47 167.695 l +255.917 167.67 l +256.363 167.645 l +256.81 167.621 l +257.256 167.596 l +257.702 167.572 l +258.149 167.548 l +258.595 167.525 l +259.042 167.501 l +259.488 167.478 l +259.934 167.455 l +260.381 167.433 l +260.827 167.41 l +261.274 167.388 l +261.72 167.366 l +262.166 167.344 l +262.613 167.323 l +263.059 167.301 l +263.506 167.28 l +263.952 167.259 l +264.398 167.239 l +264.845 167.218 l +265.291 167.198 l +265.738 167.178 l +266.184 167.158 l +266.63 167.138 l +267.077 167.118 l +267.523 167.099 l +267.97 167.08 l +268.416 167.061 l +268.862 167.042 l +269.309 167.024 l +269.755 167.005 l +270.202 166.987 l +270.648 166.969 l +271.094 166.951 l +271.541 166.934 l +271.987 166.916 l +272.434 166.899 l +272.88 166.882 l +273.326 166.865 l +273.773 166.848 l +274.219 166.831 l +274.666 166.815 l +275.112 166.799 l +275.558 166.782 l +276.005 166.766 l +276.451 166.751 l +276.898 166.735 l +277.344 166.719 l +277.79 166.704 l +278.237 166.689 l +278.683 166.674 l +279.13 166.659 l +279.576 166.644 l +280.022 166.63 l +280.469 166.615 l +280.915 166.601 l +281.362 166.587 l +281.808 166.573 l +282.254 166.559 l +282.701 166.545 l +283.147 166.531 l +283.594 166.518 l +284.04 166.505 l +284.486 166.491 l +284.933 166.478 l +285.379 166.465 l +285.826 166.452 l +286.272 166.44 l +286.718 166.427 l +287.165 166.415 l +287.611 166.402 l +288.058 166.39 l +288.504 166.378 l +288.95 166.366 l +289.397 166.354 l +289.843 166.343 l +290.29 166.331 l +290.736 166.32 l +291.182 166.308 l +291.629 166.297 l +292.075 166.286 l +292.522 166.275 l +292.968 166.264 l +293.414 166.253 l +293.861 166.242 l +294.307 166.232 l +294.754 166.221 l +295.2 166.211 l +295.646 166.2 l +296.093 166.19 l +296.539 166.18 l +296.986 166.17 l +297.432 166.16 l +297.878 166.151 l +298.325 166.141 l +298.771 166.131 l +299.218 166.122 l +299.664 166.112 l +300.11 166.103 l +300.557 166.094 l +301.003 166.085 l +301.45 166.076 l +301.896 166.067 l +302.342 166.058 l +302.789 166.049 l +303.235 166.04 l +303.682 166.032 l +304.128 166.023 l +304.574 166.015 l +305.021 166.007 l +305.467 165.998 l +305.914 165.99 l +306.36 165.982 l +306.806 165.974 l +307.253 165.966 l +307.699 165.958 l +308.146 165.95 l +308.592 165.943 l +309.038 165.935 l +309.485 165.928 l +309.931 165.92 l +310.378 165.913 l +310.824 165.905 l +311.27 165.898 l +311.717 165.891 l +312.163 165.884 l +312.61 165.877 l +313.056 165.87 l +313.502 165.863 l +313.949 165.856 l +314.395 165.849 l +314.842 165.843 l +315.288 165.836 l +315.734 165.829 l +316.181 165.823 l +316.627 165.816 l +317.074 165.81 l +317.52 165.804 l +317.966 165.798 l +318.413 165.791 l +318.859 165.785 l +319.306 165.779 l +319.752 165.773 l +320.198 165.767 l +320.645 165.761 l +321.091 165.756 l +321.538 165.75 l +321.984 165.744 l +322.43 165.738 l +322.877 165.733 l +323.323 165.727 l +323.77 165.722 l +324.216 165.716 l +324.662 165.711 l +325.109 165.706 l +325.555 165.7 l +326.002 165.695 l +326.448 165.69 l +326.894 165.685 l +327.341 165.68 l +327.787 165.675 l +328.234 165.67 l +328.68 165.665 l +329.126 165.66 l +329.573 165.655 l +330.019 165.651 l +330.466 165.646 l +330.912 165.641 l +331.358 165.637 l +331.805 165.632 l +332.251 165.627 l +332.698 165.623 l +333.144 165.619 l +333.59 165.614 l +334.037 165.61 l +334.483 165.605 l +334.93 165.601 l +335.376 165.597 l +335.822 165.593 l +336.269 165.589 l +336.715 165.585 l +337.162 165.58 l +337.608 165.576 l +338.054 165.572 l +338.501 165.569 l +338.947 165.565 l +339.394 165.561 l +339.84 165.557 l +340.286 165.553 l +340.733 165.549 l +341.179 165.546 l +341.626 165.542 l +342.072 165.538 l +342.518 165.535 l +342.965 165.531 l +343.411 165.528 l +343.858 165.524 l +344.304 165.521 l +344.75 165.517 l +345.197 165.514 l +345.643 165.511 l +346.09 165.507 l +346.536 165.504 l +346.982 165.501 l +347.429 165.497 l +347.875 165.494 l +348.322 165.491 l +348.768 165.488 l +349.214 165.485 l +349.661 165.482 l +350.107 165.479 l +350.554 165.476 l +351 165.473 l +351.446 165.47 l +351.893 165.467 l +352.339 165.464 l +352.786 165.461 l +353.232 165.458 l +353.678 165.456 l +354.125 165.453 l +354.571 165.45 l +355.018 165.447 l +355.464 165.445 l +355.91 165.442 l +356.357 165.439 l +356.803 165.437 l +357.25 165.434 l +357.696 165.432 l +358.142 165.429 l +358.589 165.426 l +359.035 165.424 l +359.482 165.422 l +359.928 165.419 l +360.374 165.417 l +360.821 165.414 l +361.267 165.412 l +361.714 165.41 l +362.16 165.407 l +362.606 165.405 l +363.053 165.403 l +363.499 165.4 l +363.946 165.398 l +364.392 165.396 l +364.838 165.394 l +365.285 165.392 l +365.731 165.39 l +366.178 165.387 l +366.624 165.385 l +367.07 165.383 l +367.517 165.381 l +367.963 165.379 l +368.41 165.377 l +368.856 165.375 l +369.302 165.373 l +369.749 165.371 l +370.195 165.369 l +370.642 165.367 l +371.088 165.365 l +371.534 165.364 l +371.981 165.362 l +372.427 165.36 l +372.874 165.358 l +373.32 165.356 l +373.766 165.354 l +374.213 165.353 l +374.659 165.351 l +375.106 165.349 l +375.552 165.347 l +375.998 165.346 l +376.445 165.344 l +376.891 165.342 l +377.338 165.341 l +377.784 165.339 l +378.23 165.337 l +378.677 165.336 l +379.123 165.334 l +379.57 165.333 l +380.016 165.331 l +380.462 165.33 l +380.909 165.328 l +381.355 165.327 l +381.802 165.325 l +382.248 165.324 l +382.694 165.322 l +383.141 165.321 l +383.587 165.319 l +384.034 165.318 l +384.48 165.316 l +384.926 165.315 l +385.373 165.314 l +385.819 165.312 l +386.266 165.311 l +386.712 165.31 l +387.158 165.308 l +387.605 165.307 l +388.051 165.306 l +388.498 165.304 l +388.944 165.303 l +389.39 165.302 l +389.837 165.301 l +390.283 165.299 l +390.73 165.298 l +391.176 165.297 l +391.622 165.296 l +392.069 165.295 l +392.515 165.293 l +392.962 165.292 l +393.408 165.291 l +393.854 165.29 l +394.301 165.289 l +394.747 165.288 l +395.194 165.287 l +395.64 165.285 l +396.086 165.284 l +396.533 165.283 l +396.979 165.282 l +397.426 165.281 l +397.872 165.28 l +398.318 165.279 l +398.765 165.278 l +399.211 165.277 l +399.658 165.276 l +400.104 165.275 l +400.55 165.274 l +400.997 165.273 l +401.443 165.272 l +401.89 165.271 l +402.336 165.27 l +402.782 165.269 l +403.229 165.268 l +403.675 165.268 l +404.122 165.267 l +404.568 165.266 l +405.014 165.265 l +405.461 165.264 l +405.907 165.263 l +406.354 165.262 l +406.8 165.261 l +407.246 165.261 l +407.693 165.26 l +408.139 165.259 l +408.586 165.258 l +409.032 165.257 l +409.478 165.256 l +409.925 165.256 l +410.371 165.255 l +410.818 165.254 l +411.264 165.253 l +411.71 165.253 l +412.157 165.252 l +412.603 165.251 l +413.05 165.25 l +413.496 165.25 l +413.942 165.249 l +414.389 165.248 l +414.835 165.247 l +415.282 165.247 l +415.728 165.246 l +416.174 165.245 l +416.621 165.245 l +417.067 165.244 l +417.514 165.243 l +417.96 165.243 l +418.406 165.242 l +418.853 165.241 l +419.299 165.241 l +419.746 165.24 l +420.192 165.239 l +420.638 165.239 l +421.085 165.238 l +421.531 165.238 l +421.978 165.237 l +422.424 165.236 l +422.87 165.236 l +423.317 165.235 l +423.763 165.235 l +424.21 165.234 l +424.656 165.233 l +425.102 165.233 l +425.549 165.232 l +425.995 165.232 l +426.442 165.231 l +426.888 165.231 l +427.334 165.23 l +427.781 165.23 l +428.227 165.229 l +428.674 165.228 l +429.12 165.228 l +429.566 165.227 l +430.013 165.227 l +430.459 165.226 l +430.906 165.226 l +431.352 165.225 l +431.798 165.225 l +432.245 165.224 l +432.691 165.224 l +433.138 165.224 l +433.584 165.223 l +434.03 165.223 l +434.477 165.222 l +434.923 165.222 l +435.37 165.221 l +435.816 165.221 l +436.262 165.22 l +436.709 165.22 l +437.155 165.219 l +437.602 165.219 l +438.048 165.219 l +438.494 165.218 l +438.941 165.218 l +439.387 165.217 l +439.834 165.217 l +440.28 165.217 l +440.726 165.216 l +441.173 165.216 l +441.619 165.215 l +442.066 165.215 l +442.512 165.215 l +442.958 165.214 l +443.405 165.214 l +443.851 165.213 l +444.298 165.213 l +444.744 165.213 l +445.19 165.212 l +445.637 165.212 l +446.083 165.212 l +446.53 165.211 l +446.976 165.211 l +447.422 165.211 l +447.869 165.21 l +448.315 165.21 l +448.762 165.21 l +449.208 165.209 l +449.654 165.209 l +450.101 165.209 l +450.547 165.208 l +450.994 165.208 l +451.44 165.208 l +451.886 165.207 l +452.333 165.207 l +452.779 165.207 l +453.226 165.206 l +453.672 165.206 l +454.118 165.206 l +454.565 165.206 l +455.011 165.205 l +455.458 165.205 l +455.904 165.205 l +456.35 165.204 l +456.797 165.204 l +457.243 165.204 l +457.69 165.204 l +458.136 165.203 l +458.582 165.203 l +459.029 165.203 l +459.475 165.203 l +459.922 165.202 l +460.368 165.202 l +460.814 165.202 l +461.261 165.202 l +461.707 165.201 l +462.154 165.201 l +462.6 165.201 l +463.046 165.201 l +463.493 165.2 l +463.939 165.2 l +464.386 165.2 l +464.832 165.2 l +465.278 165.199 l +465.725 165.199 l +466.171 165.199 l +466.618 165.199 l +467.064 165.198 l +467.51 165.198 l +467.957 165.198 l +468.403 165.198 l +468.85 165.198 l +469.296 165.197 l +469.742 165.197 l +470.189 165.197 l +470.635 165.197 l +471.082 165.197 l +471.528 165.196 l +471.974 165.196 l +472.421 165.196 l +472.867 165.196 l +473.314 165.196 l +473.76 165.195 l +474.206 165.195 l +474.653 165.195 l +475.099 165.195 l +475.546 165.195 l +475.992 165.194 l +476.438 165.194 l +476.885 165.194 l +477.331 165.194 l +477.778 165.194 l +478.224 165.194 l +478.67 165.193 l +479.117 165.193 l +479.563 165.193 l +480.01 165.193 l +480.456 165.193 l +480.902 165.193 l +481.349 165.192 l +481.795 165.192 l +482.242 165.192 l +482.688 165.192 l +483.134 165.192 l +483.581 165.192 l +484.027 165.192 l +484.474 165.191 l +484.92 165.191 l +485.366 165.191 l +485.813 165.191 l +486.259 165.191 l +486.706 165.191 l +487.152 165.191 l +487.598 165.19 l +488.045 165.19 l +488.491 165.19 l +488.938 165.19 l +489.384 165.19 l +489.83 165.19 l +490.277 165.19 l +490.723 165.189 l +491.17 165.189 l +491.616 165.189 l +492.062 165.189 l +492.509 165.189 l +492.955 165.189 l +493.402 165.189 l +493.848 165.189 l +494.294 165.188 l +494.741 165.188 l +495.187 165.188 l +495.634 165.188 l +496.08 165.188 l +496.526 165.188 l +496.973 165.188 l +497.419 165.188 l +497.866 165.188 l +498.312 165.187 l +498.758 165.187 l +499.205 165.187 l +499.651 165.187 l +500.098 165.187 l +500.544 165.187 l +500.99 165.187 l +501.437 165.187 l +501.883 165.187 l +502.33 165.186 l +502.776 165.186 l +503.222 165.186 l +503.669 165.186 l +504.115 165.186 l +504.562 165.186 l +505.008 165.186 l +505.454 165.186 l +505.901 165.186 l +506.347 165.186 l +506.794 165.186 l +507.24 165.185 l +507.686 165.185 l +508.133 165.185 l +508.579 165.185 l +509.026 165.185 l +509.472 165.185 l +509.918 165.185 l +510.365 165.185 l +510.811 165.185 l +511.258 165.185 l +511.704 165.185 l +512.15 165.184 l +512.597 165.184 l +513.043 165.184 l +513.49 165.184 l +513.936 165.184 l +514.382 165.184 l +514.829 165.184 l +515.275 165.184 l +515.722 165.184 l +516.168 165.184 l +516.614 165.184 l +517.061 165.184 l +517.507 165.184 l +517.954 165.184 l +stroke +grestore +0.000 0.502 0.000 setrgbcolor +gsave +446.4 101.647 72 165.176 clipbox +72 165.176 m +72.4464 165.176 l +72.8928 165.176 l +73.3392 165.176 l +73.7856 165.176 l +74.232 165.176 l +74.6784 165.176 l +75.1248 165.176 l +75.5712 165.176 l +76.0176 165.176 l +76.464 165.176 l +76.9104 165.176 l +77.3568 165.176 l +77.8032 165.176 l +78.2496 165.176 l +78.696 165.176 l +79.1424 165.176 l +79.5888 165.176 l +80.0352 165.176 l +80.4816 165.176 l +80.928 165.176 l +81.3744 165.176 l +81.8208 165.176 l +82.2672 165.176 l +82.7136 165.176 l +83.16 165.176 l +83.6064 165.176 l +84.0528 165.176 l +84.4992 165.176 l +84.9456 165.176 l +85.392 165.176 l +85.8384 165.176 l +86.2848 165.176 l +86.7312 165.176 l +87.1776 165.176 l +87.624 165.176 l +88.0704 165.176 l +88.5168 165.176 l +88.9632 165.176 l +89.4096 165.176 l +89.856 165.176 l +90.3024 165.176 l +90.7488 165.176 l +91.1952 165.176 l +91.6416 165.176 l +92.088 165.176 l +92.5344 165.176 l +92.9808 165.176 l +93.4272 165.176 l +93.8736 165.176 l +94.32 165.176 l +94.7664 165.176 l +95.2128 165.176 l +95.6592 165.176 l +96.1056 165.176 l +96.552 165.176 l +96.9984 165.176 l +97.4448 165.176 l +97.8912 165.176 l +98.3376 165.176 l +98.784 165.176 l +99.2304 165.176 l +99.6768 165.176 l +100.123 165.176 l +100.57 165.176 l +101.016 165.176 l +101.462 165.176 l +101.909 165.176 l +102.355 165.176 l +102.802 165.176 l +103.248 165.176 l +103.694 165.176 l +104.141 165.176 l +104.587 165.176 l +105.034 165.176 l +105.48 165.176 l +105.926 165.176 l +106.373 165.176 l +106.819 165.176 l +107.266 165.176 l +107.712 165.176 l +108.158 165.176 l +108.605 165.176 l +109.051 165.176 l +109.498 165.176 l +109.944 165.176 l +110.39 165.176 l +110.837 165.176 l +111.283 165.176 l +111.73 165.176 l +112.176 165.176 l +112.622 165.176 l +113.069 165.176 l +113.515 165.176 l +113.962 165.176 l +114.408 165.176 l +114.854 165.176 l +115.301 165.176 l +115.747 165.176 l +116.194 165.176 l +116.64 165.176 l +117.086 165.176 l +117.533 165.176 l +117.979 165.176 l +118.426 165.176 l +118.872 165.176 l +119.318 165.176 l +119.765 165.176 l +120.211 165.176 l +120.658 165.176 l +121.104 165.176 l +121.55 165.176 l +121.997 165.176 l +122.443 165.176 l +122.89 165.176 l +123.336 165.176 l +123.782 165.176 l +124.229 165.176 l +124.675 165.176 l +125.122 165.176 l +125.568 165.176 l +126.014 165.176 l +126.461 165.176 l +126.907 165.176 l +127.354 165.176 l +127.8 165.176 l +128.246 165.176 l +128.693 165.176 l +129.139 165.176 l +129.586 165.176 l +130.032 165.176 l +130.478 165.176 l +130.925 165.176 l +131.371 165.176 l +131.818 165.176 l +132.264 165.176 l +132.71 165.176 l +133.157 165.176 l +133.603 165.176 l +134.05 165.176 l +134.496 165.176 l +134.942 165.176 l +135.389 165.176 l +135.835 165.176 l +136.282 165.176 l +136.728 165.176 l +137.174 165.176 l +137.621 165.176 l +138.067 165.176 l +138.514 165.176 l +138.96 165.176 l +139.406 165.176 l +139.853 165.176 l +140.299 165.176 l +140.746 165.176 l +141.192 165.176 l +141.638 165.176 l +142.085 165.176 l +142.531 165.176 l +142.978 165.176 l +143.424 165.176 l +143.87 165.176 l +144.317 165.176 l +144.763 165.176 l +145.21 165.176 l +145.656 165.176 l +146.102 165.176 l +146.549 165.176 l +146.995 165.176 l +147.442 165.176 l +147.888 165.176 l +148.334 165.176 l +148.781 165.176 l +149.227 165.176 l +149.674 165.176 l +150.12 165.176 l +150.566 165.176 l +151.013 165.176 l +151.459 165.176 l +151.906 165.176 l +152.352 165.176 l +152.798 165.176 l +153.245 165.176 l +153.691 165.176 l +154.138 165.176 l +154.584 165.176 l +155.03 165.176 l +155.477 165.176 l +155.923 165.176 l +156.37 165.176 l +156.816 165.176 l +157.262 165.176 l +157.709 165.176 l +158.155 165.176 l +158.602 165.176 l +159.048 165.176 l +159.494 165.176 l +159.941 165.176 l +160.387 165.176 l +160.834 165.176 l +161.28 165.176 l +161.726 165.176 l +162.173 165.176 l +162.619 165.176 l +163.066 165.176 l +163.512 165.176 l +163.958 165.176 l +164.405 165.176 l +164.851 165.176 l +165.298 165.176 l +165.744 165.176 l +166.19 165.176 l +166.637 165.176 l +167.083 165.176 l +167.53 165.176 l +167.976 165.176 l +168.422 165.176 l +168.869 165.176 l +169.315 165.176 l +169.762 165.176 l +170.208 165.176 l +170.654 165.176 l +171.101 165.176 l +171.547 165.176 l +171.994 165.176 l +172.44 165.176 l +172.886 165.176 l +173.333 165.176 l +173.779 165.176 l +174.226 165.176 l +174.672 165.176 l +175.118 165.176 l +175.565 165.176 l +176.011 165.176 l +176.458 165.176 l +176.904 165.176 l +177.35 165.176 l +177.797 165.176 l +178.243 165.176 l +178.69 165.176 l +179.136 165.176 l +179.582 165.176 l +180.029 165.176 l +180.475 165.176 l +180.922 165.176 l +181.368 165.176 l +181.814 165.176 l +182.261 165.176 l +182.707 165.176 l +183.154 165.176 l +183.6 165.176 l +184.046 165.176 l +184.493 165.176 l +184.939 165.176 l +185.386 165.176 l +185.832 165.176 l +186.278 165.176 l +186.725 165.176 l +187.171 165.176 l +187.618 165.176 l +188.064 165.176 l +188.51 165.176 l +188.957 165.176 l +189.403 165.176 l +189.85 165.176 l +190.296 165.176 l +190.742 165.176 l +191.189 165.176 l +191.635 165.176 l +192.082 165.176 l +192.528 165.176 l +192.974 165.176 l +193.421 165.176 l +193.867 165.176 l +194.314 165.176 l +194.76 165.176 l +195.206 165.176 l +195.653 165.176 l +196.099 165.176 l +196.546 165.176 l +196.992 165.176 l +197.438 165.176 l +197.885 165.176 l +198.331 165.176 l +198.778 165.176 l +199.224 165.176 l +199.67 165.176 l +200.117 165.176 l +200.563 165.176 l +201.01 165.176 l +201.456 165.176 l +201.902 165.176 l +202.349 165.176 l +202.795 165.176 l +203.242 165.176 l +203.688 165.176 l +204.134 165.176 l +204.581 165.176 l +205.027 165.176 l +205.474 165.176 l +205.92 165.176 l +206.366 168.903 l +206.813 172.411 l +207.259 175.711 l +207.706 178.814 l +208.152 181.73 l +208.598 184.467 l +209.045 187.036 l +209.491 189.445 l +209.938 191.702 l +210.384 193.814 l +210.83 195.789 l +211.277 197.635 l +211.723 199.357 l +212.17 200.963 l +212.616 202.457 l +213.062 203.847 l +213.509 205.136 l +213.955 206.332 l +214.402 207.437 l +214.848 208.458 l +215.294 209.399 l +215.741 210.263 l +216.187 211.055 l +216.634 211.778 l +217.08 212.437 l +217.526 213.034 l +217.973 213.574 l +218.419 214.058 l +218.866 214.491 l +219.312 214.875 l +219.758 215.212 l +220.205 215.505 l +220.651 215.756 l +221.098 215.969 l +221.544 216.144 l +221.99 216.285 l +222.437 216.392 l +222.883 216.469 l +223.33 216.516 l +223.776 216.535 l +224.222 216.528 l +224.669 216.497 l +225.115 216.443 l +225.562 216.367 l +226.008 216.27 l +226.454 216.155 l +226.901 216.021 l +227.347 215.871 l +227.794 215.704 l +228.24 215.523 l +228.686 215.328 l +229.133 215.12 l +229.579 214.9 l +230.026 214.669 l +230.472 214.427 l +230.918 214.175 l +231.365 213.914 l +231.811 213.644 l +232.258 213.367 l +232.704 213.083 l +233.15 212.792 l +233.597 212.494 l +234.043 212.191 l +234.49 211.883 l +234.936 211.571 l +235.382 211.253 l +235.829 210.932 l +236.275 210.608 l +236.722 210.28 l +237.168 209.95 l +237.614 209.617 l +238.061 209.282 l +238.507 208.945 l +238.954 208.606 l +239.4 208.266 l +239.846 207.925 l +240.293 207.583 l +240.739 207.24 l +241.186 206.897 l +241.632 206.554 l +242.078 206.21 l +242.525 205.8... [truncated message content] |
From: <jd...@us...> - 2007-10-26 19:44:09
|
Revision: 4022 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4022&view=rev Author: jdh2358 Date: 2007-10-26 12:44:07 -0700 (Fri, 26 Oct 2007) Log Message: ----------- added some more workbook files Added Paths: ----------- trunk/py4science/workbook/glass_dots.tex trunk/py4science/workbook/intro_linalg.tex trunk/py4science/workbook/intro_sigproc.tex Added: trunk/py4science/workbook/glass_dots.tex =================================================================== --- trunk/py4science/workbook/glass_dots.tex (rev 0) +++ trunk/py4science/workbook/glass_dots.tex 2007-10-26 19:44:07 UTC (rev 4022) @@ -0,0 +1,52 @@ +\section{Glass Moir\'e Patterns} +\label{sec:glass_patterns} + +When a random dot pattern is scaled, rotated, and superimposed over +the original dots, interesting visual patterns known as Glass Patterns +emerge\footnote{L. Glass. 'Moir\'e effect from random dots' Nature 223, + 578580 (1969).} In this exercise, we generate random dot fields +using numpy's uniform distribution function, and apply +transformations to the random dot field using a scale $\mathbf{S}$ +and rotation $\mathbf{R}$ matrix $\mathbf{X_2} = \mathbf{S} \mathbf{R} +\mathbf{X_1}$. + +If the scale and rotation factors are small, the transformation is +analogous to a single step in the numerical solution of a 2D ODE, and +the plot of both $\mathbf{X_1}$ and $\mathbf{X_2}$ will reveal the +structure of the vecotr field flow around the fixed point (the +invariant under the transformation); see for example the +\textit{stable focus}, aka \textit{spiral}, in +Figure~\ref{fig:glass_dots1}. + +The eigenvalues of the tranformation matrix $\mathbf{M} = +\mathbf{S}\mathbf{R}$ determine the type of fix point: +\textit{center}, \textit{stable focus}, \textit{saddle node}, +etc\dots. For example, if the two eigenvalues are real but differing +in signs, the fixed point is a \textit{saddle node}. If the real +parts of both eigenvalues are negative and the eigenvalues are +complex, the fixed point is a \textit{stable focus}. The complex part +of the eigenvalue determines whether there is any rotation in the +matrix transformation, so another way to look at this is to break out +the scaling and rotation components of the transformation +$\textbf{M}$. If there is a rotation component, then the fixed point +will be a \textit{center} or a \textit{focus}. If the scaling +components are both one, the rotation will be a \textit{center}, if +they are both less than one (contraction), it will be a \textit{stable + focus}. Likewise, if there is no rotation component, the fixed +point will be a \textit{node}, and the scaling components will +determine the type of node. If both are less than one, we have a +\textit{stable node}, if one is greater than one and the other less +than one, we have a \textit{saddle node}. + +\lstinputlisting[label=code:glass_dots1_skel,caption={IGNORED}]{skel/glass_dots1_skel.py} + + + +\begin{center}% +\begin{figure} +\begin{centering}\includegraphics[width=4in]{fig/glass_dots1}\par\end{centering} + + +\caption{\label{fig:glass_dots1}Glass pattern showing a stable focus} +\end{figure} +\par\end{center} Added: trunk/py4science/workbook/intro_linalg.tex =================================================================== --- trunk/py4science/workbook/intro_linalg.tex (rev 0) +++ trunk/py4science/workbook/intro_linalg.tex 2007-10-26 19:44:07 UTC (rev 4022) @@ -0,0 +1,49 @@ +Like matlab, numpy and scipy have support for fast linear algebra +built upon the highly optimized LAPACK, BLAS and ATLAS fortran linear +algebra libraries. Unlike Matlab, in which everything is a matrix or +vector, and the '*' operator always means matrix multiple, the default +object in numpy is an \texttt{array}, and the '*' operator on arrays means +element-wise multiplication. + +Instead, numpy provides a \texttt{matrix} class if you want to do +standard matrix-matrix multiplication with the '*' operator, or the +\texttt{dot} function if you want to do matrix multiplies with plain +arrays. The basic linear algebra functionality is found in +\texttt{numpy.linalg} + +\begin{lstlisting} +In [1]: import numpy as npy +In [2]: import numpy.linalg as linalg + +# X and Y are arrays +In [3]: X = npy.random.rand(3,3) +In [4]: Y = npy.random.rand(3,3) + +# * operator is element wise multiplication, not matrix matrix +In [5]: print X*Y +[[ 0.00973215 0.18086148 0.05539387] + [ 0.00817516 0.63354021 0.2017993 ] + [ 0.34287698 0.25788149 0.15508982]] + +# the dot function will use optimized LAPACK to do matrix-matix +# multiply +In [6]: print npy.dot(X, Y) +[[ 0.10670678 0.68340331 0.39236388] + [ 0.27840642 1.14561885 0.62192324] + [ 0.48192134 1.32314856 0.51188578]] + +# the matrix class will create matrix objects that support matrix +# multiplication with * +In [7]: Xm = npy.matrix(X) +In [8]: Ym = npy.matrix(Y) +In [9]: print Xm*Ym +[[ 0.10670678 0.68340331 0.39236388] + [ 0.27840642 1.14561885 0.62192324] + [ 0.48192134 1.32314856 0.51188578]] + +# the linalg module provides functions to compute eigenvalues, +# determinants, etc. See help(linalg) for more info +In [10]: print linalg.eigvals(X) +[ 1.46131600+0.j 0.46329211+0.16501143j 0.46329211-0.16501143j] + +\end{lstlisting} Added: trunk/py4science/workbook/intro_sigproc.tex =================================================================== --- trunk/py4science/workbook/intro_sigproc.tex (rev 0) +++ trunk/py4science/workbook/intro_sigproc.tex 2007-10-26 19:44:07 UTC (rev 4022) @@ -0,0 +1,15 @@ +\texttt{numpy} and \texttt{scipy} provide many of the essential tools +for digital signal processing. \texttt{scipy.signal} provides basic +tools for digital filter design and filtering (eg Butterworth +filters), a linear systems toolkit, standard waveforms such as square +waves, and saw tooth functions, and some basic wavelet functionality. +\texttt{scipy.fftpack} provides a suite of tools for Fourier domain +analysis, including 1D, 2D, and ND discrete fourier transform and +inverse functions, in addition to other tools such as analytic signal +representations via the Hilbert trasformation (\texttt{numpy.fft} also +provides basic FFT functions). \texttt{pylab} provides Matlab +compatible functions for computing and plotting standard time series +analyses, such as historgrams (\texttt{hist}), auto and cross +correlations (\texttt{acorr} and \texttt{xcorr}), power spectra and +coherence spectra (\texttt{psd}, \texttt{csd}, \texttt{cohere} and +\texttt{specgram}. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jd...@us...> - 2007-10-26 19:55:27
|
Revision: 4026 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4026&view=rev Author: jdh2358 Date: 2007-10-26 12:55:21 -0700 (Fri, 26 Oct 2007) Log Message: ----------- updated workbook Modified Paths: -------------- trunk/py4science/workbook/convolution.tex trunk/py4science/workbook/fft_imdenoise.tex trunk/py4science/workbook/main.pdf trunk/py4science/workbook/quad_newton.tex trunk/py4science/workbook/trapezoid.tex Modified: trunk/py4science/workbook/convolution.tex =================================================================== --- trunk/py4science/workbook/convolution.tex 2007-10-26 19:50:21 UTC (rev 4025) +++ trunk/py4science/workbook/convolution.tex 2007-10-26 19:55:21 UTC (rev 4026) @@ -1,3 +1,5 @@ +\section{Convolution} +\label{sec:convolution} \begin{center}% Modified: trunk/py4science/workbook/fft_imdenoise.tex =================================================================== --- trunk/py4science/workbook/fft_imdenoise.tex 2007-10-26 19:50:21 UTC (rev 4025) +++ trunk/py4science/workbook/fft_imdenoise.tex 2007-10-26 19:55:21 UTC (rev 4026) @@ -1,3 +1,6 @@ +\section{FFT Image Denoising} +\label{sec:fft_imdenoise} + Convolution of an input with with a linear filter in the termporal or spatial domain is equivalent to multiplication by the fourier transforms of the input and the filter in the spectral domain. This Modified: trunk/py4science/workbook/main.pdf =================================================================== --- trunk/py4science/workbook/main.pdf 2007-10-26 19:50:21 UTC (rev 4025) +++ trunk/py4science/workbook/main.pdf 2007-10-26 19:55:21 UTC (rev 4026) @@ -90,9 +90,21 @@ (Chapter 6. Signal processing) endobj 65 0 obj -<< /S /GoTo /D [66 0 R /Fit ] >> +<< /S /GoTo /D (section.6.1) >> endobj -68 0 obj << +68 0 obj +(1. Convolution) +endobj +69 0 obj +<< /S /GoTo /D (section.6.2) >> +endobj +72 0 obj +(2. FFT Image Denoising) +endobj +73 0 obj +<< /S /GoTo /D [74 0 R /Fit ] >> +endobj +76 0 obj << /Length 292 /Filter /FlateDecode >> @@ -101,24 +113,24 @@ \xEAT\x89H\x94\xA1\xA4\xA1\x8DJm\xB5\xFCz\xEC\x86VEb\xA8,\xD9:/\xDF\x99\xCAY0\xE0\x95Ҍ\x8C\x81`\x89X\xBB\xAD[e\xEC\xA1\xC2_\x8E\xD5(\x9F\x8BP\xE9\xB0B\xCD\xE4\xB9\xC9MS]M\x8Cch\xC1X\xAFY\xF3δR\xA0\x9D\xAF\x99G\xB5Ɋf\xF9\xC2gâ\xDD\xF5\xED\xE2CH\xE3\x89?\xB5}\x85Q|'\x90\xF7B"\x9F+c\xDBz~\x9B\xB6\xE5\xE6s\xE3J\xBC6SF\xD11\xA9P+:8\xF7q\xB4\x9C}f\x91\xACS<\xD0e |
From: <jd...@us...> - 2007-10-26 20:21:36
|
Revision: 4031 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4031&view=rev Author: jdh2358 Date: 2007-10-26 13:21:23 -0700 (Fri, 26 Oct 2007) Log Message: ----------- added stats workbooks skel Modified Paths: -------------- trunk/py4science/workbook/main.pdf trunk/py4science/workbook/main.tex Added Paths: ----------- trunk/py4science/workbook/intro_stats.tex trunk/py4science/workbook/stats_descriptives.tex trunk/py4science/workbook/stats_distributions.tex Added: trunk/py4science/workbook/intro_stats.tex =================================================================== --- trunk/py4science/workbook/intro_stats.tex (rev 0) +++ trunk/py4science/workbook/intro_stats.tex 2007-10-26 20:21:23 UTC (rev 4031) @@ -0,0 +1 @@ +TODO \ No newline at end of file Modified: trunk/py4science/workbook/main.pdf =================================================================== --- trunk/py4science/workbook/main.pdf 2007-10-26 20:20:12 UTC (rev 4030) +++ trunk/py4science/workbook/main.pdf 2007-10-26 20:21:23 UTC (rev 4031) @@ -102,9 +102,27 @@ (2. FFT Image Denoising) endobj 73 0 obj -<< /S /GoTo /D [74 0 R /Fit ] >> +<< /S /GoTo /D (chapter.7) >> endobj -76 0 obj << +76 0 obj +(Chapter 7. Statistics) +endobj +77 0 obj +<< /S /GoTo /D (section.7.1) >> +endobj +80 0 obj +(1. Descriptive statistics) +endobj +81 0 obj +<< /S /GoTo /D (section.7.2) >> +endobj +84 0 obj +(2. Statistical distributions) +endobj +85 0 obj +<< /S /GoTo /D [86 0 R /Fit ] >> +endobj +88 0 obj << /Length 292 /Filter /FlateDecode >> @@ -113,24 +131,24 @@ \xEAT\x89H\x94\xA1\xA4\xA1\x8DJm\xB5\xFCz\xEC\x86VEb\xA8,\xD9:/\xDF\x99\xCAY0\xE0\x95Ҍ\x8C\x81`\x89X\xBB\xAD[e\xEC\xA1\xC2_\x8E\xD5(\x9F\x8BP\xE9\xB0B\xCD\xE4\xB9\xC9MS]M\x8Cch\xC1X\xAFY\xF3δR\xA0\x9D\xAF\x99G\xB5Ɋf\xF9\xC2gâ\xDD\xF5\xED\xE2CH\xE3\x89?\xB5}\x85Q|'\x90\xF7B"\x9F+c\xDBz~\x9B\xB6\xE5\xE6s\xE3J\xBC6SF\xD11\xA9P+:8\xF7q\xB4\x9C}f\x91\xACS<\xD0e |
From: <jd...@us...> - 2007-10-27 04:09:16
|
Revision: 4033 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4033&view=rev Author: jdh2358 Date: 2007-10-26 21:09:13 -0700 (Fri, 26 Oct 2007) Log Message: ----------- late nite pomona workbook build Modified Paths: -------------- trunk/py4science/workbook/convolution.tex trunk/py4science/workbook/intro_stats.tex trunk/py4science/workbook/main.pdf trunk/py4science/workbook/stats_distributions.tex Modified: trunk/py4science/workbook/convolution.tex =================================================================== --- trunk/py4science/workbook/convolution.tex 2007-10-27 04:00:59 UTC (rev 4032) +++ trunk/py4science/workbook/convolution.tex 2007-10-27 04:09:13 UTC (rev 4033) @@ -4,7 +4,7 @@ The output of a linear system is given by the convolution of its impulse response function with the input. Mathematically \[ - y(t) = \int_0^\t x(\tau)r(t-\tau)d\tau + y(t) = \int_0^t x(\tau)r(t-\tau)d\tau \] This fundamental relationship lies at the heart of linear systems analysis. It is used to model the dynamics of calcium buffers in @@ -85,7 +85,7 @@ function $r$ by studying the amplitude and phase spectrum of its transform $R$. In the example below, however, we simply use the multiplication property to perform the same convolution in Fourier -space to confirm the numerical result from \textt{numpy.convolve}. +space to confirm the numerical result from \texttt{numpy.convolve}. \lstinputlisting[label=code:convolution_demo,caption={IGNORED}]{skel/convolution_demo_skel.py} Modified: trunk/py4science/workbook/intro_stats.tex =================================================================== --- trunk/py4science/workbook/intro_stats.tex 2007-10-27 04:00:59 UTC (rev 4032) +++ trunk/py4science/workbook/intro_stats.tex 2007-10-27 04:09:13 UTC (rev 4033) @@ -1,16 +1,16 @@ -\textt{R}, a statistical package based on \textt{S}, is viewd by some +\texttt{R}, a statistical package based on \texttt{S}, is viewd by some as the best statistical software on the planet, and in the open source world it is the clear choice for sophisticated statistical analysis. -Like python, \textt{R} is an interpreted language written in C with an +Like python, \texttt{R} is an interpreted language written in C with an interactive shell. Unlike python, which is a general purpose -programming language, \textt{R} is a specialized statistical language. +programming language, \texttt{R} is a specialized statistical language. Since python is a excellent glue language, with facilities for providing a transparent interface to FORTRAN, C, C++ and other languages, it should come as no surprise that you can harness -\textt{R}'s immense statistical power from python, through the +\texttt{R}'s immense statistical power from python, through the \texttt{rpy} third part extension library. -However, \textt{R} is not without its warts. As a language, it lacks +However, \texttt{R} is not without its warts. As a language, it lacks python's elegance and advanced programming constructs and idioms. It is also GPL, which means you cannot distribute code based upon it unhindered: the code you distribute must be GPL as well (python, and @@ -19,10 +19,10 @@ application). Fortunately, the core tools scientific libraries for python (primarily -\textt{numpy} and \texttt{scipy.stats}) provide a wide array of +\texttt{numpy} and \texttt{scipy.stats}) provide a wide array of statistical tools, from basic descriptive statistics (mean, variance, skew, kurtosis, correlation, \dots) to hypothesis testing (t-tests, -$\Chi$-Square, analysis of variance, general linear models, \dots) to +$\chi$-Square, analysis of variance, general linear models, \dots) to analytical and numerical tools for working with almost every discrete and continuous statistical distribution you can think of (normal, gamma, poisson, weibull, lognormal, levy stable, \dots). Modified: trunk/py4science/workbook/main.pdf =================================================================== --- trunk/py4science/workbook/main.pdf 2007-10-27 04:00:59 UTC (rev 4032) +++ trunk/py4science/workbook/main.pdf 2007-10-27 04:09:13 UTC (rev 4033) @@ -171,7 +171,7 @@ /ProcSet [ /PDF ] >> endobj 104 0 obj << -/Length 1521 +/Length 1520 /Filter /FlateDecode >> stream @@ -181,8 +181,9 @@ \xBF;\xF8N븫+\xA9K\xE1(\xDC\xC7N\xD67\xA5\x94\x84\xB1N0}k\xCC\xE3V?L\x99\xD9qOB3a\xA1\xA3X\xEEI4\xC1\x94'#WK\x9F\xD8\xCE`\x87CqySKu9\x9C\x9D_\xEB\xAB\֫\xB3\x8B\xA6g\x9D\xE9 УnC\xE5慜\xEF\xD5/\x9B\xAA\x8C\xF2n\xA4}u#j&\x9EV\xDFN<\xFA*A\xA8ۅ,\xD6M0\xA5o\x84\xE1\xC2\xF9\xE0\xF4-\x9D]A\xD1ݿ\xE7b7 |
From: <jd...@us...> - 2007-10-27 04:32:05
|
Revision: 4035 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4035&view=rev Author: jdh2358 Date: 2007-10-26 21:31:54 -0700 (Fri, 26 Oct 2007) Log Message: ----------- added andy Modified Paths: -------------- trunk/py4science/workbook/main.pdf trunk/py4science/workbook/main.tex Modified: trunk/py4science/workbook/main.pdf =================================================================== --- trunk/py4science/workbook/main.pdf 2007-10-27 04:10:21 UTC (rev 4034) +++ trunk/py4science/workbook/main.pdf 2007-10-27 04:31:54 UTC (rev 4035) @@ -123,13 +123,14 @@ << /S /GoTo /D [86 0 R /Fit ] >> endobj 88 0 obj << -/Length 292 +/Length 321 /Filter /FlateDecode >> stream -xڍQ;O\xC30\xDE\xF3+<ڃ\x9F_\x8F\xBC -\xEAT\x89H\x94\xA1\xA4\xA1\x8DJm\xB5\xFCz\xEC\x86VEb\xA8,\xD9:/\xDF\x99\xCAY0\xE0\x95Ҍ\x8C\x81`\x89X\xBB\xAD[e\xEC\xA1\xC2_\x8E\xD5(\x9F\x8BP\xE9\xB0B\xCD\xE4\xB9\xC9MS]M\x8Cch\xC1X\xAFY\xF3δR\xA0\x9D\xAF\x99G\xB5Ɋf\xF9\xC2gâ\xDD\xF5\xED\xE2CH\xE3\x89?\xB5}\x85Q|'\x90\xF7B"\x9F+c\xDBz~\x9B\xB6\xE5\xE6s\xE3J\xBC6SF\xD11\xA9P+:8\xF7q\xB4\x9C}f\x91\xACS<\xD0e |
From: <jd...@us...> - 2007-10-30 19:14:22
|
Revision: 4065 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4065&view=rev Author: jdh2358 Date: 2007-10-30 12:14:17 -0700 (Tue, 30 Oct 2007) Log Message: ----------- added lotka volterra skeleton to workbook Modified Paths: -------------- trunk/py4science/workbook/main.tex Added Paths: ----------- trunk/py4science/workbook/fig/lotka_volterra.eps trunk/py4science/workbook/fig/lotka_volterra.png trunk/py4science/workbook/intro_dynsys.tex trunk/py4science/workbook/lotka_volterra.tex Added: trunk/py4science/workbook/fig/lotka_volterra.eps =================================================================== --- trunk/py4science/workbook/fig/lotka_volterra.eps (rev 0) +++ trunk/py4science/workbook/fig/lotka_volterra.eps 2007-10-30 19:14:17 UTC (rev 4065) @@ -0,0 +1,12596 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Title: lotka_volterra.eps +%%Creator: matplotlib version 0.90.1, http://matplotlib.sourceforge.net/ +%%CreationDate: Tue Oct 30 14:09:28 2007 +%%Orientation: portrait +%%BoundingBox: 18 180 594 612 +%%EndComments +%%BeginProlog +/mpldict 8 dict def +mpldict begin +/m { moveto } bind def +/l { lineto } bind def +/r { rlineto } bind def +/box { +m +1 index 0 r +0 exch r +neg 0 r +closepath +} bind def +/clipbox { +box +clip +newpath +} bind def +/ellipse { +newpath +matrix currentmatrix 7 1 roll +translate +scale +0 0 1 5 3 roll arc +setmatrix +closepath +} bind def +/unitcircle { +newpath +-1. 0. moveto +-1.0 0.552284749831 -0.552284749831 1.0 0.0 1.0 curveto +0.552284749831 1.0 1.0 0.552284749831 1.0 0.0 curveto +1.0 -0.552284749831 0.552284749831 -1.0 0.0 -1.0 curveto +-0.552284749831 -1.0 -1.0 -0.552284749831 -1.0 0.0 curveto +closepath +} bind def +%!PS-Adobe-3.0 Resource-Font +%%Title: Bitstream Vera Sans +%%Copyright: Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. +%%Creator: Converted from TrueType by PPR +25 dict begin +/_d{bind def}bind def +/_m{moveto}_d +/_l{lineto}_d +/_cl{closepath eofill}_d +/_c{curveto}_d +/_sc{7 -1 roll{setcachedevice}{pop pop pop pop pop pop}ifelse}_d +/_e{exec}_d +/FontName /BitstreamVeraSans-Roman def +/PaintType 0 def +/FontMatrix[.001 0 0 .001 0 0]def +/FontBBox[-182 -235 1287 928]def +/FontType 3 def +/Encoding StandardEncoding def +/FontInfo 10 dict dup begin +/FamilyName (Bitstream Vera Sans) def +/FullName (Bitstream Vera Sans) def +/Notice (Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc.) def +/Weight (Roman) def +/Version (Release 1.10) def +/ItalicAngle 0.0 def +/isFixedPitch false def +/UnderlinePosition -213 def +/UnderlineThickness 143 def +end readonly def +/CharStrings 31 dict dup begin +/space{318 0 0 0 0 0 _sc +}_d +/parenleft{390 0 86 -131 310 759 _sc +310 759 _m +266 683 234 609 213 536 _c +191 463 181 389 181 314 _c +181 238 191 164 213 91 _c +234 17 266 -56 310 -131 _c +232 -131 _l +183 -54 146 20 122 94 _c +98 168 86 241 86 314 _c +86 386 98 459 122 533 _c +146 607 182 682 232 759 _c +310 759 _l +_cl}_d +/parenright{390 0 80 -131 304 759 _sc +80 759 _m +158 759 _l +206 682 243 607 267 533 _c +291 459 304 386 304 314 _c +304 241 291 168 267 94 _c +243 20 206 -54 158 -131 _c +80 -131 _l +123 -56 155 17 177 91 _c +198 164 209 238 209 314 _c +209 389 198 463 177 536 _c +155 609 123 683 80 759 _c +_cl}_d +/zero{636 0 66 -13 570 742 _sc +318 664 _m +267 664 229 639 203 589 _c +177 539 165 464 165 364 _c +165 264 177 189 203 139 _c +229 89 267 64 318 64 _c +369 64 407 89 433 139 _c +458 189 471 264 471 364 _c +471 464 458 539 433 589 _c +407 639 369 664 318 664 _c +318 742 _m +399 742 461 709 505 645 _c +548 580 570 486 570 364 _c +570 241 548 147 505 83 _c +461 19 399 -13 318 -13 _c +236 -13 173 19 130 83 _c +87 147 66 241 66 364 _c +66 486 87 580 130 645 _c +173 709 236 742 318 742 _c +_cl}_d +/one{636 0 110 0 544 729 _sc +124 83 _m +285 83 _l +285 639 _l +110 604 _l +110 694 _l +284 729 _l +383 729 _l +383 83 _l +544 83 _l +544 0 _l +124 0 _l +124 83 _l +_cl}_d +/two{{636 0 73 0 536 742 _sc +192 83 _m +536 83 _l +536 0 _l +73 0 _l +73 83 _l +110 121 161 173 226 239 _c +290 304 331 346 348 365 _c +380 400 402 430 414 455 _c +426 479 433 504 433 528 _c +433 566 419 598 392 622 _c +365 646 330 659 286 659 _c +255 659 222 653 188 643 _c +154 632 117 616 78 594 _c +78 694 _l +118 710 155 722 189 730 _c +223 738 255 742 284 742 _c +359 742 419 723 464 685 _c +509 647 532 597 532 534 _c +532 504 526 475 515 449 _c +504 422 484 390 454 354 _c +446 344 420 317 376 272 _c +332 227 271 164 192 83 _c +_cl}_e}_d +/three{{636 0 76 -13 556 742 _sc +406 393 _m +453 383 490 362 516 330 _c +542 298 556 258 556 212 _c +556 140 531 84 482 45 _c +432 6 362 -13 271 -13 _c +240 -13 208 -10 176 -4 _c +144 1 110 10 76 22 _c +76 117 _l +103 101 133 89 166 81 _c +198 73 232 69 268 69 _c +330 69 377 81 409 105 _c +441 129 458 165 458 212 _c +458 254 443 288 413 312 _c +383 336 341 349 287 349 _c +202 349 _l +202 430 _l +291 430 _l +339 430 376 439 402 459 _c +428 478 441 506 441 543 _c +441 580 427 609 401 629 _c +374 649 336 659 287 659 _c +260 659 231 656 200 650 _c +169 644 135 635 98 623 _c +98 711 _l +135 721 170 729 203 734 _c +235 739 266 742 296 742 _c +}_e{370 742 429 725 473 691 _c +517 657 539 611 539 553 _c +539 513 527 479 504 451 _c +481 423 448 403 406 393 _c +_cl}_e}_d +/four{636 0 49 0 580 729 _sc +378 643 _m +129 254 _l +378 254 _l +378 643 _l +352 729 _m +476 729 _l +476 254 _l +580 254 _l +580 172 _l +476 172 _l +476 0 _l +378 0 _l +378 172 _l +49 172 _l +49 267 _l +352 729 _l +_cl}_d +/five{{636 0 77 -13 549 729 _sc +108 729 _m +495 729 _l +495 646 _l +198 646 _l +198 467 _l +212 472 227 476 241 478 _c +255 480 270 482 284 482 _c +365 482 429 459 477 415 _c +525 370 549 310 549 234 _c +549 155 524 94 475 51 _c +426 8 357 -13 269 -13 _c +238 -13 207 -10 175 -6 _c +143 -1 111 6 77 17 _c +77 116 _l +106 100 136 88 168 80 _c +199 72 232 69 267 69 _c +323 69 368 83 401 113 _c +433 143 450 183 450 234 _c +450 284 433 324 401 354 _c +368 384 323 399 267 399 _c +241 399 214 396 188 390 _c +162 384 135 375 108 363 _c +108 729 _l +_cl}_e}_d +/six{{636 0 70 -13 573 742 _sc +330 404 _m +286 404 251 388 225 358 _c +199 328 186 286 186 234 _c +186 181 199 139 225 109 _c +251 79 286 64 330 64 _c +374 64 409 79 435 109 _c +461 139 474 181 474 234 _c +474 286 461 328 435 358 _c +409 388 374 404 330 404 _c +526 713 _m +526 623 _l +501 635 476 644 451 650 _c +425 656 400 659 376 659 _c +310 659 260 637 226 593 _c +192 549 172 482 168 394 _c +187 422 211 444 240 459 _c +269 474 301 482 336 482 _c +409 482 467 459 509 415 _c +551 371 573 310 573 234 _c +573 159 550 99 506 54 _c +462 9 403 -13 330 -13 _c +246 -13 181 19 137 83 _c +92 147 70 241 70 364 _c +70 479 97 571 152 639 _c +206 707 280 742 372 742 _c +}_e{396 742 421 739 447 735 _c +472 730 498 723 526 713 _c +_cl}_e}_d +/eight{{636 0 68 -13 568 742 _sc +318 346 _m +271 346 234 333 207 308 _c +180 283 167 249 167 205 _c +167 161 180 126 207 101 _c +234 76 271 64 318 64 _c +364 64 401 76 428 102 _c +455 127 469 161 469 205 _c +469 249 455 283 429 308 _c +402 333 365 346 318 346 _c +219 388 _m +177 398 144 418 120 447 _c +96 476 85 511 85 553 _c +85 611 105 657 147 691 _c +188 725 245 742 318 742 _c +390 742 447 725 489 691 _c +530 657 551 611 551 553 _c +551 511 539 476 515 447 _c +491 418 459 398 417 388 _c +464 377 501 355 528 323 _c +554 291 568 251 568 205 _c +568 134 546 80 503 43 _c +459 5 398 -13 318 -13 _c +237 -13 175 5 132 43 _c +89 80 68 134 68 205 _c +68 251 81 291 108 323 _c +134 355 171 377 219 388 _c +}_e{183 544 _m +183 506 194 476 218 455 _c +242 434 275 424 318 424 _c +360 424 393 434 417 455 _c +441 476 453 506 453 544 _c +453 582 441 611 417 632 _c +393 653 360 664 318 664 _c +275 664 242 653 218 632 _c +194 611 183 582 183 544 _c +_cl}_e}_d +/a{{613 0 60 -13 522 560 _sc +343 275 _m +270 275 220 266 192 250 _c +164 233 150 205 150 165 _c +150 133 160 107 181 89 _c +202 70 231 61 267 61 _c +317 61 357 78 387 114 _c +417 149 432 196 432 255 _c +432 275 _l +343 275 _l +522 312 _m +522 0 _l +432 0 _l +432 83 _l +411 49 385 25 355 10 _c +325 -5 287 -13 243 -13 _c +187 -13 142 2 109 33 _c +76 64 60 106 60 159 _c +60 220 80 266 122 298 _c +163 329 224 345 306 345 _c +432 345 _l +432 354 _l +432 395 418 427 391 450 _c +364 472 326 484 277 484 _c +245 484 215 480 185 472 _c +155 464 127 453 100 439 _c +100 522 _l +}_e{132 534 164 544 195 550 _c +226 556 256 560 286 560 _c +365 560 424 539 463 498 _c +502 457 522 395 522 312 _c +_cl}_e}_d +/b{{635 0 91 -13 580 760 _sc +487 273 _m +487 339 473 390 446 428 _c +418 466 381 485 334 485 _c +286 485 249 466 222 428 _c +194 390 181 339 181 273 _c +181 207 194 155 222 117 _c +249 79 286 61 334 61 _c +381 61 418 79 446 117 _c +473 155 487 207 487 273 _c +181 464 _m +199 496 223 520 252 536 _c +281 552 316 560 356 560 _c +422 560 476 533 518 481 _c +559 428 580 359 580 273 _c +580 187 559 117 518 65 _c +476 13 422 -13 356 -13 _c +316 -13 281 -5 252 10 _c +223 25 199 49 181 82 _c +181 0 _l +91 0 _l +91 760 _l +181 760 _l +181 464 _l +_cl}_e}_d +/c{{550 0 55 -13 488 560 _sc +488 526 _m +488 442 _l +462 456 437 466 411 473 _c +385 480 360 484 334 484 _c +276 484 230 465 198 428 _c +166 391 150 339 150 273 _c +150 206 166 154 198 117 _c +230 80 276 62 334 62 _c +360 62 385 65 411 72 _c +437 79 462 90 488 104 _c +488 21 _l +462 9 436 0 410 -5 _c +383 -10 354 -13 324 -13 _c +242 -13 176 12 128 64 _c +79 115 55 185 55 273 _c +55 362 79 432 128 483 _c +177 534 244 560 330 560 _c +358 560 385 557 411 551 _c +437 545 463 537 488 526 _c +_cl}_e}_d +/d{{635 0 55 -13 544 760 _sc +454 464 _m +454 760 _l +544 760 _l +544 0 _l +454 0 _l +454 82 _l +435 49 411 25 382 10 _c +353 -5 319 -13 279 -13 _c +213 -13 159 13 117 65 _c +75 117 55 187 55 273 _c +55 359 75 428 117 481 _c +159 533 213 560 279 560 _c +319 560 353 552 382 536 _c +411 520 435 496 454 464 _c +148 273 _m +148 207 161 155 188 117 _c +215 79 253 61 301 61 _c +348 61 385 79 413 117 _c +440 155 454 207 454 273 _c +454 339 440 390 413 428 _c +385 466 348 485 301 485 _c +253 485 215 466 188 428 _c +161 390 148 339 148 273 _c +_cl}_e}_d +/e{{615 0 55 -13 562 560 _sc +562 296 _m +562 252 _l +149 252 _l +153 190 171 142 205 110 _c +238 78 284 62 344 62 _c +378 62 412 66 444 74 _c +476 82 509 95 541 113 _c +541 28 _l +509 14 476 3 442 -3 _c +408 -9 373 -13 339 -13 _c +251 -13 182 12 131 62 _c +80 112 55 181 55 268 _c +55 357 79 428 127 481 _c +175 533 241 560 323 560 _c +397 560 455 536 498 489 _c +540 441 562 377 562 296 _c +472 322 _m +471 371 457 410 431 440 _c +404 469 368 484 324 484 _c +274 484 234 469 204 441 _c +174 413 156 373 152 322 _c +472 322 _l +_cl}_e}_d +/f{352 0 23 0 371 760 _sc +371 760 _m +371 685 _l +285 685 _l +253 685 230 678 218 665 _c +205 652 199 629 199 595 _c +199 547 _l +347 547 _l +347 477 _l +199 477 _l +199 0 _l +109 0 _l +109 477 _l +23 477 _l +23 547 _l +109 547 _l +109 585 _l +109 645 123 690 151 718 _c +179 746 224 760 286 760 _c +371 760 _l +_cl}_d +/h{634 0 91 0 549 760 _sc +549 330 _m +549 0 _l +459 0 _l +459 327 _l +459 379 448 417 428 443 _c +408 469 378 482 338 482 _c +289 482 251 466 223 435 _c +195 404 181 362 181 309 _c +181 0 _l +91 0 _l +91 760 _l +181 760 _l +181 462 _l +202 494 227 519 257 535 _c +286 551 320 560 358 560 _c +420 560 468 540 500 501 _c +532 462 549 405 549 330 _c +_cl}_d +/i{278 0 94 0 184 760 _sc +94 547 _m +184 547 _l +184 0 _l +94 0 _l +94 547 _l +94 760 _m +184 760 _l +184 646 _l +94 646 _l +94 760 _l +_cl}_d +/j{278 0 -17 -207 184 760 _sc +94 547 _m +184 547 _l +184 -9 _l +184 -78 170 -128 144 -160 _c +117 -191 74 -207 16 -207 _c +-17 -207 _l +-17 -131 _l +6 -131 _l +40 -131 63 -123 75 -107 _c +87 -91 94 -58 94 -9 _c +94 547 _l +94 760 _m +184 760 _l +184 646 _l +94 646 _l +94 760 _l +_cl}_d +/l{278 0 94 0 184 760 _sc +94 760 _m +184 760 _l +184 0 _l +94 0 _l +94 760 _l +_cl}_d +/m{{974 0 91 0 889 560 _sc +520 442 _m +542 482 569 511 600 531 _c +631 550 668 560 711 560 _c +767 560 811 540 842 500 _c +873 460 889 403 889 330 _c +889 0 _l +799 0 _l +799 327 _l +799 379 789 418 771 444 _c +752 469 724 482 686 482 _c +639 482 602 466 575 435 _c +548 404 535 362 535 309 _c +535 0 _l +445 0 _l +445 327 _l +445 379 435 418 417 444 _c +398 469 369 482 331 482 _c +285 482 248 466 221 435 _c +194 404 181 362 181 309 _c +181 0 _l +91 0 _l +91 547 _l +181 547 _l +181 462 _l +201 495 226 520 255 536 _c +283 552 317 560 357 560 _c +397 560 430 550 458 530 _c +486 510 506 480 520 442 _c +}_e{_cl}_e}_d +/n{634 0 91 0 549 560 _sc +549 330 _m +549 0 _l +459 0 _l +459 327 _l +459 379 448 417 428 443 _c +408 469 378 482 338 482 _c +289 482 251 466 223 435 _c +195 404 181 362 181 309 _c +181 0 _l +91 0 _l +91 547 _l +181 547 _l +181 462 _l +202 494 227 519 257 535 _c +286 551 320 560 358 560 _c +420 560 468 540 500 501 _c +532 462 549 405 549 330 _c +_cl}_d +/o{612 0 55 -13 557 560 _sc +306 484 _m +258 484 220 465 192 427 _c +164 389 150 338 150 273 _c +150 207 163 156 191 118 _c +219 80 257 62 306 62 _c +354 62 392 80 420 118 _c +448 156 462 207 462 273 _c +462 337 448 389 420 427 _c +392 465 354 484 306 484 _c +306 560 _m +384 560 445 534 490 484 _c +534 433 557 363 557 273 _c +557 183 534 113 490 63 _c +445 12 384 -13 306 -13 _c +227 -13 165 12 121 63 _c +77 113 55 183 55 273 _c +55 363 77 433 121 484 _c +165 534 227 560 306 560 _c +_cl}_d +/p{{635 0 91 -207 580 560 _sc +181 82 _m +181 -207 _l +91 -207 _l +91 547 _l +181 547 _l +181 464 _l +199 496 223 520 252 536 _c +281 552 316 560 356 560 _c +422 560 476 533 518 481 _c +559 428 580 359 580 273 _c +580 187 559 117 518 65 _c +476 13 422 -13 356 -13 _c +316 -13 281 -5 252 10 _c +223 25 199 49 181 82 _c +487 273 _m +487 339 473 390 446 428 _c +418 466 381 485 334 485 _c +286 485 249 466 222 428 _c +194 390 181 339 181 273 _c +181 207 194 155 222 117 _c +249 79 286 61 334 61 _c +381 61 418 79 446 117 _c +473 155 487 207 487 273 _c +_cl}_e}_d +/r{411 0 91 0 411 560 _sc +411 463 _m +401 469 390 473 378 476 _c +366 478 353 480 339 480 _c +288 480 249 463 222 430 _c +194 397 181 350 181 288 _c +181 0 _l +91 0 _l +91 547 _l +181 547 _l +181 462 _l +199 495 224 520 254 536 _c +284 552 321 560 365 560 _c +371 560 378 559 386 559 _c +393 558 401 557 411 555 _c +411 463 _l +_cl}_d +/s{{521 0 54 -13 472 560 _sc +443 531 _m +443 446 _l +417 458 391 468 364 475 _c +336 481 308 485 279 485 _c +234 485 200 478 178 464 _c +156 450 145 430 145 403 _c +145 382 153 366 169 354 _c +185 342 217 330 265 320 _c +296 313 _l +360 299 405 279 432 255 _c +458 230 472 195 472 151 _c +472 100 452 60 412 31 _c +372 1 316 -13 246 -13 _c +216 -13 186 -10 154 -5 _c +122 0 89 8 54 20 _c +54 113 _l +87 95 120 82 152 74 _c +184 65 216 61 248 61 _c +290 61 323 68 346 82 _c +368 96 380 117 380 144 _c +380 168 371 187 355 200 _c +339 213 303 226 247 238 _c +216 245 _l +160 257 119 275 95 299 _c +70 323 58 356 58 399 _c +58 450 76 490 112 518 _c +148 546 200 560 268 560 _c +}_e{301 560 332 557 362 552 _c +391 547 418 540 443 531 _c +_cl}_e}_d +/t{392 0 27 0 368 702 _sc +183 702 _m +183 547 _l +368 547 _l +368 477 _l +183 477 _l +183 180 _l +183 135 189 106 201 94 _c +213 81 238 75 276 75 _c +368 75 _l +368 0 _l +276 0 _l +206 0 158 13 132 39 _c +106 65 93 112 93 180 _c +93 477 _l +27 477 _l +27 547 _l +93 547 _l +93 702 _l +183 702 _l +_cl}_d +/u{634 0 85 -13 543 547 _sc +85 216 _m +85 547 _l +175 547 _l +175 219 _l +175 167 185 129 205 103 _c +225 77 255 64 296 64 _c +344 64 383 79 411 110 _c +439 141 453 183 453 237 _c +453 547 _l +543 547 _l +543 0 _l +453 0 _l +453 84 _l +431 50 405 26 377 10 _c +348 -5 315 -13 277 -13 _c +214 -13 166 6 134 45 _c +101 83 85 140 85 216 _c +_cl}_d +/x{592 0 29 0 559 547 _sc +549 547 _m +351 281 _l +559 0 _l +453 0 _l +294 215 _l +135 0 _l +29 0 _l +241 286 _l +47 547 _l +153 547 _l +298 352 _l +443 547 _l +549 547 _l +_cl}_d +/y{592 0 30 -207 562 547 _sc +322 -50 _m +296 -114 271 -157 247 -177 _c +223 -197 191 -207 151 -207 _c +79 -207 _l +79 -132 _l +132 -132 _l +156 -132 175 -126 189 -114 _c +203 -102 218 -75 235 -31 _c +251 9 _l +30 547 _l +125 547 _l +296 119 _l +467 547 _l +562 547 _l +322 -50 _l +_cl}_d +end readonly def + +/BuildGlyph + {exch begin + CharStrings exch + 2 copy known not{pop /.notdef}if + true 3 1 roll get exec + end}_d + +/BuildChar { + 1 index /Encoding get exch get + 1 index /BuildGlyph get exec +}_d + +FontName currentdict end definefont pop +%%EOF +end +%%EndProlog +mpldict begin +18 180 translate +576 432 0 0 clipbox +1.000 setgray +1.000 setlinewidth +0 setlinejoin +2 setlinecap +[] 0 setdash +0 0 m +0 432 l +576 432 l +576 0 l +closepath +gsave +fill +grestore +stroke +0.000 setgray +72 238.539 m +72 388.8 l +518.4 388.8 l +518.4 238.539 l +closepath +gsave +1.000 setgray +fill +grestore +stroke +0.000 0.000 1.000 setrgbcolor +2.000 setlinewidth +gsave +446.4 150.261 72 238.539 clipbox +72 338.713 m +72.4464 328.518 l +72.8928 318.247 l +73.3392 308.278 l +73.7856 298.909 l +74.232 290.342 l +74.6784 282.686 l +75.1248 275.973 l +75.5712 270.176 l +76.0176 265.229 l +76.464 261.045 l +76.9104 257.53 l +77.3568 254.589 l +77.8032 252.137 l +78.2496 250.093 l +78.696 248.392 l +79.1424 246.974 l +79.5888 245.79 l +80.0352 244.8 l +80.4816 243.97 l +80.928 243.272 l +81.3744 242.684 l +81.8208 242.186 l +82.2672 241.763 l +82.7136 241.403 l +83.16 241.096 l +83.6064 240.832 l +84.0528 240.605 l +84.4992 240.41 l +84.9456 240.24 l +85.392 240.093 l +85.8384 239.965 l +86.2848 239.853 l +86.7312 239.755 l +87.1776 239.669 l +87.624 239.594 l +88.0704 239.527 l +88.5168 239.468 l +88.9632 239.417 l +89.4096 239.371 l +89.856 239.33 l +90.3024 239.294 l +90.7488 239.263 l +91.1952 239.235 l +91.6416 239.21 l +92.088 239.188 l +92.5344 239.169 l +92.9808 239.153 l +93.4272 239.138 l +93.8736 239.126 l +94.32 239.116 l +94.7664 239.108 l +95.2128 239.101 l +95.6592 239.096 l +96.1056 239.092 l +96.552 239.09 l +96.9984 239.089 l +97.4448 239.089 l +97.8912 239.091 l +98.3376 239.094 l +98.784 239.099 l +99.2304 239.104 l +99.6768 239.111 l +100.123 239.119 l +100.57 239.129 l +101.016 239.14 l +101.462 239.153 l +101.909 239.166 l +102.355 239.182 l +102.802 239.199 l +103.248 239.217 l +103.694 239.238 l +104.141 239.26 l +104.587 239.284 l +105.034 239.31 l +105.48 239.339 l +105.926 239.369 l +106.373 239.402 l +106.819 239.438 l +107.266 239.477 l +107.712 239.518 l +108.158 239.563 l +108.605 239.611 l +109.051 239.663 l +109.498 239.719 l +109.944 239.779 l +110.39 239.844 l +110.837 239.913 l +111.283 239.988 l +111.73 240.069 l +112.176 240.156 l +112.622 240.25 l +113.069 240.351 l +113.515 240.46 l +113.962 240.577 l +114.408 240.704 l +114.854 240.84 l +115.301 240.987 l +115.747 241.146 l +116.194 241.318 l +116.64 241.503 l +117.086 241.702 l +117.533 241.918 l +117.979 242.151 l +118.426 242.403 l +118.872 242.676 l +119.318 242.97 l +119.765 243.289 l +120.211 243.633 l +120.658 244.006 l +121.104 244.409 l +121.55 244.845 l +121.997 245.318 l +122.443 245.829 l +122.89 246.383 l +123.336 246.983 l +123.782 247.632 l +124.229 248.336 l +124.675 249.098 l +125.122 249.923 l +125.568 250.817 l +126.014 251.785 l +126.461 252.834 l +126.907 253.97 l +127.354 255.199 l +127.8 256.53 l +128.246 257.971 l +128.693 259.529 l +129.139 261.215 l +129.586 263.037 l +130.032 265.006 l +130.478 267.133 l +130.925 269.428 l +131.371 271.902 l +131.818 274.568 l +132.264 277.437 l +132.71 280.521 l +133.157 283.83 l +133.603 287.377 l +134.05 291.17 l +134.496 295.218 l +134.942 299.527 l +135.389 304.098 l +135.835 308.932 l +136.282 314.021 l +136.728 319.352 l +137.174 324.903 l +137.621 330.638 l +138.067 336.512 l +138.514 342.461 l +138.96 348.4 l +139.406 354.224 l +139.853 359.8 l +140.299 364.968 l +140.746 369.541 l +141.192 373.307 l +141.638 376.036 l +142.085 377.496 l +142.531 377.468 l +142.978 375.777 l +143.424 372.318 l +143.87 367.086 l +144.317 360.195 l +144.763 351.884 l +145.21 342.494 l +145.656 332.439 l +146.102 322.149 l +146.549 312.024 l +146.995 302.397 l +147.442 293.506 l +147.888 285.496 l +148.334 278.424 l +148.781 272.283 l +149.227 267.021 l +149.674 262.557 l +150.12 258.798 l +150.566 255.649 l +151.013 253.02 l +151.459 250.829 l +151.906 249.005 l +152.352 247.484 l +152.798 246.216 l +153.245 245.157 l +153.691 244.269 l +154.138 243.524 l +154.584 242.896 l +155.03 242.366 l +155.477 241.916 l +155.923 241.534 l +156.37 241.208 l +156.816 240.928 l +157.262 240.688 l +157.709 240.481 l +158.155 240.302 l +158.602 240.147 l +159.048 240.012 l +159.494 239.894 l +159.941 239.791 l +160.387 239.701 l +160.834 239.621 l +161.28 239.552 l +161.726 239.49 l +162.173 239.436 l +162.619 239.388 l +163.066 239.345 l +163.512 239.307 l +163.958 239.274 l +164.405 239.245 l +164.851 239.219 l +165.298 239.196 l +165.744 239.176 l +166.19 239.159 l +166.637 239.144 l +167.083 239.131 l +167.53 239.12 l +167.976 239.111 l +168.422 239.103 l +168.869 239.097 l +169.315 239.093 l +169.762 239.09 l +170.208 239.089 l +170.654 239.089 l +171.101 239.09 l +171.547 239.093 l +171.994 239.097 l +172.44 239.102 l +172.886 239.108 l +173.333 239.116 l +173.779 239.125 l +174.226 239.136 l +174.672 239.148 l +175.118 239.161 l +175.565 239.176 l +176.011 239.192 l +176.458 239.21 l +176.904 239.23 l +177.35 239.251 l +177.797 239.275 l +178.243 239.3 l +178.69 239.327 l +179.136 239.357 l +179.582 239.389 l +180.029 239.424 l +180.475 239.461 l +180.922 239.502 l +181.368 239.545 l +181.814 239.592 l +182.261 239.643 l +182.707 239.697 l +183.154 239.755 l +183.6 239.818 l +184.046 239.886 l +184.493 239.959 l +184.939 240.038 l +185.386 240.122 l +185.832 240.213 l +186.278 240.312 l +186.725 240.417 l +187.171 240.532 l +187.618 240.654 l +188.064 240.787 l +188.51 240.93 l +188.957 241.084 l +189.403 241.251 l +189.85 241.43 l +190.296 241.624 l +190.742 241.834 l +191.189 242.06 l +191.635 242.305 l +192.082 242.569 l +192.528 242.855 l +192.974 243.164 l +193.421 243.498 l +193.867 243.86 l +194.314 244.251 l +194.76 244.675 l +195.206 245.133 l +195.653 245.629 l +196.099 246.166 l +196.546 246.748 l +196.992 247.378 l +197.438 248.061 l +197.885 248.8 l +198.331 249.6 l +198.778 250.468 l +199.224 251.407 l +199.67 252.424 l +200.117 253.526 l +200.563 254.719 l +201.01 256.01 l +201.456 257.408 l +201.902 258.92 l +202.349 260.556 l +202.795 262.325 l +203.242 264.237 l +203.688 266.302 l +204.134 268.532 l +204.581 270.936 l +205.027 273.528 l +205.474 276.318 l +205.92 279.318 l +206.366 282.54 l +206.813 285.995 l +207.259 289.693 l +207.706 293.643 l +208.152 297.852 l +208.598 302.323 l +209.045 307.057 l +209.491 312.05 l +209.938 317.291 l +210.384 322.761 l +210.83 328.431 l +211.277 334.259 l +211.723 340.188 l +212.17 346.142 l +212.616 352.024 l +213.062 357.712 l +213.509 363.056 l +213.955 367.88 l +214.402 371.98 l +214.848 375.132 l +215.294 377.103 l +215.741 377.667 l +216.187 376.627 l +216.634 373.849 l +217.08 369.286 l +217.526 363.007 l +217.973 355.202 l +218.419 346.178 l +218.866 336.326 l +219.312 326.075 l +219.758 315.844 l +220.205 305.994 l +220.651 296.8 l +221.098 288.442 l +221.544 281.01 l +221.99 274.519 l +222.437 268.93 l +222.883 264.172 l +223.33 260.155 l +223.776 256.784 l +224.222 253.967 l +224.669 251.618 l +225.115 249.662 l +225.562 248.032 l +226.008 246.673 l +226.454 245.539 l +226.901 244.59 l +227.347 243.793 l +227.794 243.123 l +228.24 242.558 l +228.686 242.079 l +229.133 241.673 l +229.579 241.326 l +230.026 241.03 l +230.472 240.775 l +230.918 240.556 l +231.365 240.367 l +231.811 240.204 l +232.258 240.061 l +232.704 239.937 l +233.15 239.829 l +233.597 239.734 l +234.043 239.651 l +234.49 239.577 l +234.936 239.513 l +235.382 239.456 l +235.829 239.405 l +236.275 239.361 l +236.722 239.321 l +237.168 239.286 l +237.614 239.256 l +238.061 239.228 l +238.507 239.204 l +238.954 239.183 l +239.4 239.165 l +239.846 239.149 l +240.293 239.135 l +240.739 239.124 l +241.186 239.114 l +241.632 239.106 l +242.078 239.099 l +242.525 239.095 l +242.971 239.091 l +243.418 239.089 l +243.864 239.089 l +244.31 239.09 l +244.757 239.092 l +245.203 239.095 l +245.65 239.1 l +246.096 239.106 l +246.542 239.113 l +246.989 239.122 l +247.435 239.132 l +247.882 239.143 l +248.328 239.156 l +248.774 239.17 l +249.221 239.186 l +249.667 239.203 l +250.114 239.222 l +250.56 239.243 l +251.006 239.265 l +251.453 239.29 l +251.899 239.317 l +252.346 239.346 l +252.792 239.377 l +253.238 239.41 l +253.685 239.447 l +254.131 239.486 l +254.578 239.528 l +255.024 239.574 l +255.47 239.623 l +255.917 239.676 l +256.363 239.733 l +256.81 239.794 l +257.256 239.86 l +257.702 239.931 l +258.149 240.007 l +258.595 240.089 l +259.042 240.178 l +259.488 240.273 l +259.934 240.376 l +260.381 240.487 l +260.827 240.606 l +261.274 240.735 l +261.72 240.874 l +262.166 241.024 l +262.613 241.186 l +263.059 241.36 l +263.506 241.549 l +263.952 241.752 l +264.398 241.972 l +264.845 242.209 l +265.291 242.466 l +265.738 242.743 l +266.184 243.043 l +266.63 243.368 l +267.077 243.719 l +267.523 244.098 l +267.97 244.509 l +268.416 244.954 l +268.862 245.435 l +269.309 245.956 l +269.755 246.521 l +270.202 247.132 l +270.648 247.794 l +271.094 248.511 l +271.541 249.287 l +271.987 250.129 l +272.434 251.04 l +272.88 252.026 l +273.326 253.095 l +273.773 254.252 l +274.219 255.505 l +274.666 256.861 l +275.112 258.329 l +275.558 259.917 l +276.005 261.634 l +276.451 263.49 l +276.898 265.496 l +277.344 267.661 l +277.79 269.997 l +278.237 272.516 l +278.683 275.229 l +279.13 278.148 l +279.576 281.284 l +280.022 284.649 l +280.469 288.253 l +280.915 292.106 l +281.362 296.215 l +281.808 300.586 l +282.254 305.22 l +282.701 310.116 l +283.147 315.264 l +283.594 320.649 l +284.04 326.247 l +284.486 332.02 l +284.933 337.918 l +285.379 343.873 l +285.826 349.796 l +286.272 355.573 l +286.718 361.068 l +287.165 366.113 l +287.611 370.515 l +288.058 374.056 l +288.504 376.506 l +288.95 377.631 l +289.397 377.223 l +289.843 375.119 l +290.29 371.236 l +290.736 365.596 l +291.182 358.343 l +291.629 349.741 l +292.075 340.155 l +292.522 330.006 l +292.968 319.721 l +293.414 309.688 l +293.861 300.217 l +294.307 291.525 l +294.754 283.734 l +295.2 276.886 l +295.646 270.96 l +296.093 265.895 l +296.539 261.606 l +296.986 258 l +297.432 254.982 l +297.878 252.464 l +298.325 250.366 l +298.771 248.619 l +299.218 247.163 l +299.664 245.948 l +300.11 244.932 l +300.557 244.081 l +301.003 243.366 l +301.45 242.763 l +301.896 242.253 l +302.342 241.82 l +302.789 241.452 l +303.235 241.137 l +303.682 240.868 l +304.128 240.636 l +304.574 240.436 l +305.021 240.263 l +305.467 240.113 l +305.914 239.983 l +306.36 239.868 l +306.806 239.769 l +307.253 239.681 l +307.699 239.604 l +308.146 239.536 l +308.592 239.477 l +309.038 239.424 l +309.485 239.377 l +309.931 239.336 l +310.378 239.299 l +310.824 239.267 l +311.27 239.238 l +311.717 239.213 l +312.163 239.191 l +312.61 239.172 l +313.056 239.155 l +313.502 239.14 l +313.949 239.128 l +314.395 239.117 l +314.842 239.109 l +315.288 239.102 l +315.734 239.096 l +316.181 239.092 l +316.627 239.09 l +317.074 239.089 l +317.52 239.089 l +317.966 239.091 l +318.413 239.094 l +318.859 239.098 l +319.306 239.103 l +319.752 239.11 l +320.198 239.118 l +320.645 239.128 l +321.091 239.138 l +321.538 239.151 l +321.984 239.164 l +322.43 239.179 l +322.877 239.196 l +323.323 239.215 l +323.77 239.235 l +324.216 239.257 l +324.662 239.28 l +325.109 239.306 l +325.555 239.334 l +326.002 239.365 l +326.448 239.397 l +326.894 239.433 l +327.341 239.471 l +327.787 239.512 l +328.234 239.556 l +328.68 239.604 l +329.126 239.655 l +329.573 239.71 l +330.019 239.77 l +330.466 239.834 l +330.912 239.903 l +331.358 239.977 l +331.805 240.057 l +332.251 240.143 l +332.698 240.236 l +333.144 240.336 l +333.59 240.444 l +334.037 240.56 l +334.483 240.685 l +334.93 240.82 l +335.376 240.966 l +335.822 241.123 l +336.269 241.292 l +336.715 241.475 l +337.162 241.673 l +337.608 241.886 l +338.054 242.117 l +338.501 242.366 l +338.947 242.635 l +339.394 242.926 l +339.84 243.241 l +340.286 243.581 l +340.733 243.95 l +341.179 244.349 l +341.626 244.78 l +342.072 245.247 l +342.518 245.753 l +342.965 246.3 l +343.411 246.893 l +343.858 247.535 l +344.304 248.231 l +344.75 248.984 l +345.197 249.8 l +345.643 250.683 l +346.09 251.641 l +346.536 252.677 l +346.982 253.8 l +347.429 255.015 l +347.875 256.331 l +348.322 257.755 l +348.768 259.296 l +349.214 260.963 l +349.661 262.765 l +350.107 264.712 l +350.554 266.815 l +351 269.085 l +351.446 271.533 l +351.893 274.171 l +352.339 277.009 l +352.786 280.061 l +353.232 283.338 l +353.678 286.849 l +354.125 290.606 l +354.571 294.617 l +355.018 298.888 l +355.464 303.421 l +355.91 308.218 l +356.357 313.271 l +356.803 318.568 l +357.25 324.088 l +357.696 329.799 l +358.142 335.657 l +358.589 341.6 l +359.035 347.546 l +359.482 353.394 l +359.928 359.015 l +360.374 364.253 l +360.821 368.925 l +361.267 372.821 l +361.714 375.715 l +362.16 377.372 l +362.606 377.572 l +363.053 376.129 l +363.499 372.929 l +363.946 367.949 l +364.392 361.286 l +364.838 353.161 l +365.285 343.903 l +365.731 333.917 l +366.178 323.634 l +366.624 313.464 l +367.07 303.748 l +367.517 294.739 l +367.963 286.596 l +368.41 279.387 l +368.856 273.115 l +369.302 267.731 l +369.749 263.157 l +370.195 259.301 l +370.642 256.07 l +371.088 253.371 l +371.534 251.122 l +371.981 249.248 l +372.427 247.687 l +372.874 246.386 l +373.32 245.299 l +373.766 244.388 l +374.213 243.624 l +374.659 242.981 l +375.106 242.437 l +375.552 241.977 l +375.998 241.585 l +376.445 241.252 l +376.891 240.966 l +377.338 240.721 l +377.784 240.509 l +378.23 240.326 l +378.677 240.168 l +379.123 240.03 l +379.57 239.91 l +380.016 239.805 l +380.462 239.713 l +380.909 239.632 l +381.355 239.561 l +381.802 239.498 l +382.248 239.443 l +382.694 239.394 l +383.141 239.351 l +383.587 239.313 l +384.034 239.279 l +384.48 239.249 l +384.926 239.222 l +385.373 239.199 l +385.819 239.179 l +386.266 239.161 l +386.712 239.146 l +387.158 239.132 l +387.605 239.121 l +388.051 239.112 l +388.498 239.104 l +388.944 239.098 l +389.39 239.094 l +389.837 239.091 l +390.283 239.089 l +390.73 239.089 l +391.176 239.09 l +391.622 239.092 l +392.069 239.096 l +392.515 239.101 l +392.962 239.107 l +393.408 239.115 l +393.854 239.124 l +394.301 239.134 l +394.747 239.146 l +395.194 239.159 l +395.64 239.174 l +396.086 239.19 l +396.533 239.207 l +396.979 239.227 l +397.426 239.248 l +397.872 239.271 l +398.318 239.296 l +398.765 239.323 l +399.211 239.353 l +399.658 239.385 l +400.104 239.419 l +400.55 239.456 l +400.997 239.496 l +401.443 239.539 l +401.89 239.585 l +402.336 239.635 l +402.782 239.689 l +403.229 239.747 l +403.675 239.809 l +404.122 239.876 l +404.568 239.948 l +405.014 240.026 l +405.461 240.11 l +405.907 240.2 l +406.354 240.297 l +406.8 240.402 l +407.246 240.515 l +407.693 240.636 l +408.139 240.767 l +408.586 240.909 l +409.032 241.061 l +409.478 241.226 l +409.925 241.404 l +410.371 241.595 l +410.818 241.803 l +411.264 242.026 l +411.71 242.268 l +412.157 242.53 l +412.603 242.812 l +413.05 243.118 l +413.496 243.448 l +413.942 243.806 l +414.389 244.193 l +414.835 244.611 l +415.282 245.064 l +415.728 245.555 l +416.174 246.086 l +416.621 246.661 l +417.067 247.284 l +417.514 247.959 l +417.96 248.689 l +418.406 249.481 l +418.853 250.338 l +419.299 251.266 l +419.746 252.272 l +420.192 253.361 l +420.638 254.54 l +421.085 255.817 l +421.531 257.199 l +421.978 258.694 l +422.424 260.312 l +422.87 262.061 l +423.317 263.952 l +423.763 265.994 l +424.21 268.199 l +424.656 270.577 l +425.102 273.141 l +425.549 275.902 l +425.995 278.871 l +426.442 282.06 l +426.888 285.481 l +427.334 289.144 l +427.781 293.057 l +428.227 297.227 l +428.674 301.661 l +429.12 306.357 l +429.566 311.313 l +430.013 316.519 l +430.459 321.957 l +430.906 327.6 l +431.352 333.409 l +431.798 339.327 l +432.245 345.283 l +432.691 351.183 l +433.138 356.907 l +433.584 362.311 l +434.03 367.222 l +434.477 371.44 l +434.923 374.744 l +435.37 376.901 l +435.816 377.68 l +436.262 376.883 l +436.709 374.361 l +437.155 370.055 l +437.602 364.015 l +438.048 356.414 l +438.494 347.544 l +438.941 337.785 l +439.387 327.565 l +439.834 317.307 l +440.28 307.383 l +440.726 298.081 l +441.173 289.595 l +441.619 282.026 l +442.066 275.4 l +442.512 269.684 l +442.958 264.812 l +443.405 260.694 l +443.851 257.235 l +444.298 254.343 l +444.744 251.932 l +445.19 249.923 l +445.637 248.25 l +446.083 246.855 l +446.53 245.691 l +446.976 244.717 l +447.422 243.9 l +447.869 243.213 l +448.315 242.634 l +448.762 242.144 l +449.208 241.727 l +449.654 241.373 l +450.101 241.07 l +450.547 240.81 l +450.994 240.586 l +451.44 240.393 l +451.886 240.226 l +452.333 240.081 l +452.779 239.954 l +453.226 239.844 l +453.672 239.747 l +454.118 239.662 l +454.565 239.587 l +455.011 239.521 l +455.458 239.463 l +455.904 239.412 l +456.35 239.367 l +456.797 239.327 l +457.243 239.291 l +457.69 239.26 l +458.136 239.232 l +458.582 239.208 l +459.029 239.186 l +459.475 239.168 l +459.922 239.151 l +460.368 239.137 l +460.814 239.125 l +461.261 239.115 l +461.707 239.107 l +462.154 239.1 l +462.6 239.095 l +463.046 239.092 l +463.493 239.089 l +463.939 239.089 l +464.386 239.089 l +464.832 239.091 l +465.278 239.094 l +465.725 239.099 l +466.171 239.105 l +466.618 239.112 l +467.064 239.12 l +467.51 239.13 l +467.957 239.141 l +468.403 239.154 l +468.85 239.168 l +469.296 239.183 l +469.742 239.2 l +470.189 239.219 l +470.635 239.24 l +471.082 239.262 l +471.528 239.286 l +471.974 239.313 l +472.421 239.341 l +472.867 239.372 l +473.314 239.405 l +473.76 239.441 l +474.206 239.48 l +474.653 239.522 l +475.099 239.567 l +475.546 239.616 l +475.992 239.668 l +476.438 239.724 l +476.885 239.785 l +477.331 239.85 l +477.778 239.92 l +478.224 239.996 l +478.67 240.077 l +479.117 240.165 l +479.563 240.259 l +480.01 240.361 l +480.456 240.47 l +480.902 240.589 l +481.349 240.716 l +481.795 240.853 l +482.242 241.002 l +482.688 241.162 l +483.134 241.334 l +483.581 241.521 l +484.027 241.722 l +484.474 241.939 l +484.92 242.174 l +485.366 242.428 l +485.813 242.702 l +486.259 242.998 l +486.706 243.319 l +487.152 243.666 l +487.598 244.042 l +488.045 244.448 l +488.491 244.887 l +488.938 245.363 l +489.384 245.879 l +489.83 246.436 l +490.277 247.041 l +490.723 247.695 l +491.17 248.404 l +491.616 249.171 l +492.062 250.003 l +492.509 250.903 l +492.955 251.879 l +493.402 252.935 l +493.848 254.079 l +494.294 255.318 l +494.741 256.659 l +495.187 258.11 l +495.634 259.68 l +496.08 261.378 l +496.526 263.213 l +496.973 265.196 l +497.419 267.338 l +497.866 269.649 l +498.312 272.14 l +498.758 274.825 l +499.205 277.713 l +499.651 280.817 l +500.098 284.148 l +500.544 287.717 l +500.99 291.534 l +501.437 295.605 l +501.883 299.938 l +502.33 304.534 l +502.776 309.392 l +503.222 314.504 l +503.669 319.857 l +504.115 325.426 l +504.562 331.176 l +505.008 337.06 l +505.454 343.012 l +505.901 348.945 l +506.347 354.752 l +506.794 360.298 l +507.24 365.419 l +507.686 369.927 l +508.133 373.606 l +508.579 376.228 l +509.026 377.559 l +509.472 377.384 l +509.918 375.532 l +510.365 371.908 l +510.811 366.516 l +511.258 359.482 l +511.704 351.055 l +512.15 341.586 l +512.597 331.491 l +513.043 321.2 l +513.49 311.109 l +513.936 301.542 l +514.382 292.727 l +514.829 284.802 l +515.275 277.817 l +515.722 271.761 l +516.168 266.577 l +516.614 262.182 l +517.061 258.483 l +517.507 255.386 l +517.954 252.8 l +stroke +grestore +0.000 0.502 0.000 setrgbcolor +gsave +446.4 150.261 72 238.539 clipbox +72 288.626 m +72.4464 292.254 l +72.8928 295.558 l +73.3392 298.455 l +73.7856 300.892 l +74.232 302.85 l +74.6784 304.334 l +75.1248 305.372 l +75.5712 306.003 l +76.0176 306.276 l +76.464 306.242 l +76.9104 305.949 l +77.3568 305.442 l +77.8032 304.76 l +78.2496 303.939 l +78.696 303.008 l +79.1424 301.991 l +79.5888 300.91 l +80.0352 299.781 l +80.4816 298.618 l +80.928 297.432 l +81.3744 296.232 l +81.8208 295.027 l +82.2672 293.821 l +82.7136 292.62 l +83.16 291.427 l +83.6064 290.246 l +84.0528 289.079 l +84.4992 287.928 l +84.9456 286.795 l +85.392 285.68 l +85.8384 284.584 l +86.2848 283.509 l +86.7312 282.454 l +87.1776 281.42 l +87.624 280.407 l +88.0704 279.415 l +88.5168 278.443 l +88.9632 277.493 l +89.4096 276.564 l +89.856 275.655 l +90.3024 274.767 l +90.7488 273.898 l +91.1952 273.05 l +91.6416 272.221 l +92.088 271.411 l +92.5344 270.619 l +92.9808 269.847 l +93.4272 269.092 l +93.8736 268.356 l +94.32 267.636 l +94.7664 266.934 l +95.2128 266.249 l +95.6592 265.58 l +96.1056 264.927 l +96.552 264.289 l +96.9984 263.667 l +97.4448 263.06 l +97.8912 262.468 l +98.3376 261.89 l +98.784 261.326 l +99.2304 260.776 l +99.6768 260.239 l +100.123 259.716 l +100.57 259.205 l +101.016 258.707 l +101.462 258.221 l +101.909 257.747 l +102.355 257.284 l +102.802 256.833 l +103.248 256.394 l +103.694 255.965 l +104.141 255.547 l +104.587 255.139 l +105.034 254.741 l +105.48 254.354 l +105.926 253.976 l +106.373 253.607 l +106.819 253.248 l +107.266 252.898 l +107.712 252.557 l +108.158 252.225 l +108.605 251.901 l +109.051 251.585 l +109.498 251.278 l +109.944 250.978 l +110.39 250.686 l +110.837 250.402 l +111.283 250.126 l +111.73 249.856 l +112.176 249.594 l +112.622 249.339 l +113.069 249.091 l +113.515 248.85 l +113.962 248.615 l +114.408 248.387 l +114.854 248.165 l +115.301 247.95 l +115.747 247.741 l +116.194 247.538 l +116.64 247.341 l +117.086 247.15 l +117.533 246.964 l +117.979 246.785 l +118.426 246.612 l +118.872 246.444 l +119.318 246.282 l +119.765 246.125 l +120.211 245.974 l +120.658 245.829 l +121.104 245.689 l +121.55 245.555 l +121.997 245.427 l +122.443 245.304 l +122.89 245.187 l +123.336 245.076 l +123.782 244.971 l +124.229 244.871 l +124.675 244.778 l +125.122 244.691 l +125.568 244.61 l +126.014 244.536 l +126.461 244.469 l +126.907 244.409 l +127.354 244.356 l +127.8 244.312 l +128.246 244.275 l +128.693 244.248 l +129.139 244.229 l +129.586 244.221 l +130.032 244.223 l +130.478 244.237 l +130.925 244.264 l +131.371 244.305 l +131.818 244.36 l +132.264 244.433 l +132.71 244.524 l +133.157 244.636 l +133.603 244.771 l +134.05 244.933 l +134.496 245.125 l +134.942 245.351 l +135.389 245.616 l +135.835 245.925 l +136.282 246.287 l +136.728 246.708 l +137.174 247.2 l +137.621 247.773 l +138.067 248.441 l +138.514 249.221 l +138.96 250.13 l +139.406 251.191 l +139.853 252.428 l +140.299 253.869 l +140.746 255.541 l +141.192 257.475 l +141.638 259.698 l +142.085 262.231 l +142.531 265.088 l +142.978 268.264 l +143.424 271.734 l +143.87 275.449 l +144.317 279.331 l +144.763 283.28 l +145.21 287.178 l +145.656 290.903 l +146.102 294.342 l +146.549 297.402 l +146.995 300.019 l +147.442 302.16 l +147.888 303.823 l +148.334 305.026 l +148.781 305.807 l +149.227 306.211 l +149.674 306.288 l +150.12 306.088 l +150.566 305.658 l +151.013 305.038 l +151.459 304.267 l +151.906 303.374 l +152.352 302.388 l +152.798 301.329 l +153.245 300.216 l +153.691 299.065 l +154.138 297.886 l +154.584 296.691 l +155.03 295.487 l +155.477 294.281 l +155.923 293.077 l +156.37 291.881 l +156.816 290.695 l +157.262 289.523 l +157.709 288.365 l +158.155 287.225 l +158.602 286.103 l +159.048 285 l +159.494 283.917 l +159.941 282.854 l +160.387 281.812 l +160.834 280.791 l +161.28 279.791 l +161.726 278.811 l +162.173 277.853 l +162.619 276.916 l +163.066 275.999 l +163.512 275.103 l +163.958 274.227 l +164.405 273.371 l +164.851 272.535 l +165.298 271.717 l +165.744 270.919 l +166.19 270.139 l +166.637 269.378 l +167.083 268.635 l +167.53 267.909 l +167.976 267.2 l +168.422 266.508 l +168.869 265.833 l +169.315 265.174 l +169.762 264.531 l +170.208 263.903 l +170.654 263.29 l +171.101 262.692 l +171.547 262.109 l +171.994 261.54 l +172.44 260.984 l +172.886 260.443 l +173.333 259.914 l +173.779 259.398 l +174.226 258.895 l +174.672 258.405 l +175.118 257.926 l +175.565 257.459 l +176.011 257.004 l +176.458 256.56 l +176.904 256.127 l +177.35 255.705 l +177.797 255.293 l +178.243 254.892 l +178.69 254.5 l +179.136 254.119 l +179.582 253.747 l +180.029 253.384 l +180.475 253.031 l +180.922 252.686 l +181.368 252.35 l +181.814 252.023 l +182.261 251.704 l +182.707 251.394 l +183.154 251.091 l +183.6 250.797 l +184.046 250.51 l +184.493 250.23 l +184.939 249.958 l +185.386 249.693 l +185.832 249.436 l +186.278 249.185 l +186.725 248.941 l +187.171 248.704 l +187.618 248.473 l +188.064 248.249 l +188.51 248.031 l +188.957 247.82 l +189.403 247.614 l +189.85 247.415 l +190.296 247.222 l +190.742 247.034 l +191.189 246.853 l +191.635 246.677 l +192.082 246.507 l +192.528 246.343 l +192.974 246.184 l +193.421 246.031 l +193.867 245.884 l +194.314 245.742 l +194.76 245.606 l +195.206 245.475 l +195.653 245.35 l +196.099 245.231 l +196.546 245.118 l +196.992 245.01 l +197.438 244.908 l +197.885 244.813 l +198.331 244.723 l +198.778 244.64 l +199.224 244.564 l +199.67 244.494 l +200.117 244.431 l +200.563 244.376 l +201.01 244.328 l +201.456 244.288 l +201.902 244.257 l +202.349 244.235 l +202.795 244.223 l +203.242 244.221 l +203.688 244.231 l +204.134 244.252 l +204.581 244.287 l +205.027 244.337 l +205.474 244.403 l +205.92 244.487 l +206.366 244.591 l +206.813 244.717 l +207.259 244.868 l +207.706 245.048 l +208.152 245.26 l +208.598 245.51 l +209.045 245.801 l +209.491 246.142 l +209.938 246.54 l +210.384 247.004 l +210.83 247.544 l +211.277 248.174 l +211.723 248.909 l +212.17 249.766 l +212.616 250.767 l +213.062 251.934 l +213.509 253.293 l +213.955 254.874 l +214.402 256.705 l +214.848 258.814 l +215.294 261.227 l +215.741 263.96 l +216.187 267.016 l +216.634 270.378 l +217.08 274.007 l +217.526 277.836 l +217.973 281.773 l +218.419 285.705 l +218.866 289.51 l +219.312 293.07 l +219.758 296.284 l +220.205 299.075 l +220.651 301.4 l +221.098 303.244 l +221.544 304.619 l +221.99 305.556 l +222.437 306.098 l +222.883 306.294 l +223.33 306.194 l +223.776 305.847 l +224.222 305.295 l +224.669 304.577 l +225.115 303.727 l +225.562 302.774 l +226.008 301.74 l +226.454 300.646 l +226.901 299.508 l +227.347 298.338 l +227.794 297.148 l +228.24 295.947 l +228.686 294.741 l +229.133 293.536 l +229.579 292.336 l +230.026 291.146 l +230.472 289.968 l +230.918 288.805 l +231.365 287.658 l +231.811 286.529 l +232.258 285.418 l +232.704 284.328 l +233.15 283.257 l +233.597 282.207 l +234.043 281.178 l +234.49 280.17 l +234.936 279.182 l +235.382 278.216 l +235.829 277.271 l +236.275 276.347 l +236.722 275.443 l +237.168 274.559 l +237.614 273.695 l +238.061 272.851 l +238.507 272.027 l +238.954 271.221 l +239.4 270.435 l +239.846 269.666 l +240.293 268.916 l +240.739 268.184 l +241.186 267.468 l +241.632 266.77 l +242.078 266.089 l +242.525 265.423 l +242.971 264.774 l +243.418 264.14 l +243.864 263.522 l +244.31 262.919 l +244.757 262.33 l +245.203 261.755 l +245.65 261.195 l +246.096 260.648 l +246.542 260.114 l +246.989 259.594 l +247.435 259.086 l +247.882 258.59 l +248.328 258.107 l +248.774 257.636 l +249.221 257.176 l +249.667 256.728 l +250.114 256.291 l +250.56 255.865 l +251.006 255.449 l +251.453 255.044 l +251.899 254.648 l +252.346 254.263 l +252.792 253.887 l +253.238 253.521 l +253.685 253.164 l +254.131 252.816 l +254.578 252.477 l +255.024 252.147 l +255.47 251.825 l +255.917 251.511 l +256.363 251.206 l +256.81 250.908 l +257.256 250.618 l +257.702 250.336 l +258.149 250.061 l +258.595 249.794 l +259.042 249.533 l +259.488 249.28 l +259.934 249.033 l +260.381 248.794 l +260.827 248.56 l +261.274 248.334 l +261.72 248.114 l +262.166 247.9 l +262.613 247.692 l +263.059 247.49 l +263.506 247.295 l +263.952 247.105 l +264.398 246.921 l +264.845 246.744 l +265.291 246.571 l +265.738 246.405 l +266.184 246.244 l +266.63 246.089 l +267.077 245.939 l +267.523 245.795 l +267.97 245.657 l +268.416 245.524 l +268.862 245.397 l +269.309 245.276 l +269.755 245.16 l +270.202 245.05 l +270.648 244.946 l +271.094 244.848 l +271.541 244.757 l +271.987 244.671 l +272.434 244.592 l +272.88 244.52 l +273.326 244.454 l +273.773 244.396 l +274.219 244.345 l +274.666 244.302 l +275.112 244.268 l +275.558 244.242 l +276.005 244.226 l +276.451 244.221 l +276.898 244.226 l +277.344 244.243 l +277.79 244.272 l +278.237 244.316 l +278.683 244.376 l +279.13 244.453 l +279.576 244.549 l +280.022 244.666 l +280.469 244.807 l +280.915 244.976 l +281.362 245.175 l +281.808 245.41 l +282.254 245.685 l +282.701 246.006 l +283.147 246.381 l +283.594 246.818 l +284.04 247.328 l +284.486 247.922 l +284.933 248.615 l +285.379 249.424 l +285.826 250.367 l +286.272 251.467 l +286.718 252.75 l +287.165 254.243 l +287.611 255.975 l +288.058 257.975 l +288.504 260.269 l +288.95 262.879 l +289.397 265.812 l +289.843 269.061 l +290.29 272.595 l +290.736 276.357 l +291.182 280.265 l +291.629 284.213 l +292.075 288.081 l +292.522 291.748 l +292.968 295.104 l +293.414 298.064 l +293.861 300.57 l +294.307 302.597 l +294.754 304.148 l +295.2 305.248 l +295.646 305.935 l +296.093 306.257 l +296.539 306.264 l +296.986 306.006 l +297.432 305.527 l +297.878 304.868 l +298.325 304.065 l +298.771 303.148 l +299.218 302.143 l +299.664 301.07 l +300.11 299.946 l +300.557 298.787 l +301.003 297.604 l +301.45 296.406 l +301.896 295.201 l +302.342 293.995 l +302.789 292.793 l +303.235 291.599 l +303.682 290.416 l +304.128 289.247 l +304.574 288.094 l +305.021 286.957 l +305.467 285.84 l +305.914 284.741 l +306.36 283.663 l +306.806 282.605 l +307.253 281.568 l +307.699 280.552 l +308.146 279.557 l +308.592 278.582 l +309.038 277.629 l +309.485 276.697 l +309.931 275.785 l +310.378 274.894 l +310.824 274.023 l +311.27 273.171 l +311.717 272.339 l +312.163 271.526 l +312.61 270.733 l +313.056 269.957 l +313.502 269.2 l +313.949 268.461 l +314.395 267.739 l +314.842 267.035 l +315.288 266.347 l +315.734 265.675 l +316.181 265.02 l +316.627 264.38 l +317.074 263.756 l +317.52 263.147 l +317.966 262.553 l +318.413 261.973 l +318.859 261.407 l +319.306 260.855 l +319.752 260.316 l +320.198 259.791 l +320.645 259.278 l +321.091 258.778 l +321.538 258.29 l +321.984 257.814 l +322.43 257.35 l +322.877 256.898 l +323.323 256.456 l +323.77 256.026 l +324.216 255.606 l +324.662 255.197 l +325.109 254.798 l +325.555 254.409 l +326.002 254.03 l +326.448 253.66 l +326.894 253.299 l +327.341 252.948 l +327.787 252.606 l +328.234 252.272 l +328.68 251.947 l +329.126 251.63 l +329.573 251.321 l +330.019 251.021 l +330.466 250.728 l +330.912 250.443 l +331.358 250.165 l +331.805 249.895 l +332.251 249.632 l +332.698 249.376 l +333.144 249.127 l +333.59 248.884 l +334.037 248.649 l +334.483 248.42 l +334.93 248.197 l +335.376 247.981 l +335.822 247.771 l +336.269 247.567 l +336.715 247.369 l +337.162 247.177 l +337.608 246.991 l +338.054 246.811 l +338.501 246.636 l +338.947 246.468 l +339.394 246.305 l +339.84 246.147 l +340.286 245.996 l +340.733 245.85 l +341.179 245.709 l +341.626 245.574 l +342.072 245.445 l +342.518 245.322 l +342.965 245.204 l +343.411 245.092 l +343.858 244.985 l +344.304 244.885 l +344.75 244.791 l +345.197 244.703 l +345.643 244.621 l +346.09 244.546 l +346.536 244.478 l +346.982 244.417 l +347.429 244.364 l +347.875 244.318 l +348.322 244.28 l +348.768 244.251 l +349.214 244.231 l +349.661 244.222 l +350.107 244.222 l +350.554 244.235 l +351 244.259 l +351.446 244.298 l +351.893 244.351 l +352.339 244.421 l +352.786 244.51 l +353.232 244.619 l +353.678 244.75 l +354.125 244.908 l +354.571 245.095 l +355.018 245.316 l +355.464 245.575 l +355.91 245.877 l +356.357 246.231 l +356.803 246.643 l +357.25 247.124 l +357.696 247.685 l +358.142 248.338 l +358.589 249.1 l +359.035 249.99 l +359.482 251.027 l +359.928 252.238 l +360.374 253.647 l +360.821 255.284 l +361.267 257.178 l +361.714 259.358 l +362.16 261.845 l +362.606 264.655 l +363.053 267.786 l +363.499 271.216 l +363.946 274.899 l +364.392 278.763 l +364.838 282.71 l +365.285 286.623 l +365.731 290.38 l +366.178 293.866 l +366.624 296.986 l +367.07 299.669 l +367.517 301.88 l +367.963 303.611 l +368.41 304.879 l +368.856 305.719 l +369.302 306.174 l +369.749 306.295 l +370.195 306.133 l +370.642 305.733 l +371.088 305.138 l +371.534 304.387 l +371.981 303.51 l +372.427 302.535 l +372.874 301.486 l +373.32 300.38 l +373.766 299.233 l +374.213 298.058 l +374.659 296.864 l +375.106 295.661 l +375.552 294.455 l +375.998 293.251 l +376.445 292.053 l +376.891 290.866 l +377.338 289.691 l +377.784 288.532 l +378.23 287.389 l +378.677 286.264 l +379.123 285.158 l +379.57 284.072 l +380.016 283.006 l +380.462 281.961 l +380.909 280.937 l +381.355 279.934 l +381.802 278.952 l +382.248 277.991 l +382.694 277.05 l +383.141 276.131 l +383.587 275.231 l +384.034 274.353 l +384.48 273.494 l +384.926 272.654 l +385.373 271.834 l +385.819 271.033 l +386.266 270.251 l +386.712 269.487 l +387.158 268.741 l +387.605 268.013 l +388.051 267.301 l +388.498 266.607 l +388.944 265.93 l +389.39 265.268 l +389.837 264.623 l +390.283 263.993 l +390.73 263.378 l +391.176 262.778 l +391.622 262.192 l +392.069 261.621 l +392.515 261.064 l +392.962 260.52 l +393.408 259.99 l +393.854 259.472 l +394.301 258.967 l +394.747 258.475 l +395.194 257.995 l +395.64 257.526 l +396.086 257.069 l +396.533 256.624 l +396.979 256.189 l +397.426 255.765 l +397.872 255.352 l +398.318 254.949 l +398.765 254.556 l +399.211 254.173 l +399.658 253.8 l +400.104 253.436 l +400.55 253.081 l +400.997 252.735 l +401.443 252.398 l +401.89 252.07 l +402.336 251.75 l +402.782 251.438 l +403.229 251.135 l +403.675 250.839 l +404.122 250.551 l +404.568 250.27 l +405.014 249.997 l +405.461 249.731 l +405.907 249.473 l +406.354 249.221 l +406.8 248.976 l +407.246 248.738 l +407.693 248.506 l +408.139 248.281 l +408.586 248.062 l +409.032 247.85 l +409.478 247.644 l +409.925 247.444 l +410.371 247.249 l +410.818 247.061 l +411.264 246.879 l +411.71 246.702 l +412.157 246.531 l +412.603 246.366 l +413.05 246.207 l +413.496 246.053 l +413.942 245.905 l +414.389 245.762 l +414.835 245.625 l +415.282 245.494 l +415.728 245.368 l +416.174 245.248 l +416.621 245.134 l +417.067 245.025 l +417.514 244.923 l +417.96 244.826 l +418.406 244.736 l +418.853 244.652 l +419.299 244.574 l +419.746 244.503 l +420.192 244.44 l +420.638 244.383 l +421.085 244.334 l +421.531 244.293 l +421.978 244.261 l +422.424 244.238 l +422.87 244.224 l +423.317 244.221 l +423.763 244.229 l +424.21 244.248 l +424.656 244.282 l +425.102 244.329 l +425.549 244.393 l +425.995 244.474 l +426.442 244.574 l +426.888 244.697 l +427.334 244.845 l +427.781 245.02 l +428.227 245.227 l +428.674 245.471 l +429.12 245.756 l +429.566 246.09 l +430.013 246.479 l +430.459 246.932 l +430.906 247.461 l +431.352 248.077 l +431.798 248.796 l +432.245 249.634 l +432.691 250.613 l +433.138 251.754 l +433.584 253.084 l +434.03 254.631 l +434.477 256.423 l +434.923 258.491 l +435.37 260.859 l +435.816 263.545 l +436.262 266.554 l +436.709 269.874 l +437.155 273.468 l +437.602 277.274 l +438.048 281.202 l +438.494 285.141 l +438.941 288.972 l +439.387 292.575 l +439.834 295.844 l +440.28 298.7 l +440.726 301.094 l +441.173 303.007 l +441.619 304.448 l +442.066 305.446 l +442.512 306.042 l +442.958 306.285 l +443.405 306.225 l +443.851 305.91 l +444.298 305.385 l +444.744 304.69 l +445.19 303.857 l +445.637 302.917 l +446.083 301.894 l +446.53 300.807 l +446.976 299.674 l +447.422 298.509 l +447.869 297.321 l +448.315 296.121 l +448.762 294.915 l +449.208 293.71 l +449.654 292.509 l +450.101 291.318 l +450.547 290.138 l +450.994 288.972 l +451.44 287.823 l +451.886 286.691 l +452.333 285.578 l +452.779 284.484 l +453.226 283.41 l +453.672 282.357 l +454.118 281.325 l +454.565 280.314 l +455.011 279.324 l +455.458 278.355 l +455.904 277.407 l +456.35 276.479 l +456.797 275.572 l +457.243 274.686 l +457.69 273.819 l +458.136 272.972 l +458.582 272.145 l +459.029 271.337 l +459.475 270.547 l +459.922 269.776 l +460.368 269.023 l +460.814 268.288 l +461.261 267.571 l +461.707 266.87 l +462.154 266.186 l +462.6 265.519 l +463.046 264.867 l +463.493 264.231 l +463.939 263.611 l +464.386 263.005 l +464.832 262.414 l +465.278 261.837 l +465.725 261.275 l +466.171 260.726 l +466.618 260.19 l +467.064 259.668 l +467.51 259.158 l +467.957 258.661 l +468.403 258.176 l +468.85 257.703 l +469.296 257.242 l +469.742 256.792 l +470.189 256.354 l +470.635 255.926 l +471.082 255.508 l +471.528 255.102 l +471.974 254.705 l +472.421 254.318 l +472.867 253.941 l +473.314 253.574 l +473.76 253.215 l +474.206 252.866 l +474.653 252.526 l +475.099 252.194 l +475.546 251.871 l +475.992 251.556 l +476.438 251.25 l +476.885 250.951 l +477.331 250.66 l +477.778 250.376 l +478.224 250.1 l +478.67 249.832 l +479.117 249.57 l +479.563 249.316 l +480.01 249.069 l +480.456 248.828 l +480.902 248.594 l +481.349 248.366 l +481.795 248.145 l +482.242 247.93 l +482.688 247.722 l +483.134 247.519 l +483.581 247.323 l +484.027 247.132 l +484.474 246.948 l +484.92 246.769 l +485.366 246.596 l +485.813 246.429 l +486.259 246.267 l +486.706 246.111 l +487.152 245.961 l +487.598 245.816 l +488.045 245.677 l +488.491 245.543 l +488.938 245.415 l +489.384 245.293 l +489.83 245.177 l +490.277 245.066 l +490.723 244.961 l +491.17 244.862 l +491.616 244.77 l +492.062 244.683 l +492.509 244.603 l +492.955 244.53 l +493.402 244.463 l +493.848 244.404 l +494.294 244.352 l +494.741 244.308 l +495.187 244.272 l +495.634 244.246 l +496.08 244.228 l +496.526 244.221 l +496.973 244.224 l +497.419 244.239 l +497.866 244.267 l +498.312 244.309 l +498.758 244.366 l +499.205 244.441 l +499.651 244.534 l +500.098 244.648 l +500.544 244.785 l +500.99 244.95 l +501.437 245.144 l +501.883 245.373 l +502.33 245.642 l +502.776 245.956 l +503.222 246.323 l +503.669 246.751 l +504.115 247.249 l +504.562 247.831 l +505.008 248.508 l +505.454 249.299 l +505.901 250.221 l +506.347 251.298 l +506.794 252.552 l +507.24 254.013 l +507.686 255.708 l +508.133 257.668 l +508.579 259.919 l +509.026 262.482 l +509.472 265.368 l +509.918 268.573 l +510.365 272.068 l +510.811 275.802 l +511.258 279.695 l +511.704 283.645 l +512.15 287.532 l +512.597 291.235 l +513.043 294.642 l +513.49 297.663 l +513.936 300.237 l +514.382 302.334 l +514.829 303.953 l +515.275 305.115 l +515.722 305.859 l +516.168 306.231 l +516.614 306.281 l +517.061 306.058 l +517.507 305.608 l +517.954 304.973 l +stroke +grestore +0.000 setgray +/BitstreamVeraSans-Roman findfont +12.000 scalefont +setfont +68.977 225.461 m +0 0.172 rmoveto +(0) show +0.500 setlinewidth +0 setlinecap +[1 3] 0 setdash +gsave +446.4 150.261 72 238.539 clipbox +161.28 238.539 m +161.28 388.8 l +stroke +grestore +[] 0 setdash +/o { gsave +newpath +translate +-0.5 0 m +-0.5 4 l +closepath +stroke +grestore } bind def +161.28 238.539 o +/o { gsave +newpath +translate +-0.5 -4 m +-0.5 0 l +closepath +stroke +grestore } bind def +161.28 388.8 o +154.475 225.461 m +0 0.172 rmoveto +(20) show +[1 3] 0 setdash +gsave +446.4 150.261 72 238.539 clipbox +250.56 238.539 m +250.56 388.8 l +stroke +grestore +[] 0 setdash +/o { gsave +newpath +translate +-0.5 0 m +-0.5 4 l +closepath +stroke +grestore } bind def +250.56 238.539 o +/o { gsave +newpath +translate +-0.5 -4 m +-0.5 0 l +closepath +stroke +grestore } bind def +250.56 388.8 o +243.615 225.461 m +0 0.172 rmoveto +(40) show +[1 3] 0 setdash +gsave +446.4 150.261 72 238.539 clipbox +339.84 238.539 m +339.84 388.8 l +stroke +grestore +[] 0 setdash +/o { gsave +newpath +translate +-0.5 0 m +-0.5 4 l +closepath +stroke +grestore } bind def +339.84 238.539 o +/o { gsave +newpath +translate +-0.5 -4 m +-0.5 0 l +closepath +stroke +grestore } bind def +339.84 388.8 o +333.02 225.461 m +0 0.172 rmoveto +(60) show +[1 3] 0 setdash +gsave +446.4 150.261 72 238.539 clipbox +429.12 238.539 m +429.12 388.8 l +stroke +grestore +[] 0 setdash +/o { gsave +newpath +translate +-0.5 0 m +-0.5 4 l +closepath +stroke +grestore } bind def +429.12 238.539 o +/o { gsave +newpath +translate +-0.5 -4 m +-0.5 0 l +closepath +stroke +grestore } bind def +429.12 388.8 o +422.284 225.461 m +0 0.172 rmoveto +(80) show +507.994 225.461 m +0 0.172 rmoveto +(100) show +259.044 208.836 m +0 2.5 rmoveto +(time \(years\)) show +61.953 234 m +0 0.172 rmoveto +(0) show +[1 3] 0 setdash +gsave +446.4 150.261 72 238.539 clipbox +72 263.583 m +518.4 263.583 l +stroke +grestore +[] 0 setdash +/o { gsave +newpath +translate +0 0.5 m +4 0.5 l +closepath +stroke +grestore } bind def +72 263.583 o +/o { gsave +newpath +translate +-4 0.5 m +0 0.5 l +closepath +stroke +grestore } bind def +518.4 263.583 o +62.328 259.122 m +0 0.172 rmoveto +(5) show +[1 3] 0 setdash +gsave +446.4 150.261 72 238.539 clipbox +72 288.626 m +518.4 288.626 l +stroke +grestore +[] 0 setdash +/o { gsave +newpath +translate +0 0.5 m +4 0.5 l +closepath +stroke +grestore } bind def +72 288.626 o +/o { gsave +newpath +translate +-4 0.5 m +0 0.5 l +closepath +stroke +grestore } bind def +518.4 288.626 o +54.828 284.087 m +0 0.172 rmoveto +(10) show +[1 3] 0 setdash +gsave +446.4 150.261 72 238.539 clipbox +72 313.67 m +518.4 313.67 l +stroke +grestore +[] 0 setdash +/o { gsave +newpath +translate +0 0.5 m +4 0.5 l +closepath +stroke +grestore } bind def +72 313.67 o +/o { gsave +newpath +translate +-4 0.5 m +0 0.5 l +closepath +stroke +grestore } bind def +518.4 313.67 o +55.078 309.209 m +0 0.172 rmoveto +(15) show +[1 3] 0 setdash +gsave +446.4 150.261 72 238.539 clipbox +72 338.713 m +518.4 338.713 l +stroke +grestore +[] 0 setdash +/o { gsave +newpath +translate +0 0.5 m +4 0.5 l +closepath +stroke +grestore } bind def +72 338.713 o +/o { gsave +newpath +translate +-4 0.5 m +0 0.5 l +closepath +stroke +grestore } bind def +518.4 338.713 o +54.391 334.174 m +0 0.172 rmoveto +(20) show +[1 3] 0 setdash +gsave +446.4 150.261 72 238.539 clipbox +72 363.757 m +518.4 363.757 l +stroke +grestore +[] 0 setdash +/o { gsave +newpath +translate +0 0.5 m +4 0.5 l +closepath +stroke +grestore } bind def +72 363.757 o +/o { gsave +newpath +translate +-4 0.5 m +0 0.5 l +closepath +stroke +grestore } bind def +518.4 363.757 o +54.641 359.217 m +0 0.172 rmoveto +(25) show +54.438 384.261 m +0 0.172 rmoveto +(30) show +49.391 282.787 m +gsave +90 rotate +0 2.5 rmoveto +(population) show +grestore +1.000 setlinewidth +2 setlinecap +72 238.539 m +518.4 238.539 l +518.4 388.8 l +72 388.8 l +72 238.539 l +stroke +/BitstreamVeraSans-Roman findfont +14.000 scalefont +setfont +155.887 391.805 m +0 2.906 rmoveto +(population trajectories and phase plane) show +412.181 356.305 m +412.181 385.795 l +509.472 385.795 l +509.472 356.305 l +closepath +gsave +1.000 setgray +fill +grestore +stroke +0.000 0.000 1.000 setrgbcolor +2.000 setlinewidth +423.288 377.915 m +445.608 377.915 l +stroke +0.000 0.502 0.000 setrgbcolor +423.288 364.184 m +445.608 364.184 l +stroke +0.000 setgray +454.536 372.494 m +0 0.203 rmoveto +(rabbits) show +454.536 358.762 m +0 0.203 rmoveto +(foxes) show +1.000 setlinewidth +145.415 43.2 m +145.415 193.461 l +444.985 193.461 l +444.985 43.2 l +closepath +gsave +1.000 setgray +fill +grestore +stroke +0.000 setlinewidth +0 setlinecap +gsave +299.6 150.3 145.4 43.2 clipbox +145.029 43.296 m +145.139 42.914 l +145.524 42.818 l +145.8 43.104 l +145.691 43.486 l +145.305 43.582 l +145.029 43.296 l +closepath +gsave +fill +grestore +grestore +gsave +299.6 150.3 145.4 43.2 clipbox +154.925 43.597 m +154.581 43.399 l +154.581 43.001 l +154.925 42.803 l +155.269 43.001 l +155.269 43.399 l +154.925 43.597 l +closepath +gsave +fill +grestore +grestore +gsave +299.6 150.3 145.4 43.2 clipbox +164.827 43.265 m +164.574 43.572 l +164.183 43.507 l +164.043 43.135 l +164.296 42.828 l +164.687 42.893 l +164.827 43.265 l +closepath +gsave +fill +grestore +grestore +gsave +299.6 150.3 145.4 43.2 clipbox +173.937 43.336 m +174.073 43.345 l +173.92 43.609 l +175.309 43.285 l +173.971 42.791 l +174.09 43.072 l +173.954 43.064 l +closepath +gsave +fill +grestore +grestore +gsave +299.6 150.3 145.4 43.2 clipbox +183.45 43.405 m +183.654 43.41 l +183.438 43.814 l +185.502 43.257 l +183.472 42.586 l +183.666 43.001 l +183.461 42.995 l +closepath +gsave +fill +grestore +grestore +gsave +299.6 150.3 145.4 43.2 clipbox +192.963 43.473 m +193.236 43.476 l +192.957 44.019 l +195.694 43.228 l +192.974 42.381 l +193.241 42.93 l +192.968 42.927 l +closepath +gsave +fill +grestore +grestore +gsave +299.6 150.3 145.4 43.2 clipbox +202.476 43.541 m +202.817 43.541 l +202.476 44.223 l +205.886 43.2 l +202.476 42.177 l +202.817 42.859 l +202.476 42.859 l +closepath +gsave +fill +grestore +grestore +gsave +299.6 150.3 145.4 43.2 clipbox +211.989 43.597 m +212.507 43.594 l +212.115 44.391 l +216.078 43.172 l... [truncated message content] |
From: <jd...@us...> - 2007-10-30 19:18:30
|
Revision: 4066 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4066&view=rev Author: jdh2358 Date: 2007-10-30 12:18:26 -0700 (Tue, 30 Oct 2007) Log Message: ----------- increased fig size Modified Paths: -------------- trunk/py4science/workbook/fft_imdenoise.tex trunk/py4science/workbook/lotka_volterra.tex trunk/py4science/workbook/stats_descriptives.tex trunk/py4science/workbook/stats_distributions.tex trunk/py4science/workbook/trapezoid.tex Modified: trunk/py4science/workbook/fft_imdenoise.tex =================================================================== --- trunk/py4science/workbook/fft_imdenoise.tex 2007-10-30 19:14:17 UTC (rev 4065) +++ trunk/py4science/workbook/fft_imdenoise.tex 2007-10-30 19:18:26 UTC (rev 4066) @@ -44,7 +44,7 @@ \lstinputlisting[label=code:fft_imdenoise_skel,caption={IGNORED}]{skel/fft_imdenoise_skel.py} \begin{figure} -\begin{centering}\includegraphics[width=3in]{fig/fft_imdenoise}\par\end{centering} +\begin{centering}\includegraphics[width=4in]{fig/fft_imdenoise}\par\end{centering} \caption{\label{fig:fft_imdenoise}High freqeuency noise filtering of a 2D image in the Fourier domain. The upper panels show the original image (left) and spectral power (right) and the lower panels show the same data with the high frequency power set to zero. Although the input and output images are grayscale, you can provide colormaps to \texttt{pylab.imshow} to plot them in psudo-color} \end{figure} Modified: trunk/py4science/workbook/lotka_volterra.tex =================================================================== --- trunk/py4science/workbook/lotka_volterra.tex 2007-10-30 19:14:17 UTC (rev 4065) +++ trunk/py4science/workbook/lotka_volterra.tex 2007-10-30 19:18:26 UTC (rev 4066) @@ -4,7 +4,7 @@ \lstinputlisting[label=code:lotka_volterra_skel,caption={IGNORED}]{skel/lotka_volterra_skel.py} \begin{figure} -\begin{centering}\includegraphics[width=3in]{fig/lotka_volterra}\par\end{centering} +\begin{centering}\includegraphics[width=4in]{fig/lotka_volterra}\par\end{centering} \caption{\label{fig:lotka_volterra}Upper panel shows population trajectories for rabbits (blue) and foxes (green) simulated using Modified: trunk/py4science/workbook/stats_descriptives.tex =================================================================== --- trunk/py4science/workbook/stats_descriptives.tex 2007-10-30 19:14:17 UTC (rev 4065) +++ trunk/py4science/workbook/stats_descriptives.tex 2007-10-30 19:18:26 UTC (rev 4066) @@ -47,7 +47,7 @@ \lstinputlisting[label=code:stats_descriptives_skel,caption={IGNORED}]{skel/stats_descriptives_skel.py} \begin{figure} -\begin{centering}\includegraphics[width=3in]{fig/stats_descriptives}\par\end{centering} +\begin{centering}\includegraphics[width=4in]{fig/stats_descriptives}\par\end{centering} \caption{\label{fig:stats_descriptives}} \end{figure} Modified: trunk/py4science/workbook/stats_distributions.tex =================================================================== --- trunk/py4science/workbook/stats_distributions.tex 2007-10-30 19:14:17 UTC (rev 4065) +++ trunk/py4science/workbook/stats_distributions.tex 2007-10-30 19:18:26 UTC (rev 4066) @@ -81,7 +81,7 @@ \lstinputlisting[label=code:stats_distributions_skel,caption={IGNORED}]{skel/stats_distributions_skel.py} \begin{figure} -\begin{centering}\includegraphics[width=3in]{fig/stats_distributions}\par\end{centering} +\begin{centering}\includegraphics[width=4in]{fig/stats_distributions}\par\end{centering} \caption{\label{fig:stats_distributions}} \end{figure} Modified: trunk/py4science/workbook/trapezoid.tex =================================================================== --- trunk/py4science/workbook/trapezoid.tex 2007-10-30 19:14:17 UTC (rev 4065) +++ trunk/py4science/workbook/trapezoid.tex 2007-10-30 19:18:26 UTC (rev 4066) @@ -28,7 +28,7 @@ % \begin{figure} -\begin{centering}\includegraphics[width=3in]{fig/Composite_trapezoidal_rule_illustration}\par\end{centering} +\begin{centering}\includegraphics[width=4in]{fig/Composite_trapezoidal_rule_illustration}\par\end{centering} \caption{\label{fig:trapezoid}Illustration of the composite trapezoidal rule This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jd...@us...> - 2007-10-30 20:21:42
|
Revision: 4067 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4067&view=rev Author: jdh2358 Date: 2007-10-30 13:21:39 -0700 (Tue, 30 Oct 2007) Log Message: ----------- added solved vs skeletons Makefile build Modified Paths: -------------- trunk/py4science/workbook/convolution.tex trunk/py4science/workbook/fft_imdenoise.tex trunk/py4science/workbook/files_etc.tex trunk/py4science/workbook/glass_dots.tex trunk/py4science/workbook/lotka_volterra.tex trunk/py4science/workbook/qsort.tex trunk/py4science/workbook/quad_newton.tex trunk/py4science/workbook/stats_descriptives.tex trunk/py4science/workbook/stats_distributions.tex trunk/py4science/workbook/trapezoid.tex trunk/py4science/workbook/wallis_pi.tex trunk/py4science/workbook/wordfreqs.tex Added Paths: ----------- trunk/py4science/workbook/Makefile trunk/py4science/workbook/examples_skel/ trunk/py4science/workbook/examples_skel/convolution_demo.py trunk/py4science/workbook/examples_skel/fft_imdenoise.py trunk/py4science/workbook/examples_skel/glass_dots1.py trunk/py4science/workbook/examples_skel/lotka_volterra.py trunk/py4science/workbook/examples_skel/noisy_sine.py trunk/py4science/workbook/examples_skel/qsort.py trunk/py4science/workbook/examples_skel/quad_newton.py trunk/py4science/workbook/examples_skel/stats_descriptives.py trunk/py4science/workbook/examples_skel/stats_distributions.py trunk/py4science/workbook/examples_skel/stock_records.py trunk/py4science/workbook/examples_skel/trapezoid.py trunk/py4science/workbook/examples_skel/wallis_pi.py trunk/py4science/workbook/examples_skel/wordfreqs.py trunk/py4science/workbook/examples_solved Removed Paths: ------------- trunk/py4science/workbook/skel Added: trunk/py4science/workbook/Makefile =================================================================== --- trunk/py4science/workbook/Makefile (rev 0) +++ trunk/py4science/workbook/Makefile 2007-10-30 20:21:39 UTC (rev 4067) @@ -0,0 +1,11 @@ +solved: + rm -rf examples + ln -s examples_solved examples + cp main.tex workbook_solved.tex + pdflatex workbook_solved + +skeletons: + rm -rf examples + ln -s examples_skel examples + cp main.tex workbook_skeletons.tex + pdflatex workbook_skeletons Modified: trunk/py4science/workbook/convolution.tex =================================================================== --- trunk/py4science/workbook/convolution.tex 2007-10-30 19:18:26 UTC (rev 4066) +++ trunk/py4science/workbook/convolution.tex 2007-10-30 20:21:39 UTC (rev 4067) @@ -87,7 +87,7 @@ multiplication property to perform the same convolution in Fourier space to confirm the numerical result from \texttt{numpy.convolve}. -\lstinputlisting[label=code:convolution_demo,caption={IGNORED}]{skel/convolution_demo_skel.py} +\lstinputlisting[label=code:convolution_demo,caption={IGNORED}]{examples/convolution_demo.py} Added: trunk/py4science/workbook/examples_skel/convolution_demo.py =================================================================== --- trunk/py4science/workbook/examples_skel/convolution_demo.py (rev 0) +++ trunk/py4science/workbook/examples_skel/convolution_demo.py 2007-10-30 20:21:39 UTC (rev 4067) @@ -0,0 +1 @@ +link ../../examples/skel/convolution_demo_skel.py \ No newline at end of file Property changes on: trunk/py4science/workbook/examples_skel/convolution_demo.py ___________________________________________________________________ Name: svn:special + * Added: trunk/py4science/workbook/examples_skel/fft_imdenoise.py =================================================================== --- trunk/py4science/workbook/examples_skel/fft_imdenoise.py (rev 0) +++ trunk/py4science/workbook/examples_skel/fft_imdenoise.py 2007-10-30 20:21:39 UTC (rev 4067) @@ -0,0 +1 @@ +link ../../examples/skel/fft_imdenoise_skel.py \ No newline at end of file Property changes on: trunk/py4science/workbook/examples_skel/fft_imdenoise.py ___________________________________________________________________ Name: svn:special + * Added: trunk/py4science/workbook/examples_skel/glass_dots1.py =================================================================== --- trunk/py4science/workbook/examples_skel/glass_dots1.py (rev 0) +++ trunk/py4science/workbook/examples_skel/glass_dots1.py 2007-10-30 20:21:39 UTC (rev 4067) @@ -0,0 +1 @@ +link ../../examples/skel/glass_dots1_skel.py \ No newline at end of file Property changes on: trunk/py4science/workbook/examples_skel/glass_dots1.py ___________________________________________________________________ Name: svn:special + * Added: trunk/py4science/workbook/examples_skel/lotka_volterra.py =================================================================== --- trunk/py4science/workbook/examples_skel/lotka_volterra.py (rev 0) +++ trunk/py4science/workbook/examples_skel/lotka_volterra.py 2007-10-30 20:21:39 UTC (rev 4067) @@ -0,0 +1 @@ +link ../../examples/skel/lotka_volterra_skel.py \ No newline at end of file Property changes on: trunk/py4science/workbook/examples_skel/lotka_volterra.py ___________________________________________________________________ Name: svn:special + * Added: trunk/py4science/workbook/examples_skel/noisy_sine.py =================================================================== --- trunk/py4science/workbook/examples_skel/noisy_sine.py (rev 0) +++ trunk/py4science/workbook/examples_skel/noisy_sine.py 2007-10-30 20:21:39 UTC (rev 4067) @@ -0,0 +1 @@ +link ../../examples/skel/noisy_sine_skel.py \ No newline at end of file Property changes on: trunk/py4science/workbook/examples_skel/noisy_sine.py ___________________________________________________________________ Name: svn:special + * Added: trunk/py4science/workbook/examples_skel/qsort.py =================================================================== --- trunk/py4science/workbook/examples_skel/qsort.py (rev 0) +++ trunk/py4science/workbook/examples_skel/qsort.py 2007-10-30 20:21:39 UTC (rev 4067) @@ -0,0 +1 @@ +link ../../examples/skel/qsort_skel.py \ No newline at end of file Property changes on: trunk/py4science/workbook/examples_skel/qsort.py ___________________________________________________________________ Name: svn:special + * Added: trunk/py4science/workbook/examples_skel/quad_newton.py =================================================================== --- trunk/py4science/workbook/examples_skel/quad_newton.py (rev 0) +++ trunk/py4science/workbook/examples_skel/quad_newton.py 2007-10-30 20:21:39 UTC (rev 4067) @@ -0,0 +1 @@ +link ../../examples/skel/quad_newton_skel.py \ No newline at end of file Property changes on: trunk/py4science/workbook/examples_skel/quad_newton.py ___________________________________________________________________ Name: svn:special + * Added: trunk/py4science/workbook/examples_skel/stats_descriptives.py =================================================================== --- trunk/py4science/workbook/examples_skel/stats_descriptives.py (rev 0) +++ trunk/py4science/workbook/examples_skel/stats_descriptives.py 2007-10-30 20:21:39 UTC (rev 4067) @@ -0,0 +1 @@ +link ../../examples/skel/stats_descriptives_skel.py \ No newline at end of file Property changes on: trunk/py4science/workbook/examples_skel/stats_descriptives.py ___________________________________________________________________ Name: svn:special + * Added: trunk/py4science/workbook/examples_skel/stats_distributions.py =================================================================== --- trunk/py4science/workbook/examples_skel/stats_distributions.py (rev 0) +++ trunk/py4science/workbook/examples_skel/stats_distributions.py 2007-10-30 20:21:39 UTC (rev 4067) @@ -0,0 +1 @@ +link ../../examples/skel/stats_distributions_skel.py \ No newline at end of file Property changes on: trunk/py4science/workbook/examples_skel/stats_distributions.py ___________________________________________________________________ Name: svn:special + * Added: trunk/py4science/workbook/examples_skel/stock_records.py =================================================================== --- trunk/py4science/workbook/examples_skel/stock_records.py (rev 0) +++ trunk/py4science/workbook/examples_skel/stock_records.py 2007-10-30 20:21:39 UTC (rev 4067) @@ -0,0 +1 @@ +link ../../examples/skel/stock_records_skel.py \ No newline at end of file Property changes on: trunk/py4science/workbook/examples_skel/stock_records.py ___________________________________________________________________ Name: svn:special + * Added: trunk/py4science/workbook/examples_skel/trapezoid.py =================================================================== --- trunk/py4science/workbook/examples_skel/trapezoid.py (rev 0) +++ trunk/py4science/workbook/examples_skel/trapezoid.py 2007-10-30 20:21:39 UTC (rev 4067) @@ -0,0 +1 @@ +link ../../examples/skel/trapezoid_skel.py \ No newline at end of file Property changes on: trunk/py4science/workbook/examples_skel/trapezoid.py ___________________________________________________________________ Name: svn:special + * Added: trunk/py4science/workbook/examples_skel/wallis_pi.py =================================================================== --- trunk/py4science/workbook/examples_skel/wallis_pi.py (rev 0) +++ trunk/py4science/workbook/examples_skel/wallis_pi.py 2007-10-30 20:21:39 UTC (rev 4067) @@ -0,0 +1 @@ +link ../../examples/skel/wallis_pi_skel.py \ No newline at end of file Property changes on: trunk/py4science/workbook/examples_skel/wallis_pi.py ___________________________________________________________________ Name: svn:special + * Added: trunk/py4science/workbook/examples_skel/wordfreqs.py =================================================================== --- trunk/py4science/workbook/examples_skel/wordfreqs.py (rev 0) +++ trunk/py4science/workbook/examples_skel/wordfreqs.py 2007-10-30 20:21:39 UTC (rev 4067) @@ -0,0 +1 @@ +link ../../examples/skel/wordfreqs_skel.py \ No newline at end of file Property changes on: trunk/py4science/workbook/examples_skel/wordfreqs.py ___________________________________________________________________ Name: svn:special + * Added: trunk/py4science/workbook/examples_solved =================================================================== --- trunk/py4science/workbook/examples_solved (rev 0) +++ trunk/py4science/workbook/examples_solved 2007-10-30 20:21:39 UTC (rev 4067) @@ -0,0 +1 @@ +link ../examples \ No newline at end of file Property changes on: trunk/py4science/workbook/examples_solved ___________________________________________________________________ Name: svn:special + * Modified: trunk/py4science/workbook/fft_imdenoise.tex =================================================================== --- trunk/py4science/workbook/fft_imdenoise.tex 2007-10-30 19:18:26 UTC (rev 4066) +++ trunk/py4science/workbook/fft_imdenoise.tex 2007-10-30 20:21:39 UTC (rev 4067) @@ -41,7 +41,7 @@ to one. This serves to enhance contrast among the darker elements of the image, so it is not completely dominated by the brighter segments -\lstinputlisting[label=code:fft_imdenoise_skel,caption={IGNORED}]{skel/fft_imdenoise_skel.py} +\lstinputlisting[label=code:fft_imdenoise,caption={IGNORED}]{examples/fft_imdenoise.py} \begin{figure} \begin{centering}\includegraphics[width=4in]{fig/fft_imdenoise}\par\end{centering} Modified: trunk/py4science/workbook/files_etc.tex =================================================================== --- trunk/py4science/workbook/files_etc.tex 2007-10-30 19:18:26 UTC (rev 4066) +++ trunk/py4science/workbook/files_etc.tex 2007-10-30 20:21:39 UTC (rev 4067) @@ -44,7 +44,7 @@ Here is the exercise skeleton of the script to create and plot the data file -\lstinputlisting[label=code:noisy_sine_skel,caption={IGNORED}]{skel/noisy_sine_skel.py} +\lstinputlisting[label=code:noisy_sine,caption={IGNORED}]{examples/noisy_sine.py} and the graph will look something like Figure~\ref{fig:noisy_sine} @@ -189,7 +189,7 @@ in 2003 and held to the present) for each stock. Here is the exercise skeleton.: -\lstinputlisting[label=code:stock_records_skel,caption={IGNORED}]{skel/stock_records_skel.py} +\lstinputlisting[label=code:stock_records,caption={IGNORED}]{examples/stock_records.py} The graph will look something like Figure~\ref{fig:stock_records}. Modified: trunk/py4science/workbook/glass_dots.tex =================================================================== --- trunk/py4science/workbook/glass_dots.tex 2007-10-30 19:18:26 UTC (rev 4066) +++ trunk/py4science/workbook/glass_dots.tex 2007-10-30 20:21:39 UTC (rev 4067) @@ -38,7 +38,7 @@ \textit{stable node}, if one is greater than one and the other less than one, we have a \textit{saddle node}. -\lstinputlisting[label=code:glass_dots1_skel,caption={IGNORED}]{skel/glass_dots1_skel.py} +\lstinputlisting[label=code:glass_dots1,caption={IGNORED}]{examples/glass_dots1.py} Modified: trunk/py4science/workbook/lotka_volterra.tex =================================================================== --- trunk/py4science/workbook/lotka_volterra.tex 2007-10-30 19:18:26 UTC (rev 4066) +++ trunk/py4science/workbook/lotka_volterra.tex 2007-10-30 20:21:39 UTC (rev 4067) @@ -1,7 +1,7 @@ \section{Lotka-Volterra Equations} \label{sec:lotka_volterra} -\lstinputlisting[label=code:lotka_volterra_skel,caption={IGNORED}]{skel/lotka_volterra_skel.py} +\lstinputlisting[label=code:lotka_volterra,caption={IGNORED}]{examples/lotka_volterra.py} \begin{figure} \begin{centering}\includegraphics[width=4in]{fig/lotka_volterra}\par\end{centering} Modified: trunk/py4science/workbook/qsort.tex =================================================================== --- trunk/py4science/workbook/qsort.tex 2007-10-30 19:18:26 UTC (rev 4066) +++ trunk/py4science/workbook/qsort.tex 2007-10-30 20:21:39 UTC (rev 4067) @@ -20,11 +20,11 @@ represents the sorting operation, $+$ indicates list concatenation and $[p]$ is the list containing the pivot as its single element. \end{enumerate} -The listing~\ref{code:qsort_skel} contains a skeleton with no implementation +The listing~\ref{code:qsort} contains a skeleton with no implementation but with tests already written (in the form of \emph{unit tests}, as described in the introduction). -\lstinputlisting[label=code:qsort_skel,caption={IGNORED}]{skel/qsort_skel.py} +\lstinputlisting[label=code:qsort,caption={IGNORED}]{examples/qsort.py} \subsection*{Hints} Modified: trunk/py4science/workbook/quad_newton.tex =================================================================== --- trunk/py4science/workbook/quad_newton.tex 2007-10-30 19:18:26 UTC (rev 4066) +++ trunk/py4science/workbook/quad_newton.tex 2007-10-30 20:21:39 UTC (rev 4067) @@ -26,9 +26,9 @@ u=\frac{1}{4}.\] -The listing~\ref{code:quad_newton_skel} contains a skeleton that +The listing~\ref{code:quad_newton} contains a skeleton that includes for comparison the correct numerical value. -\lstinputlisting[label=code:quad_newton_skel,caption={IGNORED}]{skel/quad_newton_skel.py} +\lstinputlisting[label=code:quad_newton,caption={IGNORED}]{examples/quad_newton.py} Deleted: trunk/py4science/workbook/skel =================================================================== --- trunk/py4science/workbook/skel 2007-10-30 19:18:26 UTC (rev 4066) +++ trunk/py4science/workbook/skel 2007-10-30 20:21:39 UTC (rev 4067) @@ -1 +0,0 @@ -link ../examples/skel \ No newline at end of file Modified: trunk/py4science/workbook/stats_descriptives.tex =================================================================== --- trunk/py4science/workbook/stats_descriptives.tex 2007-10-30 19:18:26 UTC (rev 4066) +++ trunk/py4science/workbook/stats_descriptives.tex 2007-10-30 20:21:39 UTC (rev 4067) @@ -44,7 +44,7 @@ \end{lstlisting} -\lstinputlisting[label=code:stats_descriptives_skel,caption={IGNORED}]{skel/stats_descriptives_skel.py} +\lstinputlisting[label=code:stats_descriptives,caption={IGNORED}]{examples/stats_descriptives.py} \begin{figure} \begin{centering}\includegraphics[width=4in]{fig/stats_descriptives}\par\end{centering} Modified: trunk/py4science/workbook/stats_distributions.tex =================================================================== --- trunk/py4science/workbook/stats_distributions.tex 2007-10-30 19:18:26 UTC (rev 4066) +++ trunk/py4science/workbook/stats_distributions.tex 2007-10-30 20:21:39 UTC (rev 4067) @@ -78,7 +78,7 @@ should look something like those in Figure~\ref{fig:stats_distributions}. -\lstinputlisting[label=code:stats_distributions_skel,caption={IGNORED}]{skel/stats_distributions_skel.py} +\lstinputlisting[label=code:stats_distributions,caption={IGNORED}]{examples/stats_distributions.py} \begin{figure} \begin{centering}\includegraphics[width=4in]{fig/stats_distributions}\par\end{centering} Modified: trunk/py4science/workbook/trapezoid.tex =================================================================== --- trunk/py4science/workbook/trapezoid.tex 2007-10-30 19:18:26 UTC (rev 4066) +++ trunk/py4science/workbook/trapezoid.tex 2007-10-30 20:21:39 UTC (rev 4067) @@ -36,11 +36,11 @@ \end{figure} -Listing~\ref{code:trapezoid_skel} contains a skeleton for this problem, +Listing~\ref{code:trapezoid} contains a skeleton for this problem, written in the form of two incomplete functions and a set of automatic tests (in the form of \emph{unit tests}, as described in the introduction). -\lstinputlisting[label=code:trapezoid_skel,caption={IGNORED}]{skel/trapezoid_skel.py} +\lstinputlisting[label=code:trapezoid,caption={IGNORED}]{examples/trapezoid.py} In this exercise, you'll need to write two functions, \texttt{trapz} and \texttt{trapzf}. \texttt{trapz} applies the trapezoid formula Modified: trunk/py4science/workbook/wallis_pi.tex =================================================================== --- trunk/py4science/workbook/wallis_pi.tex 2007-10-30 19:18:26 UTC (rev 4066) +++ trunk/py4science/workbook/wallis_pi.tex 2007-10-30 20:21:39 UTC (rev 4067) @@ -6,12 +6,12 @@ \pi=\prod_{i=1}^{\infty}\frac{4i^{2}}{4i^{2}-1}.\end{equation} -The listing~\ref{code:wallis_pi_skel} contains a skeleton with no +The listing~\ref{code:wallis_pi} contains a skeleton with no implementation but with some plotting commands already inserted, so that you can visualize the convergence rate of this formula as more terms are kept. -\lstinputlisting[label=code:wallis_pi_skel,caption={IGNORED}]{skel/wallis_pi_skel.py} +\lstinputlisting[label=code:wallis_pi,caption={IGNORED}]{examples/wallis_pi.py} After running the script successfully, you should obtain a plot similar to Figure~\ref{fig:wallis_pi}. Modified: trunk/py4science/workbook/wordfreqs.tex =================================================================== --- trunk/py4science/workbook/wordfreqs.tex 2007-10-30 19:18:26 UTC (rev 4066) +++ trunk/py4science/workbook/wordfreqs.tex 2007-10-30 20:21:39 UTC (rev 4067) @@ -14,10 +14,10 @@ In this problem, you will need to count the frequencies of all the words contained in a compressed text file supplied as input. -The listing~\ref{code:wordfreqs_skel} contains a skeleton for this +The listing~\ref{code:wordfreqs} contains a skeleton for this problem, with \texttt{XXX} marking various places that are incomplete. -\lstinputlisting[label=code:wordfreqs_skel,caption={IGNORED}]{skel/wordfreqs_skel.py} +\lstinputlisting[label=code:wordfreqs,caption={IGNORED}]{examples/wordfreqs.py} \subsection*{Hints} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jd...@us...> - 2007-11-03 12:32:03
|
Revision: 4100 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4100&view=rev Author: jdh2358 Date: 2007-11-03 05:31:59 -0700 (Sat, 03 Nov 2007) Log Message: ----------- added readme and exercise template Added Paths: ----------- trunk/py4science/workbook/README trunk/py4science/workbook/template.tex Added: trunk/py4science/workbook/README =================================================================== --- trunk/py4science/workbook/README (rev 0) +++ trunk/py4science/workbook/README 2007-11-03 12:31:59 UTC (rev 4100) @@ -0,0 +1,22 @@ +This is the workbook for the py4science course. It is made up of a +bunch of different units, each of which lives in a separate *.tex +file. To make a new unit, copy template.tex to yourfile.tex and fill +it in. We use the latex listing package for including python source +code. + +For every unit, create an example in ../examples/your_example.py, a +skeleton in ../examples/your_example_skel.py, and a symlink from +../examples/your_example_skel.py -> examples_skel/your_example.py +(../examples is in the top level of the py4science repository). If +there are any figures, you should create a PNG and EPS version of each +and add them to the fig subdirectory of the workbook directory. You +will need to svn add your tex file, example, skeleton, skeleton +symlink, and figures. + +You can build the workbook in skeleton form with + + > make skeletons # create workbook_skeletons.pdf + +and in solved form with + + > make solved # creates workbook_solved.pdf Added: trunk/py4science/workbook/template.tex =================================================================== --- trunk/py4science/workbook/template.tex (rev 0) +++ trunk/py4science/workbook/template.tex 2007-11-03 12:31:59 UTC (rev 4100) @@ -0,0 +1,37 @@ +\section{Your Example} +\label{sec:your_example} + +This is your introduction. Refer to python packages like +\texttt{numpy} and \texttt{matplotlib}, as well as functions like +\texttt{n.arange}, with ``texttt''. + +Refer to figures like Figure~\ref{fig:your_figure}. Your example code +should be included like. + +\lstinputlisting[label=code:your_example,caption={IGNORED}]{examples/your_example.py} + +and your figures should be saved in the \textff{fig} subdirectory with +a PNG and EPS version. You should include it like + +\begin{figure} +\begin{centering}\includegraphics[width=4in]{fig/your_example}\par\end{centering} + +\caption{\label{fig:your_example}Your figure caption here} +\end{figure} + +If you want to include python code inline, including ipython sessions use the following environment. I sometimes decorate ipython sessions with comments. + +\begin{listing} +# use namespaces! +In [1]: import numpy as n + +In [2]: x = n.random.rand(10) + +In [3]: x**2 +Out[3]: +array([ 0.08694464, 0.99225328, 0.05017794, 0.44827437, 0.25938905, + 0.10617795, 0.27397649, 0.33391573, 0.27975237, 0.06808894]) + +In [4]: + +\end{listing} \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <js...@us...> - 2007-11-21 20:50:17
|
Revision: 4409 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4409&view=rev Author: jswhit Date: 2007-11-21 12:50:10 -0800 (Wed, 21 Nov 2007) Log Message: ----------- add 'Plotting on Maps' chapter Modified Paths: -------------- trunk/py4science/workbook/main.tex Added Paths: ----------- trunk/py4science/workbook/basemap.tex trunk/py4science/workbook/fig/basemap1.eps trunk/py4science/workbook/fig/basemap1.pdf trunk/py4science/workbook/fig/basemap1.png trunk/py4science/workbook/fig/basemap2.eps trunk/py4science/workbook/fig/basemap2.png trunk/py4science/workbook/fig/basemap3.eps trunk/py4science/workbook/fig/basemap3.pdf trunk/py4science/workbook/fig/basemap3.png trunk/py4science/workbook/fig/basemap4.eps trunk/py4science/workbook/fig/basemap4.pdf trunk/py4science/workbook/fig/basemap4.png trunk/py4science/workbook/fig/basemap5.pdf trunk/py4science/workbook/fig/basemap5.png Added: trunk/py4science/workbook/basemap.tex =================================================================== --- trunk/py4science/workbook/basemap.tex (rev 0) +++ trunk/py4science/workbook/basemap.tex 2007-11-21 20:50:10 UTC (rev 4409) @@ -0,0 +1,125 @@ +The matplotlib basemap toolkit is an add-on for matplotlib that provides +the capability to draw maps of the earth in various map projections, +and plot data on those maps. This section shows how to use basemap +to create simple maps, draw coastlines and political boundaries, draw +lines of constant latitude and longitude, and plot geophysical data +on the maps. + + +\section{Setting up the map.} + +In order to represent the curved surface of the earth in a two-dimensional +map, a map projection is needed. Since this cannot be done without +distortion, there are many map projections, each with it's own advantages +and disadvantages. Basemap provides 19 different map projections. +Some are global, some can only represent a portion of the globe. When +a Basemap class instance is created, the desired map projection must +be specified, along with information about the portion of the earth's +surface that the map projection will describe. There are two basic +ways of doing this. One is to provide the latitude and longitude values +of each of the four corners of the rectangular map projection region. +The other is to provide the lat/lon value of the center of the map +projection region along with the width and height of the region in +map projection coordinates. The first script illustrates how to use +both of these methods to create a simple map. It also shows how to +draw the continents and political boundaries on the map. + +Here is an example script that creates a map by specifying the latitudes +and longitudes of the four corners + +\lstinputlisting[label=code:basemap1_skel,caption={IGNORED}]{../examples/basemap1.py} + +After running this script, you should see a plot that looks similar +to Figure 1. + +\begin{figure}[h] +\includegraphics[scale=0.75]{fig/basemap1} + +\caption{A map created by specifying the latitudes and longitudes of the four +corners.} + +\end{figure} + +\medskip{} +Here is an example script that creates a map by specifying the center +of the map, plus the width and height in meters. + +\lstinputlisting[label=code:basemap2_skel,caption={IGNORED}]{../examples/basemap2.py} + +After running this script, you should see a plot that looks nearly +identical to Figure 1.\medskip{} + + +The Basemap class instance can be used to convert latitudes and longitudes +to coordinates on the map. To do this, simply call the instance as +if it were a function, passing it the longitude and latitudes values +to convert. The corresponding x and y values in map projection coordinates +will be returned. The following example script shows how to use this +to plot the locations of two cities (New York and London). The Basemap +method drawgreatcircle is then used to draw the great circle route +between these cities on the map. + +\lstinputlisting[label=code:basemap3_skel,caption={IGNORED}]{../examples/basemap3.py} + +This should produce something similar to Figure 2. + +\begin{figure}[h] +\includegraphics[scale=0.75]{fig/basemap3} + +\caption{Drawing the locations of two cities, and connecting them along a great +circle.} + +\end{figure} + +\medskip{} +Most maps include a graticule grid, a reference network of labelled +latitude and longitude lines. Basemap does this with the drawparallels +and drawmeridians instance methods. The longitude and latitude lines +can be labelled where the intersect the map projection boundary. Following +is an example script that draws a graticule on the map we've been +working with. + +\lstinputlisting[label=code:basemap4_skel,caption={IGNORED}]{../examples/basemap4.py} + +Running this script should produce a plot that looks like Figure 3. + +\begin{figure}[h] +\includegraphics[scale=0.75]{fig/basemap4} + +\caption{Drawing labelled meridians and parallels on the map (a graticule grid).} + +\end{figure} + + +\section{Plotting geophysical data on the map.} + +One of the most common uses of Basemap is to visualize earth science +data, such as output from climate models. These data often come on +latitude/longitude grids. One common data format for storing such +grids is NetCDF. Basemap includes a NetCDF file reader (written in +pure python by Roberto D'Almeida). There are python packages available +for reading just about every other scientific data format imaginable, +including HDF, GRIB, FITS and many others. Following is an example +of how to read sea-surface temperature data from a NetCDF file and +plot it on a global mollweide projection. + +\lstinputlisting[label=code:basemap5_skel,caption={IGNORED}]{../examples/basemap5.py} + +The resulting plot should look like Figure 4. + +\pagebreak + +\begin{figure}[h] +\includegraphics[scale=0.75]{fig/basemap5} + +\caption{Sea surface temperature on a global mollweide projection.} + +\end{figure} + +\medskip{} + +Basemap also is capable of reading ESRI shapefiles, a very common +GIS format. The script fillstates.py in the examples directory of +the basemap source distribution shows how to read and plot polygons +in a shapefile. There are many other useful examples in that directory +that illustrate various ways of using basemap.% Added: trunk/py4science/workbook/fig/basemap1.eps =================================================================== --- trunk/py4science/workbook/fig/basemap1.eps (rev 0) +++ trunk/py4science/workbook/fig/basemap1.eps 2007-11-21 20:50:10 UTC (rev 4409) @@ -0,0 +1,50377 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Title: basemap1.eps +%%Creator: matplotlib version 0.90.1, http://matplotlib.sourceforge.net/ +%%CreationDate: Wed Nov 21 12:50:18 2007 +%%Orientation: portrait +%%BoundingBox: 18 180 594 612 +%%EndComments +%%BeginProlog +/mpldict 8 dict def +mpldict begin +/m { moveto } bind def +/l { lineto } bind def +/r { rlineto } bind def +/box { +m +1 index 0 r +0 exch r +neg 0 r +closepath +} bind def +/clipbox { +box +clip +newpath +} bind def +/ellipse { +newpath +matrix currentmatrix 7 1 roll +translate +scale +0 0 1 5 3 roll arc +setmatrix +closepath +} bind def +/unitcircle { +newpath +-1. 0. moveto +-1.0 0.552284749831 -0.552284749831 1.0 0.0 1.0 curveto +0.552284749831 1.0 1.0 0.552284749831 1.0 0.0 curveto +1.0 -0.552284749831 0.552284749831 -1.0 0.0 -1.0 curveto +-0.552284749831 -1.0 -1.0 -0.552284749831 -1.0 0.0 curveto +closepath +} bind def +%!PS-Adobe-3.0 Resource-Font +%%Title: Bitstream Vera Sans +%%Copyright: Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. +%%Creator: Converted from TrueType by PPR +25 dict begin +/_d{bind def}bind def +/_m{moveto}_d +/_l{lineto}_d +/_cl{closepath eofill}_d +/_c{curveto}_d +/_sc{7 -1 roll{setcachedevice}{pop pop pop pop pop pop}ifelse}_d +/_e{exec}_d +/FontName /BitstreamVeraSans-Roman def +/PaintType 0 def +/FontMatrix[.001 0 0 .001 0 0]def +/FontBBox[-182 -235 1287 928]def +/FontType 3 def +/Encoding StandardEncoding def +/FontInfo 10 dict dup begin +/FamilyName (Bitstream Vera Sans) def +/FullName (Bitstream Vera Sans) def +/Notice (Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc.) def +/Weight (Roman) def +/Version (Release 1.10) def +/ItalicAngle 0.0 def +/isFixedPitch false def +/UnderlinePosition -213 def +/UnderlineThickness 143 def +end readonly def +/CharStrings 19 dict dup begin +/space{318 0 0 0 0 0 _sc +}_d +/slash{337 0 0 -92 337 729 _sc +254 729 _m +337 729 _l +83 -92 _l +0 -92 _l +254 729 _l +_cl}_d +/a{{613 0 60 -13 522 560 _sc +343 275 _m +270 275 220 266 192 250 _c +164 233 150 205 150 165 _c +150 133 160 107 181 89 _c +202 70 231 61 267 61 _c +317 61 357 78 387 114 _c +417 149 432 196 432 255 _c +432 275 _l +343 275 _l +522 312 _m +522 0 _l +432 0 _l +432 83 _l +411 49 385 25 355 10 _c +325 -5 287 -13 243 -13 _c +187 -13 142 2 109 33 _c +76 64 60 106 60 159 _c +60 220 80 266 122 298 _c +163 329 224 345 306 345 _c +432 345 _l +432 354 _l +432 395 418 427 391 450 _c +364 472 326 484 277 484 _c +245 484 215 480 185 472 _c +155 464 127 453 100 439 _c +100 522 _l +}_e{132 534 164 544 195 550 _c +226 556 256 560 286 560 _c +365 560 424 539 463 498 _c +502 457 522 395 522 312 _c +_cl}_e}_d +/c{{550 0 55 -13 488 560 _sc +488 526 _m +488 442 _l +462 456 437 466 411 473 _c +385 480 360 484 334 484 _c +276 484 230 465 198 428 _c +166 391 150 339 150 273 _c +150 206 166 154 198 117 _c +230 80 276 62 334 62 _c +360 62 385 65 411 72 _c +437 79 462 90 488 104 _c +488 21 _l +462 9 436 0 410 -5 _c +383 -10 354 -13 324 -13 _c +242 -13 176 12 128 64 _c +79 115 55 185 55 273 _c +55 362 79 432 128 483 _c +177 534 244 560 330 560 _c +358 560 385 557 411 551 _c +437 545 463 537 488 526 _c +_cl}_e}_d +/d{{635 0 55 -13 544 760 _sc +454 464 _m +454 760 _l +544 760 _l +544 0 _l +454 0 _l +454 82 _l +435 49 411 25 382 10 _c +353 -5 319 -13 279 -13 _c +213 -13 159 13 117 65 _c +75 117 55 187 55 273 _c +55 359 75 428 117 481 _c +159 533 213 560 279 560 _c +319 560 353 552 382 536 _c +411 520 435 496 454 464 _c +148 273 _m +148 207 161 155 188 117 _c +215 79 253 61 301 61 _c +348 61 385 79 413 117 _c +440 155 454 207 454 273 _c +454 339 440 390 413 428 _c +385 466 348 485 301 485 _c +253 485 215 466 188 428 _c +161 390 148 339 148 273 _c +_cl}_e}_d +/e{{615 0 55 -13 562 560 _sc +562 296 _m +562 252 _l +149 252 _l +153 190 171 142 205 110 _c +238 78 284 62 344 62 _c +378 62 412 66 444 74 _c +476 82 509 95 541 113 _c +541 28 _l +509 14 476 3 442 -3 _c +408 -9 373 -13 339 -13 _c +251 -13 182 12 131 62 _c +80 112 55 181 55 268 _c +55 357 79 428 127 481 _c +175 533 241 560 323 560 _c +397 560 455 536 498 489 _c +540 441 562 377 562 296 _c +472 322 _m +471 371 457 410 431 440 _c +404 469 368 484 324 484 _c +274 484 234 469 204 441 _c +174 413 156 373 152 322 _c +472 322 _l +_cl}_e}_d +/f{352 0 23 0 371 760 _sc +371 760 _m +371 685 _l +285 685 _l +253 685 230 678 218 665 _c +205 652 199 629 199 595 _c +199 547 _l +347 547 _l +347 477 _l +199 477 _l +199 0 _l +109 0 _l +109 477 _l +23 477 _l +23 547 _l +109 547 _l +109 585 _l +109 645 123 690 151 718 _c +179 746 224 760 286 760 _c +371 760 _l +_cl}_d +/g{{635 0 55 -207 544 560 _sc +454 280 _m +454 344 440 395 414 431 _c +387 467 349 485 301 485 _c +253 485 215 467 188 431 _c +161 395 148 344 148 280 _c +148 215 161 165 188 129 _c +215 93 253 75 301 75 _c +349 75 387 93 414 129 _c +440 165 454 215 454 280 _c +544 68 _m +544 -24 523 -93 482 -139 _c +440 -184 377 -207 292 -207 _c +260 -207 231 -204 203 -200 _c +175 -195 147 -188 121 -178 _c +121 -91 _l +147 -105 173 -115 199 -122 _c +225 -129 251 -133 278 -133 _c +336 -133 380 -117 410 -87 _c +439 -56 454 -10 454 52 _c +454 96 _l +435 64 411 40 382 24 _c +353 8 319 0 279 0 _c +211 0 157 25 116 76 _c +75 127 55 195 55 280 _c +55 364 75 432 116 483 _c +157 534 211 560 279 560 _c +}_e{319 560 353 552 382 536 _c +411 520 435 496 454 464 _c +454 547 _l +544 547 _l +544 68 _l +_cl}_e}_d +/i{278 0 94 0 184 760 _sc +94 547 _m +184 547 _l +184 0 _l +94 0 _l +94 547 _l +94 760 _m +184 760 _l +184 646 _l +94 646 _l +94 760 _l +_cl}_d +/l{278 0 94 0 184 760 _sc +94 760 _m +184 760 _l +184 0 _l +94 0 _l +94 760 _l +_cl}_d +/m{{974 0 91 0 889 560 _sc +520 442 _m +542 482 569 511 600 531 _c +631 550 668 560 711 560 _c +767 560 811 540 842 500 _c +873 460 889 403 889 330 _c +889 0 _l +799 0 _l +799 327 _l +799 379 789 418 771 444 _c +752 469 724 482 686 482 _c +639 482 602 466 575 435 _c +548 404 535 362 535 309 _c +535 0 _l +445 0 _l +445 327 _l +445 379 435 418 417 444 _c +398 469 369 482 331 482 _c +285 482 248 466 221 435 _c +194 404 181 362 181 309 _c +181 0 _l +91 0 _l +91 547 _l +181 547 _l +181 462 _l +201 495 226 520 255 536 _c +283 552 317 560 357 560 _c +397 560 430 550 458 530 _c +486 510 506 480 520 442 _c +}_e{_cl}_e}_d +/n{634 0 91 0 549 560 _sc +549 330 _m +549 0 _l +459 0 _l +459 327 _l +459 379 448 417 428 443 _c +408 469 378 482 338 482 _c +289 482 251 466 223 435 _c +195 404 181 362 181 309 _c +181 0 _l +91 0 _l +91 547 _l +181 547 _l +181 462 _l +202 494 227 519 257 535 _c +286 551 320 560 358 560 _c +420 560 468 540 500 501 _c +532 462 549 405 549 330 _c +_cl}_d +/o{612 0 55 -13 557 560 _sc +306 484 _m +258 484 220 465 192 427 _c +164 389 150 338 150 273 _c +150 207 163 156 191 118 _c +219 80 257 62 306 62 _c +354 62 392 80 420 118 _c +448 156 462 207 462 273 _c +462 337 448 389 420 427 _c +392 465 354 484 306 484 _c +306 560 _m +384 560 445 534 490 484 _c +534 433 557 363 557 273 _c +557 183 534 113 490 63 _c +445 12 384 -13 306 -13 _c +227 -13 165 12 121 63 _c +77 113 55 183 55 273 _c +55 363 77 433 121 484 _c +165 534 227 560 306 560 _c +_cl}_d +/p{{635 0 91 -207 580 560 _sc +181 82 _m +181 -207 _l +91 -207 _l +91 547 _l +181 547 _l +181 464 _l +199 496 223 520 252 536 _c +281 552 316 560 356 560 _c +422 560 476 533 518 481 _c +559 428 580 359 580 273 _c +580 187 559 117 518 65 _c +476 13 422 -13 356 -13 _c +316 -13 281 -5 252 10 _c +223 25 199 49 181 82 _c +487 273 _m +487 339 473 390 446 428 _c +418 466 381 485 334 485 _c +286 485 249 466 222 428 _c +194 390 181 339 181 273 _c +181 207 194 155 222 117 _c +249 79 286 61 334 61 _c +381 61 418 79 446 117 _c +473 155 487 207 487 273 _c +_cl}_e}_d +/r{411 0 91 0 411 560 _sc +411 463 _m +401 469 390 473 378 476 _c +366 478 353 480 339 480 _c +288 480 249 463 222 430 _c +194 397 181 350 181 288 _c +181 0 _l +91 0 _l +91 547 _l +181 547 _l +181 462 _l +199 495 224 520 254 536 _c +284 552 321 560 365 560 _c +371 560 378 559 386 559 _c +393 558 401 557 411 555 _c +411 463 _l +_cl}_d +/s{{521 0 54 -13 472 560 _sc +443 531 _m +443 446 _l +417 458 391 468 364 475 _c +336 481 308 485 279 485 _c +234 485 200 478 178 464 _c +156 450 145 430 145 403 _c +145 382 153 366 169 354 _c +185 342 217 330 265 320 _c +296 313 _l +360 299 405 279 432 255 _c +458 230 472 195 472 151 _c +472 100 452 60 412 31 _c +372 1 316 -13 246 -13 _c +216 -13 186 -10 154 -5 _c +122 0 89 8 54 20 _c +54 113 _l +87 95 120 82 152 74 _c +184 65 216 61 248 61 _c +290 61 323 68 346 82 _c +368 96 380 117 380 144 _c +380 168 371 187 355 200 _c +339 213 303 226 247 238 _c +216 245 _l +160 257 119 275 95 299 _c +70 323 58 356 58 399 _c +58 450 76 490 112 518 _c +148 546 200 560 268 560 _c +}_e{301 560 332 557 362 552 _c +391 547 418 540 443 531 _c +_cl}_e}_d +/t{392 0 27 0 368 702 _sc +183 702 _m +183 547 _l +368 547 _l +368 477 _l +183 477 _l +183 180 _l +183 135 189 106 201 94 _c +213 81 238 75 276 75 _c +368 75 _l +368 0 _l +276 0 _l +206 0 158 13 132 39 _c +106 65 93 112 93 180 _c +93 477 _l +27 477 _l +27 547 _l +93 547 _l +93 702 _l +183 702 _l +_cl}_d +/u{634 0 85 -13 543 547 _sc +85 216 _m +85 547 _l +175 547 _l +175 219 _l +175 167 185 129 205 103 _c +225 77 255 64 296 64 _c +344 64 383 79 411 110 _c +439 141 453 183 453 237 _c +453 547 _l +543 547 _l +543 0 _l +453 0 _l +453 84 _l +431 50 405 26 377 10 _c +348 -5 315 -13 277 -13 _c +214 -13 166 6 134 45 _c +101 83 85 140 85 216 _c +_cl}_d +/v{592 0 30 0 562 547 _sc +30 547 _m +125 547 _l +296 88 _l +467 547 _l +562 547 _l +357 0 _l +235 0 _l +30 547 _l +_cl}_d +end readonly def + +/BuildGlyph + {exch begin + CharStrings exch + 2 copy known not{pop /.notdef}if + true 3 1 roll get exec + end}_d + +/BuildChar { + 1 index /Encoding get exch get + 1 index /BuildGlyph get exec +}_d + +FontName currentdict end definefont pop +%%EOF +end +%%EndProlog +mpldict begin +18 180 translate +576 432 0 0 clipbox +1.000 setgray +1.000 setlinewidth +0 setlinejoin +2 setlinecap +[] 0 setdash +0 0 m +0 432 l +576 432 l +576 0 l +closepath +gsave +fill +grestore +stroke +0.000 setgray +57.6 43.214 m +57.6 388.786 l +518.4 388.786 l +518.4 43.214 l +closepath +gsave +0.000 1.000 1.000 setrgbcolor +fill +grestore +stroke +1.000 0.498 0.314 setrgbcolor +0.000 setlinewidth +gsave +460.8 345.6 57.6 43.21 clipbox +371.865 388.786 m +371.763 388.613 l +372.168 388.022 l +371.562 387.849 l +371.541 388.16 l +370.667 388.402 l +370.681 388.786 l +371.865 388.786 l +closepath +gsave +fill +grestore +newpath +grestore +gsave +460.8 345.6 57.6 43.21 clipbox +375.155 388.786 m +374.98 387.867 l +374.707 387.23 l +373.564 386.427 l +372.465 387.347 l +373.15 388.666 l +373.071 388.786 l +375.155 388.786 l +closepath +gsave +fill +grestore +newpath +grestore +gsave +460.8 345.6 57.6 43.21 clipbox +385.585 388.786 m +385.65 388.739 l +385.651 387.917 l +386.099 387.45 l +385.801 387.085 l +384.739 386.985 l +383.481 386.023 l +382.548 386.077 l +381.872 385.758 l +379.632 386.026 l +377.372 384.204 l +376.834 383.215 l +375.631 383.549 l +374.931 383.378 l +373.51 384.544 l +372.715 384.793 l +370.129 383.681 l +369.853 383.86 l +370.188 384.592 l +370.482 384.495 l +371.012 385.148 l +371.213 384.976 l +372.132 385.579 l +374.017 385.57 l +375.254 386.391 l +375.816 386.153 l +376.197 386.539 l +376.469 387.679 l +376.314 387.54 l +376.014 388.786 l +385.585 388.786 l +closepath +gsave +fill +grestore +newpath +grestore +gsave +460.8 345.6 57.6 43.21 clipbox +387.853 388.786 m +387.417 388.721 l +387.279 388.786 l +387.853 388.786 l +closepath +gsave +fill +grestore +newpath +grestore +gsave +460.8 345.6 57.6 43.21 clipbox +518.4 277.926 m +516.183 275.642 l +515.493 273.818 l +517.149 272.603 l +517.624 272.614 l +518.014 271.98 l +517.728 272.086 l +517.271 271.397 l +517.367 269.378 l +515.496 267.798 l +514.86 268.132 l +514.703 267.744 l +514.236 268.248 l +513.698 267.828 l +514.288 267.262 l +513.795 267.218 l +513.487 266.679 l +513.054 266.914 l +512.817 266.337 l +512.535 266.451 l +512.844 266.079 l +512.397 265.709 l +512.949 265.656 l +513.278 264.427 l +513.009 264.259 l +513.009 264.807 l +512.671 264.428 l +512.724 265.061 l +512.377 265.158 l +512.014 263.775 l +512.38 263.417 l +511.97 262.503 l +511.709 262.444 l +511.68 263.558 l +512.186 264.81 l +511.731 265.046 l +512.008 265.51 l +511.625 266.324 l +510.891 263.603 l +510.425 263.233 l +510.505 262.566 l +509.789 262.832 l +509.836 263.253 l +510.299 263.471 l +509.87 264.345 l +509.566 263.725 l +508.823 263.886 l +509.012 263.468 l +508.771 263.027 l +507.832 263.535 l +507.233 262.947 l +507.24 263.885 l +506.261 264.345 l +505.459 263.619 l +505.479 263.17 l +504.541 263.162 l +504.43 262.729 l +504.785 262.392 l +503.788 262.008 l +503.6 261.521 l +503.227 261.888 l +503.63 262.042 l +503.332 262.737 l +503.088 262.371 l +502.222 262.609 l +502.156 262.884 l +503.069 263.281 l +503.45 262.959 l +504.048 263.051 l +503.586 263.369 l +504.048 263.551 l +504.189 264.91 l +503.916 264.166 l +502.709 263.811 l +502.361 264.035 l +502.607 264.516 l +502.225 264.675 l +502.244 265.332 l +501.961 265.373 l +501.574 264.61 l +501.104 265.118 l +499.973 264.57 l +499.241 266.177 l +498.408 263.226 l +496.692 264.282 l +496.383 264.551 l +496.471 265.044 l +495.881 265.56 l +495.512 267.043 l +495.918 267.734 l +495.951 268.844 l +496.804 269.078 l +497.267 270.035 l +497.14 270.532 l +496.482 270.096 l +496.342 270.396 l +496.904 271.204 l +497.122 270.605 l +497.343 270.733 l +497.509 271.805 l +498.64 274.005 l +498.52 274.653 l +497.701 273.617 l +497.445 274.442 l +497.68 276.3 l +497.963 276.339 l +498.299 277.604 l +497.12 275.58 l +496.944 275.761 l +495.924 275.154 l +495.264 275.979 l +496.611 278.376 l +496.626 279.428 l +497.717 280.773 l +498.187 282.23 l +497.926 283.007 l +497.481 283.125 l +496.845 286.325 l +496.563 290.274 l +498.262 294.504 l +497.876 295.636 l +498.399 296.18 l +498.34 295.892 l +498.707 295.675 l +499.759 296.023 l +500.425 296.837 l +500.285 298.217 l +500.527 298.422 l +501.589 298.415 l +502.793 299.067 l +502.448 299.885 l +502.692 300.5 l +503.638 301.06 l +503.982 301.841 l +504.712 302.462 l +504.322 303.092 l +504.49 303.428 l +505.167 303.578 l +505.881 305.11 l +505.736 307.847 l +506.024 308.228 l +505.807 308.791 l +506.424 309.203 l +507.155 311.025 l +505.98 315.488 l +504.176 317.097 l +500.067 316.723 l +499.633 315.855 l +498.745 315.694 l +498.253 315.168 l +497.469 313.485 l +496.812 313.455 l +496.15 312.532 l +491.643 309.843 l +490.662 308.215 l +488.999 307.307 l +489.317 307.025 l +488.864 306.229 l +487.529 305.923 l +486.108 304.202 l +486.022 305.474 l +485.817 304.919 l +485.483 304.905 l +485.541 305.179 l +485.327 304.951 l +485.66 304.411 l +485.217 305.062 l +485.884 306.008 l +486.292 305.676 l +486.258 306.443 l +485.889 306.014 l +486.042 307.187 l +484.9 307.735 l +484.671 308.487 l +483.623 309.144 l +483.602 309.623 l +484.048 309.485 l +482.854 310.304 l +483.285 310.123 l +484.016 311.007 l +482.259 310.025 l +481.95 309.378 l +480.56 309.078 l +481.068 309.911 l +480.82 310.861 l +481.179 310.908 l +481.365 311.643 l +480.937 311.493 l +480.98 311.131 l +480.469 311.408 l +480.502 312.562 l +480.08 313.492 l +480.307 314.019 l +479.266 314.167 l +479.029 313.305 l +479.323 313.177 l +479.438 312.026 l +479.076 311.899 l +479.476 310.554 l +479.068 310.565 l +478.79 309.144 l +479.59 308.125 l +479.178 308.024 l +479.427 307.063 l +480.175 306.312 l +479.787 306.542 l +479.434 306.056 l +479.545 305.281 l +480.263 304.285 l +479.783 304.938 l +479.4 303.895 l +479.95 302.285 l +480.955 301.126 l +481.054 300.508 l +480.189 301.912 l +480.159 301.635 l +479.332 301.625 l +479.992 301.477 l +480.562 300.101 l +480.354 299.582 l +480.909 299.362 l +481.277 298.778 l +481.399 299.099 l +481.056 299.15 l +481.332 299.354 l +481.867 298.773 l +481.649 299.703 l +482.166 298.838 l +481.902 299.484 l +482.447 299.045 l +482.345 299.773 l +482.688 299.419 l +482.5 299.72 l +482.941 300.074 l +483.633 300.129 l +484.042 299.573 l +484.928 300.749 l +484.795 300.927 l +481.9 299.963 l +482.016 299.695 l +481.103 299.937 l +480.686 299.605 l +480.899 299.943 l +480.614 300.084 l +482.835 300.319 l +484.717 300.953 l +484.793 301.743 l +484.319 302.281 l +484.871 302.562 l +484.687 303.779 l +485.379 304.543 l +485.575 303.781 l +486.41 303.664 l +486.511 303.376 l +486.318 301.688 l +485.727 301.383 l +485.528 300.788 l +486.151 300.284 l +485.973 299.932 l +486.544 299.199 l +486.243 298.911 l +486.209 297.746 l +486.914 296.693 l +487.231 295.37 l +487.035 294.658 l +485.869 293.846 l +485.937 294.516 l +485.787 294.299 l +484.303 295.062 l +483.408 294.799 l +483.404 294.248 l +482.4 293.688 l +482.097 294.479 l +482.383 293.682 l +482.025 293.133 l +482.114 292.682 l +481.631 292.293 l +480.892 294.663 l +480.567 294.879 l +480.865 295.006 l +480.623 296.268 l +480.919 296.408 l +480.598 296.763 l +480.399 296.35 l +479.501 296.573 l +479.956 296.153 l +479.34 295.367 l +478.927 295.543 l +479.208 295.206 l +478.886 293.406 l +478.315 292.603 l +478.102 292.712 l +477.222 291.916 l +477.307 291.541 l +477.06 291.637 l +477.107 292.5 l +476.838 292.469 l +476.351 291.725 l +476.697 291.591 l +475.744 291.201 l +477.011 293.343 l +476.524 293.412 l +476.474 292.96 l +475.912 292.654 l +475.279 292.663 l +474.94 292.999 l +475.223 292.545 l +475.846 292.414 l +475.905 292.068 l +475.466 291.039 l +474.748 291.792 l +475.097 291.413 l +474.724 291.3 l +475.13 291.385 l +475.484 290.978 l +475.004 289.894 l +475.108 289.041 l +475.81 288.765 l +475.811 288.407 l +476.75 287.541 l +475.375 287.547 l +475.634 287.306 l +475.232 287.398 l +475.148 287.046 l +475.565 286.924 l +476.766 287.526 l +477.435 286.17 l +477.098 286.282 l +477.471 285.975 l +477.145 285.761 l +477.6 285.472 l +477.344 285.412 l +477.411 285.108 l +477.75 285.174 l +477.906 284.707 l +476.877 284.737 l +477.9 284.218 l +477.968 284.589 l +478.272 284.123 l +478.59 284.633 l +479.422 284.172 l +479.104 284.012 l +479.489 284.053 l +479.356 283.787 l +479.662 283.942 l +480.83 283.142 l +480.612 281.67 l +480.822 281.093 l +480.529 281.13 l +480.43 281.759 l +480.178 281.51 l +479.695 281.879 l +479.566 281.15 l +480.458 281.054 l +480.314 280.356 l +480.772 280.432 l +480.593 280.834 l +480.83 281.088 l +480.813 280.313 l +481.481 280.047 l +481.03 280.799 l +481.984 279.387 l +483.311 279.01 l +483.863 278.346 l +485.24 277.928 l +485.607 277.389 l +485.196 277.042 l +485.097 276.306 l +485.613 275.44 l +487.609 274.577 l +487.375 274.059 l +487.908 273.571 l +487.726 273.158 l +488.121 272.813 l +488.065 272.869 l +488.579 273.541 l +489.288 273.353 l +490.664 273.792 l +491.328 273.332 l +492.837 273.527 l +495.147 275.837 l +495.965 275.052 l +495.675 273.832 l +495.1 273.839 l +495.48 273.638 l +494.695 272.821 l +494.822 271.801 l +494.304 271.168 l +494.19 270.443 l +495.05 269.259 l +495.236 266.95 l +496.229 264.615 l +495.529 265.269 l +495.131 265.202 l +494.947 267.465 l +494.607 267.662 l +493.919 265.474 l +492.821 265.663 l +492.012 264.165 l +491.019 263.05 l +490.797 263.181 l +490.952 261.793 l +490.698 261.325 l +490.198 261.331 l +490.053 260.784 l +490.411 260.404 l +490.452 259.382 l +489.805 258.853 l +489.795 258.409 l +490.067 258.123 l +490.945 258.544 l +490.917 258.188 l +491.391 258.151 l +491.681 258.5 l +491.427 258.667 l +493.197 259.294 l +493.231 258.919 l +492.314 258.781 l +491.397 257.629 l +492.07 257.416 l +492.776 257.947 l +493.397 257.468 l +491.8 257.12 l +491.19 256.453 l +491.396 256.045 l +490.03 255.081 l +489.405 255.122 l +489.506 255.685 l +489.045 255.735 l +489.195 254.351 l +489.719 254.383 l +490.388 253.602 l +491.009 253.453 l +495.516 254.112 l +495.444 253.007 l +495.326 253.696 l +494.679 253.632 l +494.172 253.17 l +494.583 252.514 l +495.29 252.789 l +495.627 252.535 l +495.742 252.852 l +495.9 251.869 l +495.535 250.871 l +496.748 252.255 l +497.385 252.214 l +497.306 252.611 l +497.651 252.906 l +498.258 252.672 l +498.565 253.392 l +499.365 253.412 l +500.095 254.224 l +500.801 254.387 l +500.889 253.955 l +502.296 253.679 l +502.825 253.205 l +500.404 252.353 l +500.237 250.334 l +500.83 250.781 l +501.572 250.34 l +502.181 250.72 l +501.81 250.786 l +501.873 251.155 l +502.37 250.866 l +502.893 251.105 l +502.597 250.264 l +502.93 249.693 l +502.483 249.49 l +502.174 249.877 l +501.071 248.8 l +504.917 248.456 l +505.386 247.899 l +506.442 248.045 l +505.713 247.463 l +504.272 247.429 l +503.998 246.967 l +504.509 246.051 l +505.44 245.598 l +504.682 245.422 l +504.049 245.931 l +502.705 245.545 l +502.257 245.776 l +502.094 245.066 l +502.917 244.785 l +503.069 244.327 l +502.632 244.33 l +502.391 243.967 l +501.877 244.263 l +500.806 244.238 l +500.429 244.969 l +499.829 245.123 l +498.739 244.895 l +498.419 244.458 l +497.786 244.686 l +497.209 244.282 l +496.895 244.546 l +496.921 245.315 l +496.194 245.901 l +496.873 246.471 l +496.489 247.392 l +496.73 247.977 l +499.851 250.136 l +499.804 250.482 l +499.384 250.193 l +499.721 251.295 l +499.485 251.638 l +498.462 250.385 l +497.642 250.305 l +497.911 249.779 l +496.975 249.632 l +497.406 249.31 l +496.383 248.073 l +496.121 246.505 l +495.283 246.337 l +495.661 245.718 l +495.273 245.308 l +495.06 245.664 l +494.486 245.726 l +494.477 245.449 l +493.074 245.592 l +493.054 245.195 l +492.741 245.198 l +492.657 245.531 l +492.336 245.633 l +493.28 246.69 l +492.506 246.88 l +492.306 246.194 l +491.878 245.936 l +492.338 245.825 l +492.2 245.483 l +490.485 245.427 l +489.97 244.96 l +489.216 245.278 l +488.933 244.94 l +488.631 245.309 l +488.036 244.835 l +487.433 245.313 l +486.477 245.242 l +485.112 244.469 l +484.01 244.391 l +484.62 244.801 l +484.248 245.051 l +483.716 244.911 l +483.988 245.022 l +483.739 245.205 l +483.704 244.953 l +483.127 244.979 l +482.237 245.918 l +482.516 245.847 l +482.502 246.184 l +482.13 246.302 l +482.406 245.946 l +481.949 246.132 l +481.116 246.952 l +480.344 246.903 l +480.227 247.445 l +479.751 247.447 l +479.967 247.977 l +479.138 248.375 l +477.96 247.428 l +476.197 247.384 l +476.038 247.055 l +475.094 246.739 l +475.441 247.14 l +475.093 247.268 l +475.429 247.375 l +475.16 247.515 l +474.874 246.725 l +475.144 246.631 l +472.57 245.74 l +472.068 245.318 l +472.456 245.325 l +470.255 243.819 l +470.705 244.577 l +472.147 245.445 l +468.571 244.41 l +467.32 243.318 l +467.256 243.526 l +466.983 242.486 l +466.572 242.132 l +465.585 242.521 l +465.164 242.069 l +462.623 241.648 l +462.282 241.822 l +462.688 242.189 l +462.343 242.338 l +463.668 242.789 l +460.962 242.164 l +458.751 243.117 l +457.591 242.83 l +456.979 242.39 l +458.061 241.059 l +457.997 240.703 l +457.614 240.894 l +458.399 240.201 l +458.125 239.929 l +458.361 239.847 l +456.801 239.86 l +456.552 240.017 l +456.722 240.295 l +456.468 239.976 l +455.874 240.457 l +455.043 240.594 l +455.13 241.707 l +454.031 241.503 l +454.295 241.34 l +454.186 240.81 l +453.926 240.928 l +453.383 240.4 l +453.813 239.973 l +453.399 239.58 l +453.375 237.791 l +453.23 238.478 l +452.945 238.235 l +452.925 237.56 l +453.255 237.625 l +452.886 237.447 l +452.987 236.976 l +453.776 236.67 l +453.845 236.988 l +454.344 236.556 l +455.063 236.857 l +455.016 236.549 l +455.575 236.283 l +455.245 236.42 l +455.58 236.097 l +455.194 235.938 l +455.5 235.537 l +457.641 234.56 l +459.073 234.79 l +462.251 236.076 l +465.876 234.895 l +468.754 235.162 l +469.268 235.553 l +469.884 235.422 l +471.661 236.963 l +471.58 236.5 l +471.827 237.436 l +472.388 237.606 l +472.195 237.932 l +472.863 238.859 l +473.441 238.637 l +473.512 237.419 l +474.198 237.241 l +477.592 239.428 l +479.347 240.08 l +480.959 241.19 l +481.334 241.024 l +483.004 241.563 l +483.776 241.471 l +484.812 240.18 l +483.742 239.614 l +482.05 239.881 l +481.388 238.874 l +480.403 238.259 l +480.281 238.51 l +479.841 238.294 l +479.767 237.427 l +480.552 235.764 l +481.068 235.539 l +481.568 234.644 l +482.143 234.588 l +482.613 235.151 l +484.164 235.762 l +485.206 234.909 l +485.687 235.015 l +485.995 234.368 l +485.463 233.848 l +485.383 232.706 l +485.649 232.25 l +486.795 231.667 l +487.123 229.757 l +487.743 228.927 l +487.176 227.995 l +486.549 227.868 l +485.739 228.401 l +485.845 229.079 l +485.34 229.835 l +484.548 230.032 l +484.844 231.133 l +484.505 231.666 l +479.032 232.952 l +478.658 232.776 l +478.697 232.121 l +478.284 231.766 l +477.491 231.76 l +476.769 231.279 l +476.388 231.911 l +475.002 232.001 l +474.457 230.444 l +474.063 231.261 l +473.354 231.002 l +473.117 230.222 l +472.479 230.506 l +470.839 230.491 l +470.7 229.968 l +469.779 229.386 l +469.587 228.575 l +468.788 228.637 l +467.976 227.989 l +466.117 227.693 l +465.301 227.926 l +464.33 227.418 l +462.948 227.585 l +462.088 227.205 l +461.575 226.437 l +461.374 227.007 l +460.714 227.043 l +459.411 226.588 l +459.078 226.981 l +458.491 226.335 l +457.458 227.293 l +456.267 227.411 l +454.292 228.314 l +453.13 227.89 l +453.31 227.678 l +451.107 227.021 l +451.237 226.843 l +449.875 226.054 l +449.733 225.162 l +450.34 222.959 l +449.216 220.18 l +449.581 219.658 l +449.228 219.228 l +449.463 218.723 l +449.191 218.369 l +449.321 217.519 l +449.592 217.79 l +449.813 217.373 l +449.361 216.73 l +449.484 216.451 l +449.041 216.142 l +449.248 215.781 l +448.425 215.488 l +448.669 215.376 l +448.471 215.041 l +447.749 215.09 l +446.87 214.347 l +446.339 214.725 l +445.885 213.995 l +445.525 214.051 l +445.622 214.242 l +445.051 213.928 l +445.444 213.572 l +445.052 213.586 l +445.431 213.515 l +444.975 213.138 l +444.511 213.351 l +444.851 213.074 l +444.456 213.199 l +443.52 212.371 l +443.029 212.428 l +442.688 210.21 l +442.251 209.849 l +442.431 208.561 l +442.18 208.6 l +442.936 207.913 l +442.659 207.98 l +442.836 207.566 l +443.103 207.644 l +442.943 207.899 l +443.726 207.069 l +444.822 206.609 l +445.308 206.853 l +445.162 206.003 l +445.867 205.823 l +446.413 205.256 l +446.361 204.073 l +445.62 201.712 l +445.79 200.777 l +443.88 197.308 l +443.913 195.925 l +444.67 195.976 l +444.594 195.048 l +444.367 194.936 l +444.537 195.479 l +444.235 195.075 l +445.016 190.385 l +445.566 188.982 l +446.733 188.238 l +448.153 187.965 l +449.166 188.099 l +448.509 184.976 l +448.901 184.527 l +448.711 184.187 l +449.538 182.58 l +449.46 182.082 l +450.189 182.04 l +449.372 180.839 l +448.884 180.661 l +448.586 179.871 l +448.457 178.149 l +449.044 176.958 l +449.07 175.652 l +448.066 175.437 l +447.611 174.888 l +447.634 174.101 l +446.802 173.799 l +445.603 172.422 l +444.268 171.654 l +442.731 170.174 l +442.712 168.907 l +441.443 167.338 l +441.83 165.848 l +441.405 165.91 l +441.691 165.512 l +441.378 164.853 l +440.001 164.835 l +439.608 164.524 l +437.834 165.167 l +438.334 165.308 l +438.056 165.234 l +437.907 165.576 l +437.335 165.337 l +436.929 165.555 l +436.937 165.986 l +435.971 166.301 l +434.272 166.142 l +434.113 166.679 l +434.125 166.23 l +433.848 166.332 l +434.203 166.052 l +433.72 165.906 l +432.964 165.114 l +432.67 165.264 l +432.938 165.067 l +432.239 163.862 l +431.442 163.202 l +431.823 163.181 l +429.688 162.589 l +428.627 161.1 l +427.458 164.216 l +426.469 164.781 l +425.822 166.315 l +424.982 166.7 l +425.619 166.538 l +425.357 166.716 l +426.024 166.976 l +425.655 166.896 l +425.317 167.378 l +425.419 166.872 l +424.96 166.835 l +424.3 165.761 l +424.084 166.305 l +423.452 166.601 l +423.8 166.942 l +424.298 166.815 l +424.02 166.951 l +424.334 167.331 l +424.061 167.139 l +424.244 167.677 l +423.702 167.997 l +423.57 168.486 l +423.815 167.073 l +422.984 166.361 l +422.538 166.574 l +421.838 168.548 l +421.289 168.909 l +421.826 169.509 l +420.798 172.843 l +421.065 172.892 l +420.558 172.919 l +419.92 175.096 l +419.8 174.9 l +418.846 176.946 l +418.514 176.89 l +417.692 177.603 l +415.586 179.909 l +415.789 181.325 l +415.298 180.467 l +415.44 181.57 l +415.047 181.007 l +414.561 181.093 l +414.919 181.288 l +414.597 182.203 l +414.261 182.093 l +414.162 181.106 l +413.73 181.761 l +413.83 182.553 l +413.48 181.812 l +412.941 182.369 l +412.643 182.397 l +412.579 181.994 l +412.103 182.551 l +412.318 182.992 l +412.077 183.288 l +412.647 183.843 l +412.344 183.928 l +412.563 184.453 l +413.076 184.491 l +413.488 185.342 l +413.819 185.274 l +413.799 185.682 l +414.277 185.576 l +414.103 185.975 l +413.667 185.802 l +413.928 186.29 l +413.574 185.796 l +413.338 186.206 l +413.885 187.738 l +414.217 187.49 l +414.38 188.224 l +414.963 187.921 l +415.112 188.408 l +416.114 188.306 l +416.653 188.636 l +416.834 188.353 l +416.85 188.883 l +418.568 190.317 l +419.142 190.443 l +419.38 191.316 l +420.091 191.232 l +420.766 191.83 l +420.877 191.631 l +421.098 191.991 l +423.583 193.114 l +424.887 194.866 l +425.185 194.54 l +425.38 195.387 l +425.918 195.546 l +425.799 195.233 l +426.066 195.187 l +425.95 195.411 l +426.309 195.62 l +427.371 195.929 l +427.171 196.461 l +427.581 196.946 l +428.004 196.773 l +427.96 197.027 l +429.614 197.649 l +430.419 199.283 l +430.156 200.334 l +427.951 203.656 l +427.753 204.186 l +428.184 204.526 l +427.486 204.591 l +427.692 203.93 l +425.326 207.292 l +426.623 207.205 l +427.846 206.567 l +428.297 206.743 l +427.766 206.689 l +426.264 207.631 l +424.614 207.429 l +424.324 207.737 l +424.602 207.963 l +424.266 208.069 l +424.326 208.823 l +424.188 208.616 l +423.443 209.106 l +423.222 208.94 l +423.086 209.725 l +422.991 209.342 l +420.982 208.864 l +419.291 209.273 l +418.949 210.318 l +418.153 210.084 l +417.943 210.679 l +417.757 210.313 l +417.053 210.023 l +417.199 210.183 l +416.776 210.279 l +416.947 210.646 l +416.566 210.784 l +416.776 211.033 l +416.244 210.553 l +416.233 210.818 l +415.886 210.147 l +415.466 210.183 l +415.912 210.491 l +415.719 210.853 l +415.385 210.26 l +415.034 210.416 l +415.44 210.157 l +414.972 210.224 l +415.223 209.5 l +414.579 209.9 l +414.44 210.402 l +414.559 209.899 l +414.099 209.776 l +414.289 209.916 l +414.046 209.831 l +414.021 210.23 l +413.882 209.623 l +413.436 209.818 l +413.152 209.465 l +412.816 209.551 l +412.719 209.172 l +412.198 209.382 l +412.145 209.007 l +411.723 209.043 l +411.956 208.606 l +411.532 208.227 l +410.915 208.698 l +410.042 208.378 l +410.878 209.353 l +410.752 209.616 l +410.187 209.607 l +410.098 209.146 l +409.615 209.388 l +409.663 209.77 l +409.815 209.567 l +410.767 210.15 l +410.175 210.039 l +410.219 210.304 l +409.883 209.864 l +409.956 210.479 l +409.168 209.291 l +408.676 209.871 l +408.978 210.418 l +408.836 210.745 l +409.766 212.02 l +410.401 211.938 l +410.211 212.325 l +410.832 212.574 l +410.547 213.278 l +410.906 213.384 l +411.075 213.922 l +411.286 213.737 l +411.364 214.245 l +411.613 213.698 l +411.671 214.156 l +413.304 213.703 l +413.543 215.029 l +413.706 214.768 l +413.827 215.019 l +414.104 214.849 l +414.268 215.374 l +414.724 215.18 l +414.27 215.441 l +414.33 215.796 l +414.499 216 l +414.965 215.786 l +415.759 216.675 l +414.987 216.623 l +413.659 218.196 l +412.662 218.197 l +411.377 219.098 l +412.278 219.421 l +412.861 220.262 l +413.2 219.702 l +414.254 219.354 l +414.3 219.815 l +416.226 220.826 l +416.554 221.495 l +417.091 222.915 l +416.47 222.295 l +416.128 222.215 l +415.826 223.105 l +416.171 224.254 l +416.998 225.448 l +416.963 227.175 l +417.329 227.377 l +416.795 227.42 l +415.079 229.329 l +416.213 231.705 l +417.072 234.645 l +417.866 235.018 l +417.938 235.553 l +418.618 235.929 l +417.776 235.706 l +417.711 235.172 l +416.544 234.868 l +417.058 235.868 l +418.324 236.123 l +418.001 236.445 l +417.385 236.107 l +417.829 236.511 l +417.424 236.51 l +418.199 237.759 l +416.746 236.972 l +416.26 237.251 l +416.491 237.495 l +415.737 239.905 l +414.399 241.57 l +414.883 241.622 l +415.012 242.07 l +415.747 241.719 l +416.084 241.985 l +416.264 241.515 l +415.967 241.143 l +416.519 240.705 l +416.711 240.889 l +416.587 240.26 l +417.39 240.672 l +416.927 240.617 l +416.974 241.774 l +417.547 242.605 l +416.854 242.328 l +416.496 243.084 l +415.757 242.512 l +415.097 243.027 l +414.83 243.637 l +415.005 244.981 l +415.705 245.388 l +415.905 245.612 l +415.497 245.582 l +416.356 246.967 l +417.498 246.935 l +417.693 247.575 l +418.164 247.489 l +417.691 247.588 l +417.061 247.021 l +416.426 247.845 l +416.433 248.486 l +417.406 249.883 l +418.339 249.825 l +418.411 249.419 l +418.847 249.507 l +418.838 249.869 l +418.268 250.211 l +418.953 250.565 l +419.446 250.007 l +418.988 250.608 l +418.323 250.847 l +417.967 251.749 l +418.37 251.838 l +419.087 252.771 l +420.284 252.717 l +421.01 253.066 l +420.283 252.766 l +418.71 252.844 l +418.21 252.328 l +417.781 252.443 l +418.058 252.766 l +417.866 252.956 l +417.241 252.79 l +417.026 253.457 l +416.47 252.667 l +416.253 253.051 l +416.546 254.014 l +416.279 253.571 l +416.332 254.055 l +415.325 253.46 l +415.403 253.965 l +414.609 254.305 l +414.192 253.787 l +414.513 253.318 l +413.714 254.371 l +414.197 253.897 l +414.612 254.403 l +413.222 255.647 l +411.802 255.651 l +412.224 255.324 l +411.545 255.131 l +411.006 255.911 l +408.402 257.879 l +407.98 258.519 l +408.632 258.244 l +408.965 258.758 l +407.833 258.787 l +407.195 260.319 l +408.228 261.87 l +407.574 263.961 l +408.069 265.65 l +408.246 264.838 l +409.629 264.129 l +410.135 263.14 l +410 262.922 l +411.09 262.386 l +410.773 262.006 l +411.152 262.373 l +411.427 261.879 l +412.401 262.859 l +412.881 262.861 l +413.542 261.621 l +413.121 261.68 l +413.433 261.206 l +413.155 261.34 l +412.97 261.061 l +412.654 261.532 l +412.712 260.856 l +413.814 259.859 l +413.27 259.256 l +413.651 259.546 l +414.05 259.168 l +413.309 258.308 l +414.041 258.655 l +414.208 258.147 l +413.933 257.619 l +414.336 257.916 l +414.311 257.622 l +414.889 257.407 l +414.848 257.108 l +415.083 257.393 l +415.374 256.249 l +415.606 256.619 l +416.306 256.641 l +416.499 256.366 l +415.985 256.381 l +416.037 255.711 l +416.164 256.224 l +416.91 256.341 l +417.011 256.629 l +417.891 256.16 l +417.897 255.573 l +418.35 256.224 l +418.847 255.774 l +418.725 256.441 l +419.748 256.847 l +420.107 257.911 l +420.706 257.339 l +420.678 256.296 l +421.207 256.311 l +421.451 257.046 l +422.278 257.311 l +421.806 258.135 l +421.794 257.832 l +421.726 258.395 l +422.235 259.289 l +422.641 259.196 l +422.253 259.299 l +421.834 260.916 l +422.643 261.698 l +422.076 260.485 l +422.507 260.127 l +422.278 260.737 l +422.438 261.073 l +422.732 261.153 l +422.716 261.822 l +423.398 261.605 l +424.568 261.852 l +424.68 262.576 l +425.199 262.292 l +425.803 262.388 l +425.951 261.989 l +426.884 262.694 l +427.055 262.495 l +427.057 262.795 l +427.905 263.02 l +427.467 263.161 l +426.994 264.155 l +426.598 264.329 l +427.737 267.81 l +427.207 269.289 l +427.997 272.918 l +428.463 273.728 l +429.714 274.307 l +429.967 274.223 l +428.763 273.819 l +430.18 273.395 l +430.863 273.654 l +431.522 275.3 l +431.105 276.611 l +431.56 275.545 l +431.43 274.566 l +431.702 274.492 l +431.861 274.821 l +432.042 274.632 l +431.476 276.71 l +431.612 277.84 l +431.311 277.072 l +430.925 277.053 l +431.129 276.631 l +430.148 277.314 l +430.608 278.381 l +430.383 279.191 l +429.291 281.032 l +429.881 280.61 l +430.697 278.633 l +431.505 279.526 l +431.573 280.202 l +430.578 280.544 l +430.319 281.015 l +430.043 280.87 l +429.581 281.28 l +428.637 281.335 l +425.374 282.828 l +424.285 283.619 l +423.924 284.715 l +422.974 285.272 l +422.241 286.393 l +422.469 288.617 l +423.053 288.32 l +424.502 288.911 l +425.687 288.654 l +426.565 289.197 l +426.767 289.933 l +426.264 291.29 l +423.902 292.267 l +422.294 293.665 l +421.811 293.226 l +422.195 292.561 l +421.733 292.503 l +421.363 292.007 l +419.835 292.162 l +419.871 292.837 l +419.493 292.208 l +419.4 292.467 l +418.833 292.495 l +418.942 293.044 l +418.461 292.614 l +418.412 292.956 l +417.777 293.203 l +418.171 294.435 l +417.67 294.535 l +418.048 294.856 l +417.778 294.831 l +417.657 295.327 l +418.176 296.122 l +417.684 296.366 l +418.162 296.51 l +418.406 296.873 l +418.114 296.977 l +418.587 297.46 l +418.491 297.791 l +418.03 297.863 l +418.512 298.063 l +418.098 298.299 l +418.635 298.334 l +418.484 298.757 l +419.429 299.943 l +420.117 300.354 l +421.07 302.222 l +420.954 302.615 l +419.697 303.216 l +420.427 303.538 l +419.843 304.033 l +420.271 304.449 l +420.307 304.991 l +419.736 305.561 l +421.071 307.426 l +420.814 307.932 l +420.301 307.273 l +419.618 307.309 l +418.919 305.693 l +418.024 305.522 l +417.901 305.149 l +416.989 305.108 l +417.634 305.469 l +416.72 305.682 l +416.764 305.993 l +416.39 305.835 l +416.706 305.577 l +416.585 304.964 l +416.97 304.654 l +416.682 303.955 l +416.293 303.807 l +416.678 303.661 l +416.339 303.156 l +416.569 303.127 l +415.848 302.717 l +416.068 302.6 l +415.793 302.36 l +416.179 302.051 l +415.859 301.813 l +416.037 301.503 l +415.553 301.219 l +415.816 300.967 l +416.241 301.092 l +415.532 300.716 l +415.868 300.459 l +415.13 300.215 l +415.945 300.254 l +416.017 299.812 l +415.655 300.108 l +415.367 299.871 l +416.068 299.693 l +415.625 299.531 l +415.938 299.634 l +415.751 299.306 l +415.334 299.498 l +415.707 298.933 l +415.405 298.658 l +415.7 297.963 l +415.328 297.919 l +415.596 297.723 l +415.282 297.606 l +415.552 297.163 l +415.158 297.002 l +415.482 297.045 l +415.802 296.295 l +415.471 296.667 l +415.593 296.226 l +415.258 296.422 l +415.25 295.155 l +414.908 294.438 l +414.511 294.919 l +415.181 293.809 l +414.989 293.128 l +414.9 293.924 l +414.641 294.02 l +414.632 293.793 l +414.453 294.203 l +414.446 293.747 l +414.735 293.584 l +414.568 293.32 l +414.115 293.367 l +414.458 293.608 l +414.203 293.757 l +414.244 293.886 l +413.93 294.063 l +413.616 293.763 l +413.049 294.581 l +413.097 293.203 l +412.936 293.56 l +412.826 293.182 l +412.497 293.818 l +412.234 293.115 l +411.212 292.726 l +411.371 292.299 l +410.835 292.794 l +411.139 292.011 l +410.56 291.939 l +410.054 292.008 l +410.057 292.298 l +409.427 292.263 l +409.518 292.539 l +409.195 292.161 l +409.318 292.352 l +408.92 292.514 l +409.415 292.602 l +408.618 292.682 l +408.857 293.019 l +408.361 293.149 l +408.391 293.536 l +407.482 293.639 l +407.566 293.94 l +407.183 293.802 l +407.346 294.137 l +406.905 293.997 l +407.582 294.387 l +405.213 294.473 l +404.516 295.205 l +404.205 295.238 l +404.295 295.05 l +403.875 295.384 l +403.637 295.364 l +403.851 295.058 l +403.474 295.327 l +403.196 295.179 l +402.885 295.618 l +402.694 295.376 l +402.04 295.83 l +401.813 296.234 l +402.007 296.473 l +401.381 296.953 l +401.598 297.312 l +400.987 297.244 l +400.626 297.598 l +401.003 297.597 l +401.097 298.23 l +401.509 298.047 l +401.213 298.245 l +401.336 298.925 l +400.551 298.977 l +400.797 299.289 l +400.201 299.412 l +400.69 299.418 l +400.191 299.633 l +399.892 300.197 l +400.355 300.37 l +400.215 300.711 l +399.815 300.796 l +399.6 300.457 l +399.709 300.897 l +399.39 300.91 l +400.018 300.971 l +399.553 301.342 l +399.752 301.981 l +399.188 302.188 l +399.52 302.492 l +398.906 302.933 l +398.962 303.435 l +398.364 304.007 l +398.519 304.381 l +398.154 304.444 l +397.633 305.355 l +397.276 305.468 l +397.316 306.55 l +397.87 306.892 l +397.062 306.878 l +397.495 307.184 l +397.237 307.41 l +396.614 307.139 l +396.492 307.554 l +395.887 307.508 l +396.076 307.876 l +395.701 307.624 l +395.424 307.957 l +394.479 307.786 l +394.201 307.149 l +393.365 307.418 l +393.524 307.024 l +393.11 306.737 l +393.38 306.584 l +392.968 306.764 l +393.129 306.026 l +392.755 306.04 l +392.819 305.696 l +392.507 305.658 l +392.813 305.353 l +392.499 305.451 l +392.596 305.278 l +392.04 305.084 l +392.596 305.146 l +392.777 304.781 l +391.613 304.478 l +392.234 304.222 l +391.572 303.842 l +392.291 303.595 l +392.058 303.545 l +392.24 303.35 l +392.834 303.369 l +392.315 302.905 l +392.61 303.065 l +392.414 302.462 l +392.79 302.671 l +392.965 302.35 l +392.53 301.823 l +392.994 301.855 l +392.61 301.584 l +393.115 301.844 l +393.598 301.664 l +392.593 301.376 l +392.629 301.139 l +393.005 301.41 l +393.663 301.32 l +394.515 299.979 l +394.269 299.779 l +394.866 300.082 l +395.189 299.869 l +394.951 299.619 l +395.7 300.01 l +395.987 300.008 l +395.879 299.767 l +396.31 299.964 l +396.799 298.351 l +397.903 297.104 l +398.013 296.763 l +397.594 296.901 l +398.118 296.395 l +397.623 296.49 l +398.09 296.232 l +397.721 296.375 l +398.032 296.098 l +397.766 295.772 l +398.329 294.676 l +397.602 294.628 l +398.273 294.381 l +397.77 294.272 l +398.625 293.107 l +398.073 293.077 l +397.959 292.804 l +398.415 292.912 l +398.372 292.605 l +398.05 292.673 l +398.419 292.554 l +398.235 292.193 l +398.676 291.831 l +398.419 291.742 l +398.655 291.759 l +398.448 291.359 l +398.989 291.844 l +398.788 291.637 l +399.069 291.687 l +399.24 291.215 l +398.909 291.086 l +399.199 291.087 l +399.259 290.686 l +398.858 290.757 l +398.833 290.471 l +398.086 290.724 l +397.959 290.481 l +399.501 290.246 l +399.332 290.021 l +400.001 289.626 l +399.873 289.266 l +400.263 289.208 l +399.433 289.074 l +399.53 288.7 l +400.194 288.418 l +400.753 288.733 l +400.598 288.453 l +401.496 287.483 l +402.78 287.074 l +402.004 286.677 l +402.405 286.755 l +402.36 286.407 l +402.582 286.617 l +402.463 286.203 l +402.743 286.466 l +402.571 286.148 l +403.206 286.183 l +403.103 285.916 l +403.676 285.98 l +403.512 285.782 l +403.784 285.945 l +403.456 285.692 l +403.836 285.773 l +404.647 285.084 l +404.752 285.286 l +404.851 284.962 l +405.286 285.167 l +405.455 284.839 l +405.782 284.917 l +405.841 284.432 l +406.453 285.134 l +407.115 285.02 l +407.009 285.707 l +408.241 285.552 l +408.472 285.963 l +408.668 285.796 l +408.96 286.06 l +408.948 285.8 l +408.405 285.654 l +409.634 285.604 l +409.341 285.796 l +409.878 285.91 l +409.728 286.166 l +410.455 285.903 l +410.85 286.125 l +411.043 285.924 l +410.411 285.853 l +410.814 285.787 l +410.92 285.163 l +411.329 285.855 l +411.47 283.715 l +411.844 283.653 l +411.415 283.286 l +411.797 283.058 l +411.932 283.655 l +412.225 283.759 l +411.854 284.017 l +412.297 284.184 l +412.132 283.967 l +412.458 284.136 l +412.447 283.873 l +412.226 283.678 l +412.651 283.904 l +412.642 283.6 l +411.993 283.499 l +412.312 283.465 l +412.169 283.268 l +412.79 283.451 l +412.797 282.22 l +413.49 281.624 l +412.819 281.54 l +412.267 282.009 l +412.325 281.74 l +411.799 281.959 l +412.866 281.25 l +412.701 281.08 l +412.991 281.029 l +412.645 280.929 l +413.091 280.791 l +412.926 279.99 l +412.642 279.971 l +412.851 279.713 l +413.038 279.953 l +412.818 279.523 l +413.034 279.625 l +413.046 279.333 l +412.048 278.005 l +412.877 279.016 l +413.542 279.06 l +413.495 278.535 l +412.909 278.056 l +413.752 278.507 l +413.609 278.18 l +413.936 278.191 l +414.007 278.439 l +414.011 278.106 l +414.659 278.043 l +414.425 277.832 l +414.898 277.858 l +414.866 277.434 l +415.204 277.468 l +415.115 277.717 l +415.565 277.385 l +415.097 277.148 l +415.076 276.825 l +415.958 276.933 l +415.039 276.687 l +416.012 276.912 l +416.197 276.843 l +415.932 276.599 l +416.522 276.437 l +416.173 276.373 l +416.308 276.159 l +416.565 276.419 l +417.003 276.301 l +417.307 275.37 l +418.249 275.119 l +418.096 274.851 l +418.354 274.92 l +418.426 274.712 l +418.2 274.77 l +418.956 274.147 l +419.121 274.286 l +418.995 274.03 l +419.398 273.824 l +419.326 273.499 l +420.813 271.424 l +420.444 271.61 l +420.205 271.083 l +419.988 271.239 l +420.001 270.54 l +419.735 270.601 l +418.961 269.345 l +419.606 269.104 l +419.139 268.804 l +419.427 267.696 l +419.962 267.282 l +420.695 267.233 l +421.067 266.489 l +420.472 266.006 l +420.08 264.724 l +419.155 263.732 l +419.172 264.201 l +418.627 264.362 l +418.488 264.969 l +415.439 265.326 l +416.23 265.773 l +415.273 265.951 l +415.583 266.495 l +415.154 266.967 l +414.755 266.986 l +414.666 266.706 l +413.882 266.929 l +413.15 266.717 l +411.947 267.192 l +411.754 266.995 l +411.088 267.526 l +411.268 267.097 l +410.962 267.049 l +410.687 267.418 l +409.944 267.588 l +409.945 267.935 l +409.609 267.463 l +409.489 267.98 l +409.081 267.775 l +407.709 269.451 l +407.433 269.074 l +407.597 268.359 l +407.557 268.991 l +408.003 269.054 l +408.342 268.397 l +408.591 268.306 l +408.666 267.785 l +408.214 267.899 l +408.255 268.476 l +408.046 267.895 l +407.5 268.199 l +407.113 269.323 l +407.121 269.088 l +406.798 269.197 l +407.33 268.412 l +406.928 268.766 l +406.941 268.482 l +406.712 268.948 l +406.745 268.221 l +406.474 268.846 l +406.212 268.668 l +406.105 269.004 l +404.441 269.636 l +404.281 270.223 l +403.831 270.341 l +403.945 269.963 l +403.396 269.942 l +403.442 269.644 l +402.902 269.988 l +402.806 269.751 l +402.29 269.888 l +402.075 270.33 l +401.142 270.761 l +400.868 271.175 l +401.317 271.036 l +400.863 271.43 l +400.748 270.767 l +401.843 270.29 l +401.808 269.92 l +401.438 270.115 l +401.648 269.812 l +401.33 269.665 l +402.134 269.767 l +403.278 268.674 l +402.521 269.197 l +403.153 268.453 l +402.804 268.509 l +403.123 268.218 l +402.787 267.94 l +402.994 267.612 l +402.762 267.388 l +402.349 267.669 l +402.294 267.359 l +401.822 267.306 l +402.631 267.314 l +402.407 266.697 l +402.667 266.574 l +402.348 266.273 l +402.817 266.298 l +402.539 265.446 l +402.744 265.761 l +402.948 265.52 l +403.008 264.924 l +402.729 264.938 l +403.188 264.524 l +403.027 264.172 l +403.343 262.843 l +403.132 262.651 l +403.398 262.319 l +403.078 262.075 l +402.72 262.34 l +403.127 261.759 l +402.857 260.957 l +402.064 260.389 l +402.121 259.954 l +401.93 260.372 l +401.888 259.96 l +401.681 260.356 l +401.773 259.99 l +401.575 260.14 l +401.438 259.925 l +401.61 260.39 l +401.423 260.132 l +401.17 260.262 l +401.512 259.73 l +400.957 259.488 l +400.946 260.637 l +400.873 260.064 l +400.541 260.169 l +400.72 259.974 l +400.267 259.676 l +398.252 259.219 l +397.363 259.501 l +396.818 260.236 l +397.087 260.324 l +396.596 260.44 l +396.997 260.654 l +397.413 260.208 l +397.229 260.748 l +398.247 261.063 l +397.692 261.059 l +398.085 262.257 l +397.68 261.51 l +397.672 260.931 l +397.403 260.958 l +397.491 261.148 l +396.89 261.1 l +397.129 261.778 l +396.9 261.496 l +396.786 262.092 l +397.108 262.862 l +396.722 262.037 l +396.529 262.101 l +396.73 262.413 l +396.388 262.502 l +396.631 262.335 l +396.26 262.046 l +396.1 262.901 l +396.387 263.588 l +396.067 262.939 l +395.737 263.358 l +396.164 261.999 l +395.768 262.164 l +395.946 262.547 l +395.677 262.224 l +395.383 262.325 l +395.596 261.608 l +395.705 262.015 l +396.045 261.851 l +395.987 261.202 l +395.192 261.858 l +395.099 261.467 l +395.345 261.673 l +395.812 261.094 l +395.308 261.306 l +395.497 260.914 l +395.089 261.231 l +395.532 260.749 l +394.528 261.28 l +394.374 261.9 l +394.66 261.79 l +394.305 262.347 l +395.007 261.533 l +394.561 262.319 l +395.122 262.442 l +394.768 263.101 l +395.109 263.272 l +395.108 264.02 l +394.964 263.209 l +394.575 263.439 l +394.71 263.019 l +394.163 262.903 l +394.27 263.717 l +393.966 264.12 l +394.165 264.728 l +393.984 264.386 l +393.634 264.538 l +393.439 265.474 l +393.756 266.078 l +394.667 264.935 l +393.85 266.034 l +393.769 266.512 l +394.117 267.068 l +393.811 266.7 l +393.67 267.131 l +393.73 266.186 l +393.459 266.462 l +393.152 265.152 l +393.515 264.966 l +393.301 264.649 l +393.947 263.737 l +393.88 263.424 l +393.558 263.536 l +393.971 263.065 l +393.853 262.82 l +393.282 262.844 l +393.255 263.385 l +393.599 263.644 l +393.208 264.021 l +393.033 263.628 l +393.016 264.14 l +392.775 263.987 l +392.563 264.596 l +392.926 263.353 l +392.1 263.413 l +392.107 263.785 l +391.777 263.616 l +392.012 263.913 l +391.475 264.246 l +392.035 264.206 l +392.309 264.738 l +391.519 265.619 l +391.456 265.334 l +391.294 265.562 l +391.404 264.258 l +390.802 264.341 l +391.143 264.468 l +390.691 264.63 l +390.1 264.517 l +391.358 264.81 l +390.67 264.897 l +390.611 265.299 l +390.792 265.684 l +390.565 265.704 l +390.59 264.948 l +390.22 264.798 l +389.692 265.053 l +390.132 264.976 l +389.94 265.353 l +389.495 265.279 l +389.517 265.627 l +390.281 265.844 l +390.082 266.11 l +390.523 267.021 l +391.026 267.409 l +391.208 267.203 l +391.291 267.518 l +391.487 267.333 l +391.264 268.173 l +392.098 268.441 l +392.385 267.813 l +392.42 268.281 l +392.915 268.047 l +392.766 268.367 l +392.022 268.592 l +392.176 269.016 l +392.618 269.257 l +392.323 269.23 l +392.492 269.996 l +392.213 269.448 l +391.753 269.545 l +391.482 270.51 l +391.395 269.786 l +392.234 269.183 l +391.865 268.465 l +391.66 269.236 l +391.79 268.667 l +391.102 268.186 l +390.929 268.493 l +390.75 268.233 l +391.233 267.742 l +390.658 267.554 l +390.556 267.175 l +390.347 267.4 l +389.937 265.997 l +389.563 265.799 l +389.066 265.855 l +389.415 266.156 l +388.897 265.799 l +388.651 265.932 l +389.334 267.223 l +388.674 266.191 l +388.382 266.326 l +388.442 266.629 l +388.217 266.324 l +388.378 266.894 l +389.303 267.746 l +388.2 266.887 l +388.386 267.328 l +388.031 267.173 l +388.396 267.47 l +388.191 267.469 l +387.745 266.806 l +388.111 267.606 l +387.586 266.937 l +387.235 267.25 l +387.59 267.413 l +387.546 267.805 l +387.252 267.55 l +387.428 268.15 l +387.057 267.96 l +387.742 268.742 l +387.887 268.442 l +388.217 269.053 l +388.496 268.645 l +388.287 269.099 l +388.759 269.125 l +388.358 269.196 l +389.044 269.704 l +389.291 270.414 l +387.963 268.809 l +387.744 268.808 l +388.028 269.227 l +387.227 268.513 l +386.997 267.978 l +386.699 268.201 l +386.936 268.159 l +386.934 268.699 l +386.274 268.471 l +385.952 268.714 l +386.348 268.976 l +387.028 268.705 l +387.05 269.126 l +386.564 268.977 l +386.445 269.309 l +387.118 269.343 l +386.773 269.507 l +387.046 269.911 l +387.542 269.291 l +387.276 269.873 l +387.666 269.688 l +387.986 270.137 l +386.963 270.024 l +387.314 270.211 l +386.879 270.235 l +387.023 271.072 l +388.154 270.62 l +388 271.024 l +387.066 271.199 l +387.472 271.323 l +387.163 271.472 l +387.266 271.854 l +388.174 271.808 l +388.626 271.049 l +389.013 271.58 l +388.653 271.27 l +388.232 271.832 l +388.812 272.353 l +388.055 271.856 l +387.275 272.059 l +386.641 271.158 l +387.129 271.958 l +386.406 271.369 l +386.234 271.531 l +386.51 272.103 l +386.777 271.983 l +386.68 272.499 l +387.114 272.47 l +386.87 272.671 l +387.063 272.939 l +387.567 272.667 l +387.253 273.009 l +388.181 273.22 l +388.207 273.777 l +387.99 273.368 l +387.542 273.354 l +387.864 273.449 l +387.572 273.597 l +387.873 274.487 l +388.275 274.646 l +387.909 274.741 l +387.269 273.446 l +387.356 274.2 l +386.714 272.985 l +386.443 273.257 l +386.766 273.61 l +386.375 273.317 l +385.965 273.632 l +386.157 274.249 l +386.757 274.201 l +386.918 274.843 l +387.044 274.513 l +387.246 275.22 l +387.86 274.973 l +388.839 275.154 l +386.944 275.333 l +386.98 275.053 l +386.877 275.714 l +387.62 275.658 l +387.922 275.323 l +388.264 275.578 l +387.933 275.616 l +388.557 275.805 l +387.786 275.742 l +387.938 276.202 l +387.652 275.721 l +387.631 276.045 l +387.367 275.693 l +386.917 275.792 l +387.535 276.446 l +387.225 276.39 l +387.618 277.273 l +387.189 276.662 l +386.468 277.054 l +386.769 277.262 l +386.808 277.027 l +386.975 277.429 l +386.548 277.323 l +386.987 277.833 l +386.805 278.021 l +387.29 278.02 l +387.484 277.67 l +387.602 278.553 l +387.384 278.094 l +387.121 278.186 l +387.315 278.797 l +386.876 278.275 l +386.925 278.822 l +387.156 278.714 l +386.992 278.998 l +387.261 279.023 l +386.979 279.031 l +387.034 279.566 l +388.012 279.394 l +388.267 278.824 l +388.738 279.508 l +388.311 279.35 l +388.228 279.731 l +389.137 280.888 l +388.704 280.724 l +388.513 281.237 l +388.413 280.647 l +388.265 281.528 l +388.605 282.549 l +388.093 282.462 l +387.862 282.115 l +387.831 283.127 l +387.464 282.803 l +387.354 283.234 l +387.498 281.258 l +387.768 282.131 l +388.125 281.631 l +388.101 280.39 l +387.764 279.48 l +387.522 279.839 l +387.378 279.584 l +387.009 279.784 l +387.028 280.49 l +386.772 279.22 l +386.734 279.98 l +386.426 279.635 l +386.308 280.039 l +386.765 281.018 l +386.523 281.085 l +386.418 280.567 l +386.413 281.109 l +386.284 280.66 l +385.878 281.14 l +386.108 281.532 l +385.876 281.39 l +385.706 281.736 l +385.987 281.916 l +385.685 281.915 l +385.737 282.401 l +385.467 282.467 l +385.723 282.831 l +385.271 282.8 l +385.863 283.094 l +385.37 283.032 l +385.585 283.642 l +385.19 283.871 l +385.978 283.746 l +386.195 283.996 l +386.489 283.496 l +386.227 284.119 l +386.73 284.793 l +386.245 284.19 l +385.97 284.583 l +386.167 285.059 l +385.938 284.588 l +385.393 284.704 l +385.535 285.686 l +385.207 285.386 l +385.317 285.687 l +385.306 286.54 l +385.082 284.571 l +385.028 285.107 l +384.851 284.662 l +384.707 284.937 l +384.997 285.762 l +384.634 285.052 l +384.597 285.449 l +384.813 285.493 l +384.603 285.486 l +384.754 286.739 l +384.465 287.229 l +385.031 287.125 l +385.198 287.243 l +384.909 288.578 l +385.048 287.455 l +384.804 287.309 l +384.852 287.625 l +384.552 287.459 l +384.581 287.709 l +384.453 287.342 l +384.209 288.003 l +384.295 286.999 l +383.751 288.078 l +383.663 287.757 l +383.267 288.3 l +384.173 288.125 l +383.897 288.221 l +384.426 288.341 l +384.128 288.367 l +384.211 288.672 l +384.029 288.431 l +383.557 288.687 l +383.771 288.43 l +383.541 288.64 l +383.559 288.325 l +383.196 288.477 l +382.973 288.985 l +383.625 289.121 l +382.959 289.054 l +383.046 289.388 l +382.493 289.675 l +382.521 290.085 l +383.363 290.196 l +382.894 290.378 l +382.553 290.114 l +382.336 290.594 l +381.986 290.055 l +382.266 291.617 l +382.719 291.371 l +382.894 291.847 l +382.368 291.737 l +382.503 292.065 l +382.67 291.925 l +382.587 292.787 l +381.957 290.802 l +381.773 291.255 l +382.041 291.886 l +381.412 291.152 l +381.101 291.722 l +380.684 291.616 l +380.761 291.874 l +381.259 291.8 l +381.304 292.028 l +380.968 292.013 l +381.404 292.548 l +381.049 292.392 l +381.16 292.85 l +380.82 291.995 l +380.796 292.448 l +380.409 292.342 l +380.847 292.72 l +380.247 292.399 l +380.807 293.046 l +380.888 293.39 l +380.643 292.892 l +380.432 292.833 l +380.65 ... [truncated message content] |
From: <fer...@us...> - 2007-12-03 00:12:27
|
Revision: 4548 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4548&view=rev Author: fer_perez Date: 2007-12-02 16:12:18 -0800 (Sun, 02 Dec 2007) Log Message: ----------- Commits to continue the merged book. Modified Paths: -------------- trunk/py4science/workbook/Makefile trunk/py4science/workbook/basemap.tex trunk/py4science/workbook/convolution.tex trunk/py4science/workbook/fft_imdenoise.tex trunk/py4science/workbook/files_etc.tex trunk/py4science/workbook/glass_dots.tex trunk/py4science/workbook/lotka_volterra.tex trunk/py4science/workbook/main.tex trunk/py4science/workbook/qsort.tex trunk/py4science/workbook/quad_newton.tex trunk/py4science/workbook/stats_descriptives.tex trunk/py4science/workbook/stats_distributions.tex trunk/py4science/workbook/template.tex trunk/py4science/workbook/trapezoid.tex trunk/py4science/workbook/wallis_pi.tex trunk/py4science/workbook/wordfreqs.tex Added Paths: ----------- trunk/py4science/workbook/examples trunk/py4science/workbook/fig/hothead.png trunk/py4science/workbook/fig/ipscr_code.png trunk/py4science/workbook/fig/ipscr_meth_src.png trunk/py4science/workbook/fig/ipscr_traceback.png trunk/py4science/workbook/fig/load_ascii.png trunk/py4science/workbook/fig/mpl_image_hot.png trunk/py4science/workbook/fig/mpl_image_jet.png trunk/py4science/workbook/fig/mpl_one_two_three.png trunk/py4science/workbook/fig/mpl_ratner.png trunk/py4science/workbook/fig/mpl_set_get1.png trunk/py4science/workbook/fig/mpl_set_get2.png trunk/py4science/workbook/fig/mpl_subplot_demo.png trunk/py4science/workbook/fig/mpl_toolbar.png trunk/py4science/workbook/intro_to_python.tex trunk/py4science/workbook/ipython_tut.tex trunk/py4science/workbook/matplotlib_tut.tex trunk/py4science/workbook/problems_solved trunk/py4science/workbook/python.bib trunk/py4science/workbook/python2.bib trunk/py4science/workbook/snippets trunk/py4science/workbook/why_python.tex trunk/py4science/workbook/wrapping.tex Modified: trunk/py4science/workbook/Makefile =================================================================== --- trunk/py4science/workbook/Makefile 2007-12-02 17:27:41 UTC (rev 4547) +++ trunk/py4science/workbook/Makefile 2007-12-03 00:12:18 UTC (rev 4548) @@ -1,14 +1,16 @@ solved: - rm -f examples - ln -s examples_solved examples + rm -f problems + ln -s problems_solved problems rm -f workbook_solved.tex ln -s main.tex workbook_solved.tex pdflatex workbook_solved + bibtex workbook_solved + pdflatex workbook_solved rm -f workbook_solved.tex skeletons: - rm -f examples - ln -s examples_skel examples + rm -f problems + ln -s problems_skel problems rm -f workbook_skeletons.tex ln -s main.tex workbook_skeletons.tex pdflatex workbook_skeletons Modified: trunk/py4science/workbook/basemap.tex =================================================================== --- trunk/py4science/workbook/basemap.tex 2007-12-02 17:27:41 UTC (rev 4547) +++ trunk/py4science/workbook/basemap.tex 2007-12-03 00:12:18 UTC (rev 4548) @@ -27,7 +27,7 @@ Here is an example script that creates a map by specifying the latitudes and longitudes of the four corners -\lstinputlisting[label=code:basemap1_skel,caption={IGNORED}]{../examples/basemap1.py} +\lstinputlisting[label=code:basemap1_skel,caption={IGNORED}]{problems/basemap1.py} After running this script, you should see a plot that looks similar to Figure 1. @@ -44,7 +44,7 @@ Here is an example script that creates a map by specifying the center of the map, plus the width and height in meters. -\lstinputlisting[label=code:basemap2_skel,caption={IGNORED}]{../examples/basemap2.py} +\lstinputlisting[label=code:basemap2_skel,caption={IGNORED}]{problems/basemap2.py} After running this script, you should see a plot that looks nearly identical to Figure 1.\medskip{} @@ -59,7 +59,7 @@ method drawgreatcircle is then used to draw the great circle route between these cities on the map. -\lstinputlisting[label=code:basemap3_skel,caption={IGNORED}]{../examples/basemap3.py} +\lstinputlisting[label=code:basemap3_skel,caption={IGNORED}]{problems/basemap3.py} This should produce something similar to Figure 2. @@ -79,7 +79,7 @@ is an example script that draws a graticule on the map we've been working with. -\lstinputlisting[label=code:basemap4_skel,caption={IGNORED}]{../examples/basemap4.py} +\lstinputlisting[label=code:basemap4_skel,caption={IGNORED}]{problems/basemap4.py} Running this script should produce a plot that looks like Figure 3. @@ -109,7 +109,7 @@ of how to read sea-surface temperature data from a NetCDF file and plot it on a global mollweide projection. -\lstinputlisting[label=code:basemap5_skel,caption={IGNORED}]{../examples/basemap5.py} +\lstinputlisting[label=code:basemap5_skel,caption={IGNORED}]{problems/basemap5.py} The resulting plot should look like Figure 4. Modified: trunk/py4science/workbook/convolution.tex =================================================================== --- trunk/py4science/workbook/convolution.tex 2007-12-02 17:27:41 UTC (rev 4547) +++ trunk/py4science/workbook/convolution.tex 2007-12-03 00:12:18 UTC (rev 4548) @@ -87,7 +87,7 @@ multiplication property to perform the same convolution in Fourier space to confirm the numerical result from \texttt{numpy.convolve}. -\lstinputlisting[label=code:convolution_demo,caption={IGNORED}]{examples/convolution_demo.py} +\lstinputlisting[label=code:convolution_demo,caption={IGNORED}]{problems/convolution_demo.py} Added: trunk/py4science/workbook/examples =================================================================== --- trunk/py4science/workbook/examples (rev 0) +++ trunk/py4science/workbook/examples 2007-12-03 00:12:18 UTC (rev 4548) @@ -0,0 +1 @@ +link ../book/examples \ No newline at end of file Property changes on: trunk/py4science/workbook/examples ___________________________________________________________________ Name: svn:special + * Modified: trunk/py4science/workbook/fft_imdenoise.tex =================================================================== --- trunk/py4science/workbook/fft_imdenoise.tex 2007-12-02 17:27:41 UTC (rev 4547) +++ trunk/py4science/workbook/fft_imdenoise.tex 2007-12-03 00:12:18 UTC (rev 4548) @@ -41,7 +41,7 @@ to one. This serves to enhance contrast among the darker elements of the image, so it is not completely dominated by the brighter segments -\lstinputlisting[label=code:fft_imdenoise,caption={IGNORED}]{examples/fft_imdenoise.py} +\lstinputlisting[label=code:fft_imdenoise,caption={IGNORED}]{problems/fft_imdenoise.py} \begin{figure} \begin{centering}\includegraphics[width=4in]{fig/fft_imdenoise}\par\end{centering} Added: trunk/py4science/workbook/fig/hothead.png =================================================================== (Binary files differ) Property changes on: trunk/py4science/workbook/fig/hothead.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/py4science/workbook/fig/ipscr_code.png =================================================================== (Binary files differ) Property changes on: trunk/py4science/workbook/fig/ipscr_code.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/py4science/workbook/fig/ipscr_meth_src.png =================================================================== (Binary files differ) Property changes on: trunk/py4science/workbook/fig/ipscr_meth_src.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/py4science/workbook/fig/ipscr_traceback.png =================================================================== (Binary files differ) Property changes on: trunk/py4science/workbook/fig/ipscr_traceback.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/py4science/workbook/fig/load_ascii.png =================================================================== (Binary files differ) Property changes on: trunk/py4science/workbook/fig/load_ascii.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/py4science/workbook/fig/mpl_image_hot.png =================================================================== (Binary files differ) Property changes on: trunk/py4science/workbook/fig/mpl_image_hot.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/py4science/workbook/fig/mpl_image_jet.png =================================================================== (Binary files differ) Property changes on: trunk/py4science/workbook/fig/mpl_image_jet.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/py4science/workbook/fig/mpl_one_two_three.png =================================================================== (Binary files differ) Property changes on: trunk/py4science/workbook/fig/mpl_one_two_three.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/py4science/workbook/fig/mpl_ratner.png =================================================================== (Binary files differ) Property changes on: trunk/py4science/workbook/fig/mpl_ratner.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/py4science/workbook/fig/mpl_set_get1.png =================================================================== (Binary files differ) Property changes on: trunk/py4science/workbook/fig/mpl_set_get1.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/py4science/workbook/fig/mpl_set_get2.png =================================================================== (Binary files differ) Property changes on: trunk/py4science/workbook/fig/mpl_set_get2.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/py4science/workbook/fig/mpl_subplot_demo.png =================================================================== (Binary files differ) Property changes on: trunk/py4science/workbook/fig/mpl_subplot_demo.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/py4science/workbook/fig/mpl_toolbar.png =================================================================== (Binary files differ) Property changes on: trunk/py4science/workbook/fig/mpl_toolbar.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: trunk/py4science/workbook/files_etc.tex =================================================================== --- trunk/py4science/workbook/files_etc.tex 2007-12-02 17:27:41 UTC (rev 4547) +++ trunk/py4science/workbook/files_etc.tex 2007-12-03 00:12:18 UTC (rev 4548) @@ -44,7 +44,7 @@ Here is the exercise skeleton of the script to create and plot the data file -\lstinputlisting[label=code:noisy_sine,caption={IGNORED}]{examples/noisy_sine.py} +\lstinputlisting[label=code:noisy_sine,caption={IGNORED}]{problems/noisy_sine.py} and the graph will look something like Figure~\ref{fig:noisy_sine} @@ -189,7 +189,7 @@ in 2003 and held to the present) for each stock. Here is the exercise skeleton.: -\lstinputlisting[label=code:stock_records,caption={IGNORED}]{examples/stock_records.py} +\lstinputlisting[label=code:stock_records,caption={IGNORED}]{problems/stock_records.py} The graph will look something like Figure~\ref{fig:stock_records}. Modified: trunk/py4science/workbook/glass_dots.tex =================================================================== --- trunk/py4science/workbook/glass_dots.tex 2007-12-02 17:27:41 UTC (rev 4547) +++ trunk/py4science/workbook/glass_dots.tex 2007-12-03 00:12:18 UTC (rev 4548) @@ -38,7 +38,7 @@ \textit{stable node}, if one is greater than one and the other less than one, we have a \textit{saddle node}. -\lstinputlisting[label=code:glass_dots1,caption={IGNORED}]{examples/glass_dots1.py} +\lstinputlisting[label=code:glass_dots1,caption={IGNORED}]{problems/glass_dots1.py} Added: trunk/py4science/workbook/intro_to_python.tex =================================================================== --- trunk/py4science/workbook/intro_to_python.tex (rev 0) +++ trunk/py4science/workbook/intro_to_python.tex 2007-12-03 00:12:18 UTC (rev 4548) @@ -0,0 +1,1474 @@ + +\chapter[Python intro]{A whirlwind tour of python and the standard library} + +This is a quick-and-dirty introduction to the python language for +the impatient scientist. There are many top notch, comprehensive introductions +and tutorials for python. For absolute beginners, there is the \textit{Python +Beginner's Guide}.% +\footnote{http://www.python.org/moin/BeginnersGuide% +} The official \textit{Python Tutorial} can be read online% +\footnote{http://docs.python.org/tut/tut.html% +} or downloaded% +\footnote{http://docs.python.org/download.html% +} in a variety of formats. There are over 100 python tutorials collected +online.% +\footnote{http://www.awaretek.com/tutorials.html% +} + +There are also many excellent books. Targetting newbies is Mark Pilgrim's +\textit{Dive into Python} which in available in print and for free +online% +\footnote{http://diveintopython.org/toc/index.html% +}, though for absolute newbies even this may be too hard \cite{Dive}. +For experienced programmers, David Beasley's \textit{Python Essential +Reference} is an excellent introduction to python, but is a bit dated +since it only covers python2.1 \cite{Beasley}. Likwise Alex Martelli's +\textit{Python in a Nutshell} is highly regarded and a bit more current +-- a 2nd edition is in the works\cite{Nutshell}. And \textit{The +Python Cookbook} is an extremely useful collection of python idioms, +tips and tricks \cite{Cookbook}. + +But the typical scientist I encounter wants to solve a specific problem, +eg, to make a certain kind of graph, to numerically integrate an equation, +or to fit some data to a parametric model, and doesn't have the time +or interest to read several books or tutorials to get what they want. +This guide is for them: a short overview of the language to help them +get to what they want as quickly as possible. We get to advanced material +pretty quickly, so it may be touch sledding if you are a python newbie. +Take in what you can, and if you start getting dizzy, skip ahead to +the next section; you can always come back to absorb more detail later, +after you get your real work done. + + +\section{Hello Python} + +Python is a dynamically typed, object oriented, interpreted language. +Interpreted means that your program interacts with the python interpreter, +similar to Matlab, Perl, Tcl and Java, and unlike FORTRAN, C, or C++ +which are compiled. So let's fire up the python interpreter and get +started. I'm not going to cover installing python -- it's standard +on most linux boxes and for windows there is a friendly GUI installer. +To run the python interpreter, on windows, you can click \texttt{Start->All +Programs->Python 2.4->Python (command line)} or better yet, install +\texttt{ipython}, a python shell on steroids, and use that. On linux +/ unix systems, you just need to type \texttt{python} or \texttt{ipython} +at the command line. The \texttt{>\,{}>\,{}>} is the default python +shell prompt, so don't type it in the examples below + +\begin{lyxcode} +>\,{}>\,{}>~print~'hello~world' + +hello~world + + +\end{lyxcode} +As this example shows, \textit{hello world} in python is pretty easy +-- one common phrase you hear in the python community is that {}``it +fits your brain''. -- the basic idea is that coding in python feels +natural. Compare python's version with \textit{hello world} in C++ + +\begin{lyxcode} +//~C++ + +\#include~<iostream> + +int~main~() + +\{~~~ + +~~std::cout~<\,{}<~\char`\"{}Hello~World\char`\"{}~<\,{}<~std::endl; + +~~return~0; + +\} +\end{lyxcode} + +\section[Calculator]{\label{sec:into_calculator}Python is a calculator} + +Aside from my daughter's solar powered cash-register calculator, Python +is the only calculator I use. From the python shell, you can type +arbitrary arithmetic expressions. + +\begin{lyxcode} +>\,{}>\,{}>~2+2 + +4 + +>\,{}>\,{}>~2{*}{*}10 + +1024 + +>\,{}>\,{}>~10/5 + +2 + +>\,{}>\,{}>~2+(24.3~+~.9)/.24 + +107.0 + +>\,{}>\,{}>~2/3 + +0 +\end{lyxcode} +The last line is a standard newbie gotcha -- if both the left and +right operands are integers, python returns an integer. To do floating +point division, make sure at least one of the numbers is a float + +\begin{lyxcode} +>\,{}>\,{}>~2.0/3 + +0.66666666666666663 +\end{lyxcode} +The distinction between integer and floating point division is a common +source of frustration among newbies and is slated for destruction +in the mythical Python 3000.% +\footnote{Python 3000 is a future python release that will clean up several +things that Guido considers to be warts.% +} Since default integer division will be removed in the future, you +can invoke the time machine with the \texttt{from \_\_future\_\_} +directives; these directives allow python programmers today to use +features that will become standard in future releases but are not +included by default because they would break existing code. From future +directives should be among the first lines you type in your python +code if you are going to use them, otherwise they may not work. The +future division operator will assume floating point division by default,% +\footnote{You may have noticed that 2/3 was represented as 0.66666666666666663 +and not 0.66666666666666666 as might be expected. This is because +computers are binary calculators, and there is no exact binary representation +of 2/3, just as there is no exact binary representation of 0.1 + +\begin{lyxcode} +>\,{}>\,{}>~0.1 + +0.10000000000000001 +\end{lyxcode} +Some languages try and hide this from you, but python is explicit.% +}and provides another operator // to do classic integer division. + +\begin{lyxcode} +>\,{}>\,{}>~from~\_\_future\_\_~import~division + +>\,{}>\,{}>~2/3 + +0.66666666666666663 + +>\,{}>\,{}>~2//3 + +0 +\end{lyxcode} +python has four basic numeric types: int, long, float and complex, +but unlike C++, BASIC, FORTRAN or Java, you don't have to declare +these types. python can infer them + +\begin{lyxcode} +>\,{}>\,{}>~type(1) + +<type~'int'> + +>\,{}>\,{}>~type(1.0) + +<type~'float'> + +>\,{}>\,{}>~type(2{*}{*}200) + +<type~'long'> + + +\end{lyxcode} +$2^{200}$is a huge number! + +\begin{lyxcode} +>\,{}>\,{}>~2{*}{*}200 + +1606938044258990275541962092341162602522202993782792835301376L +\end{lyxcode} +but python will blithely compute it and much larger numbers for you +as long as you have CPU and memory to handle them. The integer type, +if it overflows, will automatically convert to a python \texttt{long} +(as indicated by the appended \texttt{L} in the output above) and +has no built-in upper bound on size, unlike C/C++ longs. + +Python has built in support for complex numbers. Eg, we can verify +$i^{2}=-1$ + +\begin{lyxcode} +>\,{}>\,{}>~x~=~complex(0,1) + +>\,{}>\,{}>~x{*}x + +(-1+0j) +\end{lyxcode} +To access the real and imaginary parts of a complex number, use the +\texttt{real} and \texttt{imag} attributes + +\begin{lyxcode} +>\,{}>\,{}>~x.real + +0.0 + +>\,{}>\,{}>~x.imag + +1.0 +\end{lyxcode} +If you come from other languages like Matlab, the above may be new +to you. In matlab, you might do something like this (>\,{}> is the +standard matlab shell prompt) + +\begin{lyxcode} +>\,{}>~x~=~0+j + +x~= + +~~~0.0000~+~1.0000i + + + +>\,{}>~real(x) + +ans~= + +~~~~~0 + + + +>\,{}>~imag(x) + +ans~= + +~~~~~1 + + + + +\end{lyxcode} +That is, in Matlab, you use a \textit{function} to access the real +and imaginary parts of the data, but in python these are attributes +of the complex object itself. This is a core feature of python and +other object oriented languages: an object carries its data and methods +around with it. One might say: {}``a complex number knows it's real +and imaginary parts'' or {}``a complex number knows how to take +its conjugate'', you don't need external functions for these operations + +\begin{lyxcode} +>\,{}>\,{}>~x.conjugate + +<built-in~method~conjugate~of~complex~object~at~0xb6a62368> + +>\,{}>\,{}>~x.conjugate() + +-1j +\end{lyxcode} +On the first line, I just followed along from the example above with +\texttt{real} and \texttt{imag} and typed \texttt{x.conjugate} and +python printed the representation \texttt{<built-in method conjugate +of complex object at 0xb6a62368>.} This means that \texttt{conjugate} +is a \textit{method}, a.k.a a function, and in python we need to use +parentheses to call a function. If the method has arguments, like +the \texttt{x} in \texttt{sin(x)}, you place them inside the parentheses, +and if it has no arguments, like \texttt{conjugate}, you simply provide +the open and closing parentheses. \texttt{real}, \texttt{imag} and +\texttt{conjugate} are attributes of the complex object, and \texttt{conjugate} +is a \textit{callable} attribute, known as a \textit{method}. + +OK, now you are an object oriented programmer. There are several key +ideas in object oriented programming, and this is one of them: an +object carries around with it data (simple attributes) and methods +(callable attributes) that provide additional information about the +object and perform services. It's one stop shopping -- no need to +go to external functions and libraries to deal with it -- the object +knows how to deal with itself. + + +\section[Standard Library]{Accessing the standard library} + +Arithmetic is fine, but before long you may find yourself tiring of +it and wanting to compute logarithms and exponents, sines and cosines + +\begin{lyxcode} +>\,{}>\,{}>~log(10) + +Traceback~(most~recent~call~last): + +~~File~\char`\"{}<stdin>\char`\"{},~line~1,~in~? + +NameError:~name~'log'~is~not~defined +\end{lyxcode} +These functions are not built into python, but don't despair, they +are built into the python standard library. To access a function from +the standard library, or an external library for that matter, you +must import it. + +\begin{lyxcode} +>\,{}>\,{}>~import~math + +>\,{}>\,{}>~math.log(10) + +2.3025850929940459 + +>\,{}>\,{}>~math.sin(math.pi) + +1.2246063538223773e-16 +\end{lyxcode} +Note that the default \texttt{log} function is a base 2 logarithm +(use \texttt{math.log10} for base 10 logs) and that floating point +math is inherently imprecise, since analytically$\sin(\pi)=0$. + +It's kind of a pain to keep typing \texttt{math.log} and \texttt{math.sin} +and \texttt{math.p}i, and python is accomodating. There are additional +forms of \texttt{import} that will let you save more or less typing +depending on your desires + +\begin{lyxcode} +\textcolor{blue}{\#~Appreviate~the~module~name:~m~is~an~alias} + +>\,{}>\,{}>~import~math~as~m + +>\,{}>\,{}>~m.cos(2{*}m.pi) + +1.0 + + + +\textcolor{blue}{\#~Import~just~the~names~you~need} + +>\,{}>\,{}>~from~math~import~exp,~log + +>\,{}>\,{}>~log(exp(1)) + +1.0 + + + +\textcolor{blue}{\#~Import~everything~-~use~with~caution!} + +>\,{}>\,{}>~from~math~import~{*} + +>\,{}>\,{}>~sin(2{*}pi{*}10) + +-2.4492127076447545e-15 +\end{lyxcode} +To help you learn more about what you can find in the math library, +python has nice introspection capabilities -- introspection is a way +of asking an object about itself. For example, to find out what is +available in the math library, we can get a directory of everything +available with the \texttt{dir} command% +\footnote{In addition to the introdpection and help provided in the python interpreter, +the official documentation of the python standard library is very +good and up-to-date http://docs.python.org/lib/lib.html .% +} + +\begin{lyxcode} +>\,{}>\,{}>~dir(math) + +{[}'\_\_doc\_\_',~'\_\_file\_\_',~'\_\_name\_\_',~'acos',~'asin',~'atan',~'atan2',~'ceil',~'cos',~'cosh',~'degrees',~'e',~'exp',~'fabs',~'floor',~'fmod',~'frexp',~'hypot',~'ldexp',~'log',~'log10',~'modf',~'pi',~'pow',~'radians',~'sin',~'sinh',~'sqrt',~'tan',~'tanh'] +\end{lyxcode} +This gives us just a listing of the names that are in the math module +-- they are fairly self descriptive, but if you want more, you can +call \texttt{help} on any of these functions for more information + +\begin{lyxcode} +>\,{}>\,{}>~help(math.sin)~ + +Help~on~built-in~function~sin: + +sin(...) + +sin(x) + +Return~the~sine~of~x~(measured~in~radians). +\end{lyxcode} +and for the whole math library + +\begin{lyxcode} +>\,{}>\,{}>~help(math)~ + +Help~on~module~math: + +~ + +NAME + +~~~~math + +~ + +FILE + +~~~~/usr/local/lib/python2.3/lib-dynload/math.so + +~ + +DESCRIPTION + +~~~~This~module~is~always~available.~~It~provides~access~to~the + +~~~~mathematical~functions~defined~by~the~C~standard. + +~ + +FUNCTIONS + +~~~~acos(...) + +~~~~~~~~acos(x) + +~~~~~~~~~ + +~~~~~~~~Return~the~arc~cosine~(measured~in~radians)~of~x. + +~~~~~ + +~~~~asin(...) + +~~~~~~~~asin(x) + +~~~~~~~~~ + +~~~~~~~~Return~the~arc~sine~(measured~in~radians)~of~x. + +~~~~~ +\end{lyxcode} +And much more which is snipped. Likewise, we can get information on +the complex object in the same way + +\begin{lyxcode} +>\,{}>\,{}>~x~=~complex(0,1) + +>\,{}>\,{}>~dir(x) + +{[}'\_\_abs\_\_',~'\_\_add\_\_',~'\_\_class\_\_',~'\_\_coerce\_\_',~'\_\_delattr\_\_',~'\_\_div\_\_',~'\_\_divmod\_\_',~'\_\_doc\_\_',~'\_\_eq\_\_',~'\_\_float\_\_',~'\_\_floordiv\_\_',~'\_\_ge\_\_',~'\_\_getattribute\_\_',~'\_\_getnewargs\_\_',~'\_\_gt\_\_',~'\_\_hash\_\_',~'\_\_init\_\_',~'\_\_int\_\_',~'\_\_le\_\_',~'\_\_long\_\_',~'\_\_lt\_\_',~'\_\_mod\_\_',~'\_\_mul\_\_',~'\_\_ne\_\_',~'\_\_neg\_\_',~'\_\_new\_\_',~'\_\_nonzero\_\_',~'\_\_pos\_\_',~'\_\_pow\_\_',~'\_\_radd\_\_',~'\_\_rdiv\_\_',~'\_\_rdivmod\_\_',~'\_\_reduce\_\_',~'\_\_reduce\_ex\_\_',~'\_\_repr\_\_',~'\_\_rfloordiv\_\_',~'\_\_rmod\_\_',~'\_\_rmul\_\_',~'\_\_rpow\_\_',~'\_\_rsub\_\_',~'\_\_rtruediv\_\_',~'\_\_setattr\_\_',~'\_\_str\_\_',~'\_\_sub\_\_',~'\_\_truediv\_\_',~'conjugate',~'imag',~'real'] + + +\end{lyxcode} +Notice that called \texttt{dir} or \texttt{help} on the \texttt{math} +\textit{module}, the \texttt{math.sin} \textit{function}, and the +\texttt{complex} \textit{number} \texttt{x}. That's because modules, +functions and numbers are all \textit{objects}, and we use the same +object introspection and help capabilites on them. We can find out +what type of object they are by calling \texttt{type} on them, which +is another function in python's introspection arsenal + +\begin{lyxcode} +>\,{}>\,{}>~type(math) + +<type~'module'> + +>\,{}>\,{}>~type(math.sin) + +<type~'builtin\_function\_or\_method'> + +>\,{}>\,{}>~type(x) + +<type~'complex'> + + +\end{lyxcode} +Now, you may be wondering: what were all those god-awful looking double +underscore methods, like \texttt{\_\_abs\_\_} and \texttt{\_\_mul\_\_} +in the \texttt{dir} listing of the complex object above? These are +methods that define what it means to be a numeric type in python, +and the complex object implements these methods so that complex numbers +act like the way should, eg \texttt{\_\_mul\_\_} implements the rules +of complex multiplication. The nice thing about this is that python +specifies an application programming interface (API) that is the definition +of what it means to be a number in python. And this means you can +define your own numeric types, as long as you implement the required +special double underscore methods for your custom type. double underscore +methods are very important in python; although the typical newbie +never sees them or thinks about them, they are there under the hood +providing all the python magic, and more importantly, showing the +way to let you make magic. + + +\section{\label{sec:intro_string}Strings} + +We've encountered a number of types of objects above: int, float, +long, complex, method/function and module. We'll continue our tour +with an introduction to strings, which are critical components of +almost every program. You can create strings in a number of different +ways, with single quotes, double quotes, or triple quotes -- this +diversity of methods makes it easy if you need to embed string characters +in the string itself + +\begin{lyxcode} +\textcolor{blue}{\#~single,~double~and~triple~quoted~strings} + +>\,{}>\,{}>~s~=~'Hi~Mom!' + +>\,{}>\,{}>~s~=~\char`\"{}Hi~Mom!\char`\"{} + +>\,{}>\,{}>~s~=~\char`\"{}\char`\"{}\char`\"{}Porky~said,~\char`\"{}That's~all~folks!\char`\"{}~\char`\"{}\char`\"{}\char`\"{} +\end{lyxcode} +You can add strings together to concatenate them + +\begin{lyxcode} +\textcolor{blue}{\#~concatenating~strings} + +>\,{}>\,{}>~first~=~'John' + +>\,{}>\,{}>~last~=~'Hunter' + +>\,{}>\,{}>~first+last + +'JohnHunter' +\end{lyxcode} +or call string methods to process them: upcase them or downcase them, +or replace one character with another + +\begin{lyxcode} +\textcolor{blue}{\#~string~methods} + +>\,{}>\,{}>~last.lower() + +'hunter' + +>\,{}>\,{}>~last.upper() + +'HUNTER' + +>\,{}>\,{}>~last.replace('h',~'p') + +'Hunter' + +>\,{}>\,{}>~last.replace('H',~'P') + +'Punter'~ +\end{lyxcode} +Note that in all of these examples, the string \texttt{last} is unchanged. +All of these methods operate on the string and return a new string, +leaving the original unchanged. In fact, python strings cannot be +changed by any python code at all: they are \textit{immutable} (unchangeable). +The concept of mutable and immutable objects in python is an important +one, and it will come up again, because only immutable objects can +be used as keys in python dictionaries and elements of python sets. + +You can access individual characters, or slices of the string (substrings), +using indexing. A string in sequence of characters, and strings implement +the sequence protocol in python -- we'll see more examples of python +sequences later -- and all sequences have the same syntax for accessing +their elements. Python uses 0 based indexing which means the first +element is at index 0; you can use negative indices to access the +last elements in the sequence + +\begin{lyxcode} +\textcolor{blue}{\#~string~indexing} + +>\,{}>\,{}>~last~=~'Hunter' + +>\,{}>\,{}>~last{[}0] + +'H' + +>\,{}>\,{}>~last{[}1] + +'u' + +>\,{}>\,{}>~last{[}-1]~ + +'r'~ +\end{lyxcode} +To access substrings, or generically in terms of the sequence protocol, +slices, you use a colon to indicate a range + +\begin{lyxcode} +\textcolor{blue}{\#~string~slicing} + +>\,{}>\,{}>~last{[}0:2] + +'Hu' + +>\,{}>\,{}>~last{[}2:4] + +'nt' +\end{lyxcode} +As this example shows, python uses {}``one-past-the-end'' indexing +when defining a range; eg, in the range \texttt{indmin:indmax}, the +element of \texttt{imax} is not included. You can use negative indices +when slicing too; eg, to get everything before the last character + +\begin{lyxcode} +>\,{}>\,{}>~last{[}0:-1] + +'Hunte' +\end{lyxcode} +You can also leave out either the min or max indicator; if they are +left out, 0 is assumed to be the \texttt{indmin} and one past the +end of the sequence is assumed to be \texttt{indmax} + +\begin{lyxcode} +>\,{}>\,{}>~last{[}:3] + +'Hun' + +>\,{}>\,{}>~last{[}3:] + +'ter' +\end{lyxcode} +There is a third number that can be placed in a slice, a step, with +syntax indmin:indmax:step; eg, a step of 2 will skip every second +letter + +\begin{lyxcode} +>\,{}>\,{}>~last{[}1:6:2] + +'utr' +\end{lyxcode} +Although this may be more that you want to know about slicing strings, +the time spent here is worthwhile. As mentioned above, all python +sequences obey these rules. In addition to strings, lists and tuples, +which are built-in python sequence data types and are discussed in +the next section, the numeric arrays widely used in scientific computing +also implement the sequence protocol, and thus have the same slicing +rules. + +\begin{xca} +What would you expect last{[}:] to return? +\end{xca} +One thing that comes up all the time is the need to create strings +out of other strings and numbers, eg to create filenames from a combination +of a base directory, some base filename, and some numbers. Scientists +like to create lots of data files like and then write code to loop +over these files and analyze them. We're going to show how to do that, +starting with the newbie way and progressively building up to the +way of python zen master. All of the methods below \textit{work}, +but the zen master way will more efficient, more scalable (eg to larger +numbers of files) and cross-platform.% +\footnote{{}``But it works'' is a common defense of bad code; my rejoinder +to this is {}``A computer scientist is someone who fixes things that +aren't broken''. % +} Here's the newbie way: we also introduce the for-loop here in the +spirit of diving into python -- note that python uses whitespace indentation +to delimit the for-loop code block + +\begin{lyxcode} +\textcolor{blue}{\#~The~newbie~way} + +for~i~in~(1,2,3,4): + +~~~~fname~=~'data/myexp0'~+~str(i)~+~'.dat' + +~~~~print~fname +\end{lyxcode} +Now as promised, this will print out the 4 file names above, but it +has three flaws: it doesn't scale to 10 or more files, it is inefficient, +and it is not cross platform. It doesn't scale because it hard-codes +the '\texttt{0}' after \texttt{myexp}, it is inefficient because to +add several strings requires the creation of temporary strings, and +it is not cross-platform because it hard-codes the directory separator +'/'. + +\begin{lyxcode} +\textcolor{blue}{\#~On~the~path~to~elightenment} + +for~i~in~(1,2,3,4): + +~~~~fname~=~'data/myexp\%02d.dat'\%i + +~~~~print~fname +\end{lyxcode} +This example uses string interpolation, the funny \% thing. If you +are familiar with C programming, this will be no surprise to you (on +linux/unix systems do \texttt{man sprintf} at the unix shell). The +percent character is a string formatting character: \texttt{\%02d} +means to take an integer (the \texttt{d} part) and print it with two +digits, padding zero on the left (the \texttt{\%02} part). There is +more to be said about string interpolation, but let's finish the job +at hand. This example is better than the newbie way because is scales +up to files numbered 0-99, and it is more efficient because it avoids +the creation of temporary strings. For the platform independent part, +we go to the python standard library \texttt{os.path}, which provides +a host of functions for platform-independent manipulations of filenames, +extensions and paths. Here we use \texttt{os.path.join} to combine +the directory with the filename in a platform independent way. On +windows, it will use the windows path separator '\textbackslash{}' +and on unix it will use '/'. + +\begin{lyxcode} +\textcolor{blue}{\#~the~zen~master~approach} + +import~os + +for~i~in~(1,2,3,4): + +~~~~fname~=~os.path.join('data',~'myexp\%02d.dat'\%i) + +~~~~print~fname +\end{lyxcode} +\begin{xca} +Suppose you have data files named like +\end{xca} +\begin{lyxcode} +data/2005/exp0100.dat + +data/2005/exp0101.dat + +data/2005/exp0102.dat + +... + +data/2005/exp1000.dat +\end{lyxcode} +Write the python code that iterates over these files, constructing +the filenames as strings in using \texttt{os.path.join} to construct +the paths in a platform-independent way. \textit{Hint}: read the help +for \texttt{os.path.join}! + +OK, I promised to torture you a bit more with string interpolation +-- don't worry, I remembered. The ability to properly format your +data when printing it is crucial in scientific endeavors: how many +signficant digits do you want, do you want to use integer, floating +point representation or exponential notation? These three choices +are provided with \texttt{\%d}, \texttt{\%f} and \texttt{\%e}, with +lots of variations on the theme to indicate precision and more + +\begin{lyxcode} +>\,{}>\,{}>~'warm~for~\%d~minutes~at~\%1.1f~C'~\%~(30,~37.5) + +'warm~for~30~minutes~at~37.5~C' + + + +>\,{}>\,{}>~'The~mass~of~the~sun~is~\%1.4e~kg'\%~(1.98892{*}10{*}{*}30) + +'The~mass~of~the~sun~is~1.9889e+30~kg' + + +\end{lyxcode} +There are two string methods, \texttt{split} and \texttt{join}, that +arise frequenctly in Numeric processing, specifically in the context +of processing data files that have comma, tab, or space separated +numbers in them. \texttt{split} takes a single string, and splits +it on the indicated character to a sequence of strings. This is useful +to take a single line of space or comma separated values and split +them into individual numbers + +\begin{lyxcode} +\textcolor{blue}{\#~s~is~a~single~string~and~we~split~it~into~a~list~of~strings} + +\textcolor{blue}{\#~for~further~processing} + +>\,{}>\,{}>~s~=~'1.0~2.0~3.0~4.0~5.0' + +>\,{}>\,{}>~s.split('~') + +{[}'1.0',~'2.0',~'3.0',~'4.0',~'5.0'] +\end{lyxcode} +The return value, with square brackets, indicates that python has +returned a list of strings. These individual strings need further +processing to convert them into actual floats, but that is the first +step. The conversion to floats will be discussed in the next session, +when we learn about list comprehensions. The converse method is join, +which is often used to create string output to an ASCII file from +a list of numbers. In this case you want to join a list of numbers +into a single line for printing to a file. The example below will +be clearer after the next section, in which lists are discussed + +\begin{lyxcode} +\textcolor{blue}{\#~vals~is~a~list~of~floats~and~we~convert~it~to~a~single} + +\textcolor{blue}{\#~space~separated~string} + +>\,{}>\,{}>~vals~=~{[}1.0,~2.0,~3.0,~4.0,~5.0] + +>\,{}>\,{}>~'~'.join({[}str(val)~for~val~in~vals]) + +'1.0~2.0~3.0~4.0~5.0' +\end{lyxcode} +There are two new things in the example above. One, we called the +join method directly on a string itself, and not on a variable name. +Eg, in the previous examples, we always used the name of the object +when accessing attributes, eg \texttt{x.real} or \texttt{s.upper()}. +In this example, we call the \texttt{join} method on the string which +is a single space. The second new feature is that we use a list comprehension +\texttt{{[}str(val) for val in vals]} as the argument to \texttt{join}. +\texttt{join} requires a sequence of strings, and the list comprehension +converts a list of floats to a strings. This can be confusing at first, +so don't dispair if it is. But it is worth bringing up early because +list comprehensions are a very useful feature of python. To help elucidate, +compare \texttt{vals}, which is a list of floats, with the conversion +of \texttt{vals} to a list of strings using list comprehensions in +the next line + +\begin{lyxcode} +\textcolor{blue}{\#~converting~a~list~of~floats~to~a~list~of~strings} + +>\,{}>\,{}>~vals + +{[}1.0,~2.0,~3.0,~4.0,~5.0] + +>\,{}>\,{}>~{[}str(val)~for~val~in~vals]~ + +{[}'1.0',~'2.0',~'3.0',~'4.0',~'5.0'] +\end{lyxcode} + +\section[Data Structures]{The basic python data structures} + +Strings, covered in the last section, are sequences of characters. +python has two additional built-in sequence types which can hold arbitrary +elements: tuples and lists. tuples are created using parentheses, +and lists are created using square brackets + +\begin{lyxcode} +\textcolor{blue}{\#~a~tuple~and~a~list~of~elements~of~the~same~type} + +\textcolor{blue}{\#~(homogeneous)} + +>\,{}>\,{}>~t~=~(1,2,3,4)~~\#~tuple + +>\,{}>\,{}>~l~=~{[}1,2,3,4]~~\#~list +\end{lyxcode} +Both tuples and lists can also be used to hold elements of different +types + +\begin{lyxcode} +\textcolor{blue}{\#~a~tuple~and~list~of~int,~string,~float} + +>\,{}>\,{}>~t~=~(1,'john',~3.0) + +>\,{}>\,{}>~l~=~{[}1,'john',~3.0] +\end{lyxcode} +Tuples and lists have the same indexing and slicing rules as each +other, and as string discussed above, because both implement the python +sequence protocol, with the only difference being that tuple slices +return tuples (indicated by the parentheses below) and list slices +return lists (indicated by the square brackets) + +\begin{lyxcode} +\#~indexing~and~slicing~tuples~and~lists + +>\,{}>\,{}>~t{[}0] + +1 + +>\,{}>\,{}>~l{[}0] + +1 + +>\,{}>\,{}>~t{[}:-1] + +(1,~'john') + +>\,{}>\,{}>~l{[}:-1] + +{[}1,~'john'] +\end{lyxcode} +So why the difference between tuples and lists? A number of explanations +have been offered on the mailing lists, but the only one that makes +a difference to me is that tuples are immutable, like strings, and +hence can be used as keys to python dictionaries and included as elements +of sets, and lists are mutable, and cannot. So a tuple, once created, +can never be changed, but a list can. For example, if we try to reassign +the first element of the tuple above, we get an error + +\begin{lyxcode} +>\,{}>\,{}>~t{[}0]~=~'why~not?' + +Traceback~(most~recent~call~last): + +~File~\char`\"{}<stdin>\char`\"{},~line~1,~in~? + +TypeError:~object~doesn't~support~item~assignment +\end{lyxcode} +But the same operation is perfectly accetable for lists + +\begin{lyxcode} +>\,{}>\,{}>~l{[}0]~=~'why~not?' + +>\,{}>\,{}>~l + +{[}'why~not?',~'john',~3.0] +\end{lyxcode} +lists also have a lot of methods, tuples have none, save the special +double underscore methods that are required for python objects and +sequences + +\begin{lyxcode} +\textcolor{blue}{\#~tuples~contain~only~{}``hidden''~double~underscore~methods} + +>\,{}>\,{}>~dir(t) + +{[}'\_\_add\_\_',~'\_\_class\_\_',~'\_\_contains\_\_',~'\_\_delattr\_\_',~'\_\_doc\_\_',~'\_\_eq\_\_',~'\_\_ge\_\_',~'\_\_getattribute\_\_',~'\_\_getitem\_\_',~'\_\_getnewargs\_\_',~'\_\_getslice\_\_',~'\_\_gt\_\_',~'\_\_hash\_\_',~'\_\_init\_\_',~'\_\_iter\_\_',~'\_\_le\_\_',~'\_\_len\_\_',~'\_\_lt\_\_',~'\_\_mul\_\_',~'\_\_ne\_\_',~'\_\_new\_\_',~'\_\_reduce\_\_',~'\_\_reduce\_ex\_\_',~'\_\_repr\_\_',~'\_\_rmul\_\_',~'\_\_setattr\_\_',~'\_\_str\_\_'] + + + +\textcolor{blue}{\#~but~lists~contain~other~methods,~eg~append,~extend~and} + +\textcolor{blue}{\#~reverse} + +>\,{}>\,{}>~dir(l) + +{[}'\_\_add\_\_',~'\_\_class\_\_',~'\_\_contains\_\_',~'\_\_delattr\_\_',~'\_\_delitem\_\_',~'\_\_delslice\_\_',~'\_\_doc\_\_',~'\_\_eq\_\_',~'\_\_ge\_\_',~'\_\_getattribute\_\_',~'\_\_getitem\_\_',~'\_\_getslice\_\_',~'\_\_gt\_\_',~'\_\_hash\_\_',~'\_\_iadd\_\_',~'\_\_imul\_\_',~'\_\_init\_\_',~'\_\_iter\_\_',~'\_\_le\_\_',~'\_\_len\_\_',~'\_\_lt\_\_',~'\_\_mul\_\_',~'\_\_ne\_\_',~'\_\_new\_\_',~'\_\_reduce\_\_',~'\_\_reduce\_ex\_\_',~'\_\_repr\_\_',~'\_\_rmul\_\_',~'\_\_setattr\_\_',~'\_\_setitem\_\_',~'\_\_setslice\_\_',~'\_\_str\_\_',~'append',~'count',~'extend',~'index',~'insert',~'pop',~'remove',~'reverse',~'sort'] +\end{lyxcode} +Many of these list methods change, or mutate, the list, eg append +adds an element to the list\texttt{: extend} extends the list with +a sequence of elements, \texttt{sort} sorts the list in place, \texttt{reverse} +reverses it in place, \texttt{pop} takes an element off the list and +returns it. + +We've seen a couple of examples of creating a list above -- let's +look at some more using list methods + +\begin{lyxcode} +>\,{}>\,{}>~x~=~{[}]~~~~~~~~~~~~~~~~~~~\textcolor{blue}{\#~create~the~empty~list} + +>\,{}>\,{}>~x.append(1)~~~~~~~~~~~~~~\textcolor{blue}{\#~add~the~integer~one~to~it} + +>\,{}>\,{}>~x.extend({[}'hi',~'mom'])~~\textcolor{blue}{\#~append~two~strings~to~it} + +>\,{}>\,{}>~x + +{[}1,~'hi',~'mom'] + +>\,{}>\,{}>~x.reverse()~~~~~~~~~~~~~~\textcolor{blue}{\#~reverse~the~list,~in~place} + +>\,{}>\,{}>~x + +{[}'mom',~'hi',~1] + +>\,{}>\,{}>~len(x) + +3 +\end{lyxcode} +We mentioned list comprehensions in the last section when discussing +string methods. List comprehensions are a way of creating a list +using a for loop in a single line of python. Let's create a list of +the perfect cubes from 1 to 10, first with a for loop and then with +a list comprehension. The list comprehension code will not only be +shorter and more elegant, it can be much faster (the dots are the +indentation block indicator from the python shell and should not be +typed) + +\begin{lyxcode} +\textcolor{blue}{\#~a~list~of~perfect~cubes~using~a~for-loop} + +>\,{}>\,{}>~cubes~=~{[}] + +>\,{}>\,{}>~for~i~in~range(1,10): + +...~~~~~cubes.append(i{*}{*}3) + +...~ + +>\,{}>\,{}>~cubes + +{[}1,~8,~27,~64,~125,~216,~343,~512,~729] + + + +\textcolor{blue}{\#~functionally~equivalent~code~using~list~comprehensions} + +>\,{}>\,{}>~cubes~=~{[}i{*}{*}3~for~i~in~range(1,10)] + +>\,{}>\,{}>~cubes + +{[}1,~8,~27,~64,~125,~216,~343,~512,~729] +\end{lyxcode} +The list comprehension code is faster because it all happens at the +C level. In the simple for-loop version, the python expression which +appends the cube of \texttt{i} has to be evaluated by the python interpreter +for each element of the loop. In the list comprehension example, the +single line is parsed once and executed at the C level. The difference +in speed can be considerable, and the list comprehension example is +shorter and more elegant to boot. + +The remaining essential built-in data strucuture in python is the +dictionary, which is an associative array that maps arbitrary immutable +objects to arbitrary objects. int, long, float, string and tuple are +all immutable and can be used as keys; to a dictionary list and dict +are mutable and cannot. A dictionary takes one kind of object as the +key, and this key points to another object which is the value. In +a contrived but easy to comprehent examples, one might map names to +ages + +\begin{lyxcode} +>\,{}>\,{}>~ages~=~\{\}~~~~~~~~~~~~\textcolor{blue}{\#~create~an~empty~dict} + +>\,{}>\,{}>~ages{[}'john']~=~36 + +>\,{}>\,{}>~ages{[}'fernando']~=~33 + +>\,{}>\,{}>~ages~~~~~~~~~~~~~~~~~\textcolor{blue}{\#~view~the~whole~dict} + +\{'john':~36,~'fernando':~33\} + +>\,{}>\,{}>~ages{[}'john'] + +36 + +>\,{}>\,{}>~ages{[}'john']~=~37~~~~\textcolor{blue}{\#~reassign~john's~age} + +>\,{}>\,{}>~ages{[}'john'] + +37 +\end{lyxcode} +Dictionary lookup is very fast; Tim Peter's once joked that any python +program which uses a dictionary is automatically 10 times faster than +any C program, which is of course false, but makes two worthy points +in jest: dictionary lookup is fast, and dictionaries can be used for +important optimizations, eg, creating a cache of frequently used values. +As a simple eaxample, suppose you needed to compute the product of +two numbers between 1 and 100 in an inner loop -- you could use a +dictionary to cache the cube of all odd of numbers < 100; if you were +inteterested in all numbers, you might simply use a list to store +the cached cubes -- I am cacheing only the odd numbers to show you +how a dictionary can be used to represent a sparse data structure + +\begin{lyxcode} + + +>\,{}>\,{}>~cubes~=~dict({[}~(~i,~i{*}{*}3~)~for~i~in~range(1,100,2)]) + +>\,{}>\,{}>~cubes{[}5] + +125 +\end{lyxcode} +The last example is syntactically a bit challenging, but bears careful +study. We are initializing a dictionary with a list comprehension. + The list comprehension is made up of length 2 tuples \texttt{( i, +i{*}{*}3} ). When a dictionary is initialized with a sequence of +length 2 tuples, it assumes the first element of the tuple \texttt{i} +is the \textit{key} and the second element i{*}{*}3is the \textit{value}. + Thus we have a lookup table from odd integers to to cube. Creating +dictionaries from list comprehensions as in this example is something +that hard-core python programmers do almost every day, and you should +too. + +\begin{xca} +Create a lookup table of the product of all pairs of numbers less +than 100. The key will be a tuple of the two numbers \texttt{(i,j)} +and the value will be the product. Hint: you can loop over multiple +ranges in a list comprehension, eg \texttt{{[} something for i in +range(Ni) for j in range(Nj)]} +\end{xca} + +\section[Zen]{The Zen of Python} + +\begin{xca} +\texttt{>\,{}>\,{}> import this} +\end{xca} + +\section{Functions and classes} + +You can define functions just about anywhere in python code. The typical +function definition takes zero or more arguments, zero or more keyword +arguments, and is followed by a documentation string and the function +definition, optionally returing a value. Here is a function to compute +the hypoteneuse of a right triange + +\begin{lyxcode} +def~hypot(base,~height): + +~~~'compute~the~hypoteneuse~of~a~right~triangle' + +~~~import~math + +~~~return~math.sqrt(base{*}{*}2~+~height{*}{*}2) +\end{lyxcode} +As in the case of the for-loop, leading white space is significant +and is used to delimt the start and end of the function. In the example +below, x = 1 is not in the function, because it is not indented + +\begin{lyxcode} +def~growone(l): + +~~~'append~1~to~a~list~l' + +~~~l.append(1) + +x~=~1 +\end{lyxcode} +Note that this function does not return anything, because the append +method modifies the list that was passed in. You should be careful +when designing functions that have side effects such as modifying +the structures that are passed in; they should be named and documented +in such a way that these side effects are clear. + +Python is pretty flexible with functions: you can define functions +within function definitions (just be mindful of your indentation), +you can attach attributes to functions (like other objects), you can +pass functions as arguments to other functions. A function keyword +argument defines a default value for a function that can be overridden. +Below is an example which provides a normalize keyword argument. The +default argument is \texttt{normalize=None}; the value None is a standard +python idiom which usually means either do the default thing or do +nothing. If \texttt{normalize} is not \texttt{None}, we assume it +is a function that can be called to normalize our data + +\begin{lyxcode} +def~psd(x,~normalize=None): + +~~~~'compute~the~power~spectral~density~of~x' + +~~~~if~normalize~is~not~None:~x~=~normalize(x) + +~~~\textcolor{blue}{~\#~compute~the~power~spectra~of~x~and~return~it} +\end{lyxcode} +This function could be called with or without a \texttt{normalize} +keyword argument, since if the argument is not passed, the default +of \texttt{None} is used and no normalization is done. + +\begin{lyxcode} + + +\textcolor{blue}{\#~no~normalize~argument;~do~the~default~thing} + +>\,{}>\,{}>~psd(x)~~~ + + + +\textcolor{blue}{\#~define~a~custom~normalize~function~unitstd~as~pass~it} + +\textcolor{blue}{\#~to~psd} + +>\,{}>\,{}>~def~unitstd(x):~return~x/std(x) + +>\,{}>\,{}>~psd(x,~normalize=unitstd) + + +\end{lyxcode} +In Section\ref{sec:into_calculator} we noticed that complex objects +have the real and imag data attributes, and the conjugate method. +An object is an instance of a class that defines it, and in python +you can easily define your own classes. In that section, we emphasized +that one of the important features of a classes/objects is that they +carry around their data and methods in a single bundle. Let's look +at the mechnics of defining classes, and creating instances (a.k.a. +objects) of these classes. Classes have a special double underscore +method \_\_init\_\_ that is used as the function to initialize the +class. For this example, we'll continue with the normalize theme above, +but in this case the normalization requires some data parameters. +This example arises when you want to normalize an image which may +range over 0-255 (8 bit image) or from 0-65535 (16 bit image) to the +0-1 interval. For 16 bit images, you would normally divide everything +by 65525, but you might want to configure this to a smaller number +if your data doesn't use the whole intensity range to enhance contrast. +For simplicitly, let's suppose our normalize class is only interested +in the pixel maximum, and will divide all the data by that value. + +\begin{lyxcode} +from~\_\_future\_\_~import~division~~\textcolor{blue}{\#~make~sure~we~do~float~division} + +class~Normalize: + +~~~~\char`\"{}\char`\"{}\char`\"{} + +~~~~A~class~to~normalize~data~by~dividing~it~by~a~maximum~value + +~~~~\char`\"{}\char`\"{}\char`\"{} + +~~~~def~\_\_init\_\_(self,~maxval): + +~~~~~~~~'maxval~will~be~mapped~to~1' + +~~~~~~~~self.maxval~=~maxval + +~~~~def~\_\_call\_\_(self,~data): + +~~~~~~~~'do~the~normalization' + +~~~~~~~~\textcolor{blue}{\#~in~real~life~you~would~also~want~to~clip~all~values~of} + +~\textcolor{blue}{~~~~~~~\#~data>maxval~so~that~the~returned~value~will~be~in~the~unit} + +~\textcolor{blue}{~~~~~~~\#~interval} + +~~~~~~~~return~data/self.maxval +\end{lyxcode} +The triple quoted string following the definition of class Normalize +is the class documentation stringd, and it will bre shown to the user +when they do \texttt{help(Normalize)}. A commonly used convention +is to name classes with \textit{UpperCase}, but this is not required. +self is a special variable that a class can use to refer to its own +data and methods, and must be the first argument to all the class +methods. The \texttt{\_\_init\_\_} method stores the normalization +value maxval as a class attribute in \texttt{self.maxval}, and this +value can later be reused by other class methods (as it is in \texttt{\_\_call\_\_}) +and it can be altered by the user of the class, as will illustrate +below. The \texttt{\_\_call\_\_} method is another piece of python +double underscore magic, it allows class instances to be used as \textit{functions}, +eg you can call them just like you can call any function. OK, now +let's see how you could use this. + +The first line use used to create an \textit{instance} of the \textit{class} +\texttt{Normalize}, and the special method \texttt{\_\_init\_\_} is +implicitly called. The second line implicitly calls the special \texttt{\_\_call\_\_}method + +\begin{lyxcode} +>\,{}>\,{}>~norm~=~Normalize(65356)~\textcolor{blue}{\#~good~for~16~bit~images} + +>\,{}>\,{}>~norm(255)~~~~~~~~~~~~~~~\textcolor{blue}{\#~call~this~function} + +0.0039017075708427688 + + + +\textcolor{blue}{\#~We~can~reset~the~maxval~attribute,~and~the~call~method~} + +\textcolor{blue}{\#~is~automagically~updated} + +>\,{}>\,{}>~norm.maxval~=~255~~~~~~~\textcolor{blue}{\#~reset~the~maxval} + +>\,{}>\,{}>~norm(255)~~~~~~~~~~~~~~~\textcolor{blue}{\#~and~call~it~again} + +1.0 + + + +\textcolor{blue}{\#~We~can~pass~the~norm~instance~to~the~psd~function~we~defined~above,~which~} + +\textcolor{blue}{\#~is~expecting~a~function} + +>\,{}>\,{}>~pdf(X,~normalize=norm)~~~~~~~~~~~~ +\end{lyxcode} +\begin{xca} +Pretend that \texttt{complex} were not built-in to the python core, +and write your own complex class \texttt{MyComplex}. Provide \texttt{real} +and \texttt{imag} attributes and the \texttt{conjugate} method. Define +\texttt{\_\_abs\_\_}, \texttt{\_\_mul\_\_} and \texttt{\_\_add\_\_} +to implement the absolute value of complex numbers, multiplication +of complex numbers and addition of complex numbers. See the API definition +of the python number protocol; although this is written for C programmers, +it contains information about the required function call signatures +for each of the double underscore methods that define the number protocol +in python; where they use \texttt{o1} on that page, you would use +\texttt{self} in python, and where they use \texttt{o2} you might +use \texttt{other} in python.% +\footnote{http://www.python.org/doc/current/api/number.html% +} To get you started, I'll show you what the \texttt{\_\_add\_\_} method +should look like +\end{xca} +\begin{lyxcode} +\textcolor{blue}{\#~An~example~double~underscore~method~required~in~your~MyComplex} + +\textcolor{blue}{\#~implementation} + +def~\_\_add\_\_(self,~other): + +~~~~'add~self~to~other~and~return~a~new~MyComplex~instance' + +~~~~r~=~self.real~+~other.real + +~~~~i~=~self.imag~+~other.imag + +~~~~return~MyComplex(r,i) + + + +\textcolor{blue}{\#~When~you~are~finished,~test~your~implementation~with~} + +>\,{}>\,{}>~x~=~MyComplex(2,3) + +>\,{}>\,{}>~y~=~MyComplex(0,1) + +>\,{}>\,{}>~x.real + +2.0 + +>\,{}>\,{}>~y.imag + +1.0 + +>\,{}>\,{}>~x.conjugate() + +(2-3j) + +>\,{}>\,{}>~x+y + +(2+4j) + +>\,{}>\,{}>~x{*}y + +(-3+2j) + +>\,{}>\,{}>~abs(x{*}y) + +3.6055512754639891 + + +\end{lyxcode} + +\section[Files]{Files and file like objects} + +Working with files is one of the most common and important things +we do in scientific computing because that is usually where the data +lives. In Section\ref{sec:intro_string}, we went through the mechanics +of automatically building file names like + +\begin{lyxcode} +data/myexp01.dat + +data/myexp02.dat + +data/myexp03.dat + +data/myexp04.dat +\end{lyxcode} +but we didn't actually do anything with these files. Here we'll show +how to read in the data and do something with it. Python makes working +with files easy and dare I say fun. The test data set lives in \texttt{data/family.csv} +and is a standard comma separated value file that contains information +about my family: first name, last name, age, height in cm, weight +in kg and birthdate. We'll open this file and parse it -- note that +python has a standard module for parsing CSV files that is much more +sophisticated than what I am doing here. Nevertheless, it serves as +an easy to understand example that is close enough to real life that +it is worth doing. Here is what the data file looks like + +\begin{lyxcode} +First,Last,Age,Weight,Height,Birthday + +John,Hunter,36,175,180,1968-03-05 + +Miriam,Sierig,33,135,177,1971-05-04 + +Rahel,Hunter,7,55,134,1998-02-25 + +Ava,Hunter,3,45,121,2001-04-26 + +Clara,Hunter,0,15,55,2004-10-02 +\end{lyxcode} +Here is the code to parse that file + +\begin{lyxcode} +\textcolor{blue}{\#~open~the~file~for~reading} + +fh~=~file('../data/family.csv',~'r') + +\textcolor{blue}{\#~slurp~the~header,~splitting~on~the~comma} + +headers~=~fh.readline().split(',') + +\textcolor{blue}{\#~now~loop~over~the~remaining~lines~in~the~file~and~parse~them} + +for~line~in~fh: + +~~~~\textcolor{blue}{\#~remove~any~leading~or~trailing~white~space} + +~~~~line~=~line.strip() + +~~~~\textcolor{blue}{\#~split~the~line~on~the~comma~into~separate~variables} + +~~~~first,~last,~age,~weight,~height,~dob~=~line.split(',') + +~~~~\textcolor{blue}{\#~convert~some~of~these~strings~to~floats} + +~~~~age,~weight,~height~=~{[}float(val)~for~val~in~(age,~weight,~height)] + +~~~~print~first,~last,~age,~weight,~height,~dob +\end{lyxcode} +This example illustrates several interesting things. The syntax for +opening a file is \texttt{file(filename, mode)} and the \texttt{mode} +is a string like \texttt{'r'} or \texttt{'w'} that determines whether +you are opening in read or write mode. You can also read and write +binary files with \texttt{'rb'} and \texttt{'wb'}. There are more +options and you should do \texttt{help(file)} to learn about them. +We then use the file \texttt{readline} method to read in the first +line of the file. This returns a string (the line of text) and we +call the string method \texttt{split(',')} to split that string wherever +it sees a comma, and this returns a list of strings which are the +headers + +\begin{lyxcode} +>\,{}>\,{}>~headers + +{[}'First',~'Last',~'Age',~'Weight',~'Height',~'Birthday\textbackslash{}n'] +\end{lyxcode} +The new line character \texttt{'\textbackslash{}n'} at the end of +\texttt{'Birthday\textbackslash{}n'} indicates we forgot to strip +the string of whitespace. To fix that, we should have done + +\begin{lyxcode} +>\,{}>\,{}>~headers~=~fh.readline().strip().split(',') + +>\,{}>\,{}>~headers + +{[}'First',~'Last',~'Age',~'Weight',~'Height',~'Birthday']~ +\end{lyxcode} +Notice how this works like a pipeline: \texttt{fh.readline} returns +a line of text as a string; we call the string method \texttt{strip} +which returns a string with all white space (spaces, tabs, newlines) +removed from the left and right; we then call the \texttt{split} method +on this stripped string to split it into a list of strings. + +Next we start to loop over the file -- this is a nice feature of python +file handles, you can iterate over them as a sequence. We've learned +our lesson about trailing newlines, so we first strip the line with +\texttt{line = line.strip()}. The rest is string processing, splitting +the line on a comma as we did for the head... [truncated message content] |
From: <fer...@us...> - 2007-12-03 08:22:18
|
Revision: 4556 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4556&view=rev Author: fer_perez Date: 2007-12-03 00:22:16 -0800 (Mon, 03 Dec 2007) Log Message: ----------- Reorganize a bit. Waste 2 hours dealing with utf-8 problems with latex... Modified Paths: -------------- trunk/py4science/workbook/intro_to_python.tex trunk/py4science/workbook/ipython_tut.tex trunk/py4science/workbook/main.tex trunk/py4science/workbook/matplotlib_tut.tex trunk/py4science/workbook/qsort.tex trunk/py4science/workbook/why_python.tex trunk/py4science/workbook/wrapping.tex Added Paths: ----------- trunk/py4science/workbook/introduction.tex Modified: trunk/py4science/workbook/intro_to_python.tex =================================================================== --- trunk/py4science/workbook/intro_to_python.tex 2007-12-03 04:56:57 UTC (rev 4555) +++ trunk/py4science/workbook/intro_to_python.tex 2007-12-03 08:22:16 UTC (rev 4556) @@ -734,13 +734,12 @@ \end{lyxcode} -There are two string methods, \texttt{split} and \texttt{join}, that -arise frequenctly in Numeric processing, specifically in the context -of processing data files that have comma, tab, or space separated -numbers in them. \texttt{split} takes a single string, and splits -it on the indicated character to a sequence of strings. This is useful -to take a single line of space or comma separated values and split -them into individual numbers +There are two string methods, \texttt{split} and \texttt{join}, that arise +frequenctly in numerical processing, specifically in the context of processing +data files that have comma, tab, or space separated numbers in +them. \texttt{split} takes a single string, and splits it on the indicated +character to a sequence of strings. This is useful to take a single line of +space or comma separated values and split them into individual numbers \begin{lyxcode} \textcolor{blue}{\#~s~is~a~single~string~and~we~split~it~into~a~list~of~strings} Added: trunk/py4science/workbook/introduction.tex =================================================================== --- trunk/py4science/workbook/introduction.tex (rev 0) +++ trunk/py4science/workbook/introduction.tex 2007-12-03 08:22:16 UTC (rev 4556) @@ -0,0 +1,41 @@ +\chapter*{Introduction} + +This book is currently a work in progress, and ultimately we hope it will +evolve into an open, community-driven document developed in tandem with the +underlying tools, by the same scientists who have written them. + +The book is aimed at practicing scientists, students and in general anyone who +is looking for a modern, high-level and open platform for scientific +computing. The Python language is in the opinion of the authors the leading +candidate today for this role. + +The book is broadly divided in two parts: the first is a general discussion of +the Python tools used for scientific work, with an explanatory approach. It is +not a complete Python reference book, as there are many excellent resources for +the base language, both in print and online. But beyond the basic language and +the NumPy book, it should serve as reasonably self-contained description of the +core libraries for common numerical tasks. + +The second part is meant as a practical workbook, and the build system used to +produce the document will in the future allow users to create custom versions +with only the examples that they deem practical for any given audience. This +workbook approach grew out of a sequence of workshops taught by the editors at +a number of research institutions and universities, and we've found it to be +extremely convenient. + +The workbook is structured as a collection of problems, meant to be solved by +the reader as programming exercises. The entire book can be compiled in one of +two forms: either with the examples in `skeleton' form, where they contain +incomplete code meant to be filled in, or with the full solution code. This +should enable instructors to hand out the skeleton workbook at courses and +workshops, with the solutions being available as well for after the teaching is +over. + +We hope that the community will continue to contribute many more examples, so +that ultimately the projects allows for the easy construction of custom +workbooks tailored to the needs of different audiences. + +\begin{flushright} +John D. Hunter and Fernando P\xE9rez, editors. + +\end{flushright} Modified: trunk/py4science/workbook/ipython_tut.tex =================================================================== --- trunk/py4science/workbook/ipython_tut.tex 2007-12-03 04:56:57 UTC (rev 4555) +++ trunk/py4science/workbook/ipython_tut.tex 2007-12-03 08:22:16 UTC (rev 4556) @@ -1020,8 +1020,6 @@ \item \texttt{\$HOME/.ipython/ipythonrc}: load basic things you always want. \item \texttt{\$HOME/.ipython/ipythonrc-math}: load (1) and basic math-related modules. -\item \texttt{\$HOME/.ipython/ipythonrc-numeric}: load (1) and Numeric and -plotting modules. \end{enumerate} Since it is possible to create an endless loop by having circular file inclusions, IPython will stop if it reaches 15 recursive inclusions. Modified: trunk/py4science/workbook/main.tex =================================================================== --- trunk/py4science/workbook/main.tex 2007-12-03 04:56:57 UTC (rev 4555) +++ trunk/py4science/workbook/main.tex 2007-12-03 08:22:16 UTC (rev 4556) @@ -45,6 +45,9 @@ \usepackage{babel} \makeatother + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Begin main document - front matter + \begin{document} \title{ \vspace{3cm} @@ -67,10 +70,15 @@ \tableofcontents{} -\part{Discussion} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Main document - body +\input{introduction.tex} + +\part{General Discussion} + % In this part, each tex file is a chapter by itself, since it is more or less % meant to be used in whole. + \input{why_python.tex} \input{intro_to_python.tex} @@ -83,7 +91,8 @@ -\part{Workbook} +\part{Workbook\\ +A Problem Collection} % This part specifies the chapter declarations in the main file, while the % chapters are made of individual TeX files which themselves should be written @@ -91,26 +100,19 @@ % few closely related topics, and to allow users to build them with as many or % as few actual sections as desired for a given audience. -\chapter{Introduction} - +\chapter{Introduction to the workbook} \input{intro.tex} -\chapter{Simple non-numerical problems} - +\chapter{Simple non-numerical Problems} \input{qsort.tex} - \input{wordfreqs.tex} \chapter{Working with files, the internet, and numpy arrays} - \input{files_etc.tex} -\chapter{Elementary Numerics} - +\chapter{Elementary numerics} \input{wallis_pi.tex} - \input{trapezoid.tex} - \input{quad_newton.tex} \chapter{Linear algebra} @@ -122,7 +124,7 @@ \input{convolution.tex} \input{fft_imdenoise.tex} -\chapter{Dynamical Systems} +\chapter{Dynamical systems} \input{intro_dynsys.tex} \input{lotka_volterra.tex} @@ -131,9 +133,11 @@ \input{stats_descriptives.tex} \input{stats_distributions.tex} -\chapter{Plotting on Maps} +\chapter{Plotting on maps} \input{basemap.tex} +%%% Bibliography section + \bibliographystyle{plain} \bibliography{python,python2} Modified: trunk/py4science/workbook/matplotlib_tut.tex =================================================================== --- trunk/py4science/workbook/matplotlib_tut.tex 2007-12-03 04:56:57 UTC (rev 4555) +++ trunk/py4science/workbook/matplotlib_tut.tex 2007-12-03 08:22:16 UTC (rev 4556) @@ -6,17 +6,16 @@ matplotlib is a library for making 2D plots of arrays in python.% \footnote{This short guide is not meant as a complete guide or tutorial. There -is a more comprehensive user's guide and tutorial on the matplotlib -web-site at http://matplotlib.sf.net.% -} Although it has its origins in emulating the Matlab graphics commands, -it does not require matlab, and has a pure, object oriented API. Although -matplotlib is written primarily in python, it makes heavy use of Numeric/numarray -and other extension code to provide good performance even for large -arrays. matplotlib is designed with the philosophy that you should -be able to create simple plots with just a few commands, or just one! -If you want to see a histogram of your data, you shouldn't need to -instantiate objects, call methods, set properties, and so on; it should -just work. + is a more comprehensive user's guide and tutorial on the matplotlib web-site + at http://matplotlib.sf.net.% +} Although it has its origins in emulating the Matlab graphics commands, it +does not require matlab, and has a pure, object oriented API. Although +matplotlib is written primarily in python, it makes heavy use of NumPy and +other extension code to provide good performance even for large +arrays. matplotlib is designed with the philosophy that you should be able to +create simple plots with just a few commands, or just one! If you want to see +a histogram of your data, you shouldn't need to instantiate objects, call +methods, set properties, and so on; it should just work. The matplotlib code is divided into three parts: the \textit{pylab interface} is the set of functions provided by the \texttt{pylab} @@ -355,68 +354,7 @@ In~{[}25]:~set(t,~fontsize=20,~color='darkslategray')~ \end{lyxcode} -\section[numerix]{A common interface to Numeric and numarray} -Currently the python computing community is in a state of having too -many array pacakges, none of which satisfy everyone's needs. Although -Numeric and numarray both provide the same set of core functions, -they are organized differently, and matplotlib provides a compatibility -later so you can use either one in your matplotlib scripts without -having to change your code. - -Several numarray/Numeric developers are codevelopers of matplotlib, -giving matplotlib full Numeric and numarray compatibility, thanks -in large part to Todd Miller's \texttt{matplotlib.numerix} module -and the numarray compatibility layer for extension code. This allows -you to choose between Numeric or numarray at the prompt or in a config -file. Thus when you do - -\begin{lyxcode} -\textcolor{blue}{\#~import~matplotlib~and~all~the~numerix~functions} - -from~pylab~import~{*} -\end{lyxcode} -you'll not only get all the matplotlib pylab interface commands, but -most of the Numeric or numarray package as well (depending on your -\texttt{numerix} setting). All of the array creation and manipulation -functions are imported, such as \texttt{array}, \texttt{arange}, \texttt{take}, -\texttt{where}, etc, as are the external module functions which reside -in \texttt{mlab, fft} and \texttt{linear\_algebra.} - -Even if you don't want to import all of the numerix symbols from the -pytlab interface, to make your matplotlib scripts as portable as possible -with respect to your choice of array packages, it is advised not to -explicitly import Numeric or numarray. Rather, you should use \texttt{matplotlib.numerix} -where possible, either by using the functions imported by \texttt{pylab}, -or by explicitly importing the \texttt{numerix} module, as in - -\begin{lyxcode} -\textcolor{blue}{\#~create~a~numerix~namespace} - -import~matplotlib.numerix~as~n - -from~matplotlib.numerix.mlab~import~mean - -x~=~n.arange(100) - -y~=~n.take(x,~range(10,20)) - -print~mean(y) -\end{lyxcode} -For the remainder of this manual, the term \texttt{numerix} is used -to mean either the Numeric or numarray package. To select numarray -or Numeric from the prompt, run your matplotlib script with - -\begin{lyxcode} -~~>~python~myscript.py~-{}-numarray~~\textcolor{blue}{\#~use~numarray} - -~~>~python~myscript.py~-{}-Numeric~~~\textcolor{blue}{\#~use~Numeric} -\end{lyxcode} -Typically, however, users will choose one or the other and make this -setting in their rc file using either \texttt{numerix : Numeric} or -\texttt{numerix : numarray}. - - \section[matplotlibrc]{Customizing the default behavior with the rc file} matplotlib is designed to work in a variety of settings: some people @@ -436,13 +374,13 @@ \begin{lyxcode} C:\textbackslash{}Python23\textbackslash{}share\textbackslash{}matplotlib\textbackslash{}.matplotlibrc~\textcolor{blue}{\#~windows}~/usr/share/matplotlib/.matplotlibrc~~\textcolor{blue}{\#~linux} \end{lyxcode} -By default, the installer will overwrite the existing file in the -install path, so if you want to preserve your's, please move it to -your \texttt{HOME} dir and set the environment variable if necessary. -In the rc file, you can set your backend , your numerix setting , -whether you'll be working interactively and default values for most -of the figure properties. +By default, the installer will overwrite the existing file in the install path, +so if you want to preserve yours, please move it to your \texttt{HOME} dir and +set the environment variable if necessary. In the rc file, you can set your +backend, whether you'll be working interactively and default values for most of +the figure properties. + In the RC file, blank lines, or lines starting with a comment symbol, are ignored, as are trailing comments. Other lines must have the format Modified: trunk/py4science/workbook/qsort.tex =================================================================== --- trunk/py4science/workbook/qsort.tex 2007-12-03 04:56:57 UTC (rev 4555) +++ trunk/py4science/workbook/qsort.tex 2007-12-03 08:22:16 UTC (rev 4556) @@ -30,12 +30,16 @@ \subsection*{Hints} \begin{itemize} -\item Python has no particular syntactic requirements for implementing recursion, -but it does have a maximum recursion depth. This value can be queried -via the function \texttt{sys.getrecursionlimit()}, and it can be changed -with \texttt{sys.setrecursionlimit(new\_value)}. + +\item Python has no particular syntactic requirements for implementing + recursion, but it does have a maximum recursion depth. This value can be + queried via the function \texttt{sys.getrecursionlimit()}, and it can be + changed with \texttt{sys.setrecursionlimit(new\_value)}. + \item Like in all recursive problems, don't forget to implement an exit -condition! + condition! + \item If \texttt{L} is a list, the call \texttt{len(L)} provides its length. + \end{itemize} Modified: trunk/py4science/workbook/why_python.tex =================================================================== --- trunk/py4science/workbook/why_python.tex 2007-12-03 04:56:57 UTC (rev 4555) +++ trunk/py4science/workbook/why_python.tex 2007-12-03 08:22:16 UTC (rev 4556) @@ -43,7 +43,7 @@ group at the Scripps Research Institute uses Python extensively to build a suite of applications for molecular visualization and exploration of drug/molecule interactions using virtual reality and 3D printing -technology\cite{Sanner2005a,Sanner2005b}. Engineers at Google use +technology \cite{Sanner2005a,Sanner2005b}. Engineers at Google use Python in automation, control and tuning of their computational grid, and use \texttt{SWIG} generated Python of their in-house C++ libraries in virtually all facets of their work \cite{Beazley1998,Stein2005}. @@ -116,7 +116,7 @@ Complementing these built-in features, Python is also readily extensible, giving it a wealth of libraries for scientific computing that have been in development for many years \cite{Dubois1996b,Dubois1996c}. -\texttt{Numeric Python} supports large array manipulations, math, +\texttt{NumPy} supports large array manipulations, math, optimized linear algebra, efficient Fourier transforms and random numbers. \texttt{scipy} is a collection of Python wrappers of high performance FORTRAN code (eg LAPACK, ODEPACK) for numerical analysis @@ -239,8 +239,8 @@ 256x256 pixels, and each pixel is a 2 byte integer. We read this into a string using python's \texttt{file} function -- the 'rb' flag says to open the file in \texttt{read/binary} mode. We can then use the -numerix \texttt{fromstring} method to convert this to an array, passing -the type of the data (\texttt{Int16}) as an argument. We reshape the +numpy \texttt{fromstring} method to convert this to an array, passing +the type of the data (\texttt{int16}) as an argument. We reshape the array by changing the array shape attribute to 256 by 256, and pass this off to the matplotlib pylab command \texttt{imshow} for plotting. matplotlib has a number of colormaps, and the default one is jet; @@ -277,7 +277,7 @@ \end{lyxcode} creates a 20x30 array of zeros (default integer type; details on how to specify other types will follow). Note that the dimensions ({}``shape'' -in numarray parlance) are specified by giving the dimensions as a +in numpy parlance) are specified by giving the dimensions as a comma-separated list within parentheses. The parentheses aren't necessary for a single dimension. As an aside, the parentheses used this way are being used to specify a Python tuple; more will be said about @@ -333,36 +333,35 @@ \subsection{Array numeric types} -numarray supports all standard numeric types. The default integer +numpy supports all standard numeric types. The default integer matches what Python uses for integers, usually 32 bit integers or -what numarray calls \texttt{Int32}. The same is true for floats, i.e., -generally 64-bit doubles called \texttt{Float64} in numarray. The -default complex type is \texttt{Complex64}. Many of the functions +what numpy calls \texttt{int32}. The same is true for floats, i.e., +generally 64-bit doubles called \texttt{float64} in numpy. The +default complex type is \texttt{complex64}. Many of the functions accept a type argument. For example \begin{lyxcode} ->\,{}>\,{}>~zeros(3,~Int8)~\#~Signed~byte +>\,{}>\,{}>~zeros(3,~int8)~\#~Signed~byte ->\,{}>\,{}>~zeros(3,~type=UInt8)~\#~Unsigned~byte +>\,{}>\,{}>~zeros(3,~dtype=uint8)~\#~Unsigned~byte ->\,{}>\,{}>~array({[}2,3],~type=Float32) +>\,{}>\,{}>~array({[}2,3],~dtype=float32) ->\,{}>\,{}>~arange(4,~type=Complex64) +>\,{}>\,{}>~arange(4,~dtype=complex64) \end{lyxcode} -The possible types are \texttt{Int8, UInt8, Int16, UInt16, Int32, -UInt32, Int64, UInt64, Float32, Float64, Complex32, Complex64.} To -find out the type of an array use the .type() method. E.g., +The possible types are \texttt{int8, uint8, int16, uint16, int32, +uint32, int64, uint64, float32, float64, complex32, complex64.} To +find out the type of an array use the .dtype() method. E.g., \begin{lyxcode} ->\,{}>\,{}>~arr.type() - -Float32 +>\,{}>\,{}>~arr.dtype() +dtype('float32') \end{lyxcode} To convert an array to a different type use the \texttt{astype()} method, e.g, \begin{lyxcode} ->\,{}>\,{}>~a~=~arr.astype(Float64) +>\,{}>\,{}>~a~=~arr.astype(float64) \end{lyxcode} \subsection{Printing arrays} @@ -537,7 +536,7 @@ All of the indexing tools available for 1-D arrays apply to \emph{n}-dimensional arrays as well (though combining index arrays with slices is not currently permitted). To understand all the indexing options in their full detail, -read sections 4.6, 4.7 and 6 of the numarray manual. +read sections 4.6, 4.7 and 6 of the numpy manual. \subsection{Compatibility of dimensions} @@ -711,7 +710,7 @@ \subsection{Array functions} There are many array utility functions. The following lists the more -useful ones with a one line description. See the numarray manual for +useful ones with a one line description. See the numpy manual for details on how they are used. Arguments shown with argument=value indicate what the default value is if called without a value for that argument. @@ -858,9 +857,7 @@ \item [{\texttt{\emph{a}}\texttt{.repeat}\textmd{(a,repeats,axis=0):}}]~ \item [{\texttt{\emph{a}}\texttt{.resize}\textmd{(shape):}}]~ \item [{\texttt{\emph{a}}\texttt{.size}\textmd{():}}] same as nelements -\item [{\texttt{\emph{a}}\texttt{.type}\textmd{():}}] returns type of array -\item [{\texttt{\emph{a}}\texttt{.typecode}\textmd{():}}] returns corresponding -typecode character used by Numeric +\item [{\texttt{\emph{a}}\texttt{.dtype}\textmd{():}}] returns type of array \item [{\texttt{\emph{a}}\texttt{.tofile}\textmd{(}\textmd{\emph{file}}\textmd{):}}] write binary data to file \item [{\texttt{\emph{a}}\texttt{.tolist}\textmd{():}}] convert data to Modified: trunk/py4science/workbook/wrapping.tex =================================================================== --- trunk/py4science/workbook/wrapping.tex 2007-12-03 04:56:57 UTC (rev 4555) +++ trunk/py4science/workbook/wrapping.tex 2007-12-03 08:22:16 UTC (rev 4556) @@ -125,8 +125,8 @@ causes f2py to keep cached copies of the scratch areas, so no unnecessary mallocs should be triggered. -Since f2py relies on Numeric arrays, all dimensions can be determined -from the arrays themselves and it is not necessary to pass them explicitly. +Since f2py relies on NumPy arrays, all dimensions can be determined from the +arrays themselves and it is not necessary to pass them explicitly. With all this, the resulting f2py-generated docstring becomes: @@ -232,7 +232,7 @@ \subsection{Passing offset arrays to Fortran routines} It is possible to pass offset arrays (like pointers to the middle -of other arrays) by using Numeric's slice notation. +of other arrays) by using NumPy's slice notation. The print\_dvec function below simply prints its argument as \char`\"{}print{*},'x',x\char`\"{}. We show some examples of how it behaves with both 1 and 2-d arrays: @@ -339,7 +339,7 @@ \subsection{On matrix ordering and in-memory copies} -Numeric (which f2py relies on) is C-based, and therefore its arrays +NumPy (which f2py relies on) is C-based, and therefore its arrays are stored in row-major order. Fortran stores its arrays in column-major order. This means that copying issues must be dealt with. Below we reproduce some comments from Pearu on this topic given in the f2py @@ -348,7 +348,7 @@ \begin{quote} To avoid copying, you should create array that has internally Fortran data ordering. This is achived, for example, by reading/creating your -data in Fortran ordering to Numeric array and then doing Numeric.transpose +data in Fortran ordering to NumPy array and then doing numpy.transpose on that. Every f2py generated extension module provides also function has\_column\_major\_storage @@ -360,7 +360,7 @@ Also note that copying done by f2py generated interface is carried out in C on the raw data and therefore it is extremely fast compared -to if you would make a copy in Python, even when using Numeric. Tests +to if you would make a copy in Python, even when using NumPy. Tests with say 1000x1000 matrices show that there is no noticable performance hit when copying is carried out, in fact, sometimes making a copy may speed up things a bit -- I was quite surprised about that myself. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fer...@us...> - 2007-12-04 06:24:10
|
Revision: 4573 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4573&view=rev Author: fer_perez Date: 2007-12-03 22:24:07 -0800 (Mon, 03 Dec 2007) Log Message: ----------- Get skeleton to build correctly, rewrite makefile to do as few latex runs as possible Modified Paths: -------------- trunk/py4science/workbook/Makefile Added Paths: ----------- trunk/py4science/workbook/problems_skel/basemap1.py trunk/py4science/workbook/problems_skel/basemap2.py trunk/py4science/workbook/problems_skel/basemap3.py trunk/py4science/workbook/problems_skel/basemap4.py trunk/py4science/workbook/problems_skel/basemap5.py Modified: trunk/py4science/workbook/Makefile =================================================================== --- trunk/py4science/workbook/Makefile 2007-12-04 03:18:39 UTC (rev 4572) +++ trunk/py4science/workbook/Makefile 2007-12-04 06:24:07 UTC (rev 4573) @@ -1,20 +1,55 @@ -solved: +# Makefile for the py4science book. + +# Dependencies + +# Warning: list the .aux *before* the bbl. It's probably possible to get the +# rules right, but I'm not sure how. +SKEL_SRC = workbook_skeletons.aux workbook_skeletons.bbl \ +workbook_skeletons.tex main.tex + +SOL_SRC = $(subst _skeletons,_solved,$(SKEL_SRC)) + +# programs +PDFTEX = pdflatex -file-line-error +FASTPDFTEX = pdflatex -file-line-error -draftmode -halt-on-error + +# convenience shorthand for targets +sol: workbook_solved.pdf +skel: workbook_skeletons.pdf +all: sol skel + +# actual targets +workbook_solved.pdf: $(SOL_SRC) rm -f problems - ln -s problems_solved problems - rm -f workbook_solved.tex - ln -s main.tex workbook_solved.tex - pdflatex workbook_solved - bibtex workbook_solved - pdflatex workbook_solved - rm -f workbook_solved.tex + ln -sf problems_solved problems + $(PDFTEX) workbook_solved + $(PDFTEX) workbook_solved -skeletons: +workbook_skeletons.pdf: $(SKEL_SRC) rm -f problems - ln -s problems_skel problems - rm -f workbook_skeletons.tex - ln -s main.tex workbook_skeletons.tex - pdflatex workbook_skeletons - rm -f workbook_skeletons.tex + ln -sf problems_skel problems + $(PDFTEX) workbook_skeletons +workbook_skeletons.tex: + ln -sf main.tex workbook_skeletons.tex + +workbook_solved.tex: + ln -sf main.tex workbook_solved.tex + clean: - rm -f *~ *.aux *.log *.toc *.out \ No newline at end of file + rm -f *~ *.aux *.log *.toc *.out *.bbl *.blg + +distclean: clean + rm -f workbook_solved.pdf workbook_skeletons.pdf + +# Basic rules +empty := +%.bbl : %.aux + bibtex $(subst .aux,$(empty),$<) + $(FASTPDFTEX) $(subst .aux,$(empty),$<) + +%.aux : %.tex + $(FASTPDFTEX) $< + +# Phony targets +.PHONY: all clean Added: trunk/py4science/workbook/problems_skel/basemap1.py =================================================================== --- trunk/py4science/workbook/problems_skel/basemap1.py (rev 0) +++ trunk/py4science/workbook/problems_skel/basemap1.py 2007-12-04 06:24:07 UTC (rev 4573) @@ -0,0 +1 @@ +link ../../examples/skel/basemap1_skel.py \ No newline at end of file Property changes on: trunk/py4science/workbook/problems_skel/basemap1.py ___________________________________________________________________ Name: svn:special + * Added: trunk/py4science/workbook/problems_skel/basemap2.py =================================================================== --- trunk/py4science/workbook/problems_skel/basemap2.py (rev 0) +++ trunk/py4science/workbook/problems_skel/basemap2.py 2007-12-04 06:24:07 UTC (rev 4573) @@ -0,0 +1 @@ +link ../../examples/skel/basemap2_skel.py \ No newline at end of file Property changes on: trunk/py4science/workbook/problems_skel/basemap2.py ___________________________________________________________________ Name: svn:special + * Added: trunk/py4science/workbook/problems_skel/basemap3.py =================================================================== --- trunk/py4science/workbook/problems_skel/basemap3.py (rev 0) +++ trunk/py4science/workbook/problems_skel/basemap3.py 2007-12-04 06:24:07 UTC (rev 4573) @@ -0,0 +1 @@ +link ../../examples/skel/basemap3_skel.py \ No newline at end of file Property changes on: trunk/py4science/workbook/problems_skel/basemap3.py ___________________________________________________________________ Name: svn:special + * Added: trunk/py4science/workbook/problems_skel/basemap4.py =================================================================== --- trunk/py4science/workbook/problems_skel/basemap4.py (rev 0) +++ trunk/py4science/workbook/problems_skel/basemap4.py 2007-12-04 06:24:07 UTC (rev 4573) @@ -0,0 +1 @@ +link ../../examples/skel/basemap4_skel.py \ No newline at end of file Property changes on: trunk/py4science/workbook/problems_skel/basemap4.py ___________________________________________________________________ Name: svn:special + * Added: trunk/py4science/workbook/problems_skel/basemap5.py =================================================================== --- trunk/py4science/workbook/problems_skel/basemap5.py (rev 0) +++ trunk/py4science/workbook/problems_skel/basemap5.py 2007-12-04 06:24:07 UTC (rev 4573) @@ -0,0 +1 @@ +link ../../examples/skel/basemap5_skel.py \ No newline at end of file Property changes on: trunk/py4science/workbook/problems_skel/basemap5.py ___________________________________________________________________ Name: svn:special + * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jd...@us...> - 2007-12-07 04:48:32
|
Revision: 4663 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4663&view=rev Author: jdh2358 Date: 2007-12-06 20:48:30 -0800 (Thu, 06 Dec 2007) Log Message: ----------- updated pyrex workbook Modified Paths: -------------- trunk/py4science/workbook/main.tex Added Paths: ----------- trunk/py4science/workbook/intro_pyrex.tex trunk/py4science/workbook/pyrex_ringbuf.tex Added: trunk/py4science/workbook/intro_pyrex.tex =================================================================== --- trunk/py4science/workbook/intro_pyrex.tex (rev 0) +++ trunk/py4science/workbook/intro_pyrex.tex 2007-12-07 04:48:30 UTC (rev 4663) @@ -0,0 +1,167 @@ +\texttt{pyrex} is a pure python packages that utilizes a custom +language which is a hybid of C and python to write code that looks +like python, but is converted by \texttt{pyrex} into python C +extension code. It can be used to write custom C extension modules in +a python like module to remove performance bottlenecks in code, as +well as to wrap and existing C API with a python binding. \textt{pyrex} +generates C code, so you can use it to automatically generate C +extensions that you can ship with your code and users can build your +code without \texttt{pyrex} installed. + +\section{Writing C extensions \texttt{pyrex}} + +The canonical \texttt{pyrex} example generates a list of \texttt{N} +prime numbers, and illustrates the hybrid nature of \texttt{pyrex} +syntax + +\begin{lstlisting} + +# name this file with the pyx extension for pyrex, rather than the py +# extension for python, eg primes.pyx +def primes(int kmax): + # pyrex uses cdef to declare a c type + cdef int n, k, i + cdef int p[1000] + + # you can use normal python too, eg a python list + result = [] + if kmax > 1000: + kmax = 1000 + k = 0 + n = 2 + while k < kmax: + i = 0 + while i < k and n % p[i] <> 0: + i = i + 1 + if i == k: + p[k] = n + k = k + 1 + result.append(n) + n = n + 1 + return result + +\end{lstlisting} + +To build our python extension, we will use the \texttt{pyrex.distutils} +extensions. Here is a typical setup.py + +\begin{lstlisting} +from distutils.core import setup + +# we use the Pyrex distutils Extension class rather than the standard +# python one +#from distutils.extension import Extension + +from Pyrex.Distutils.extension import Extension +from Pyrex.Distutils import build_ext + +setup( + name = 'Demos', + ext_modules=[ + Extension("primes", ["primes.pyx"]), + ], + cmdclass = {'build_ext': build_ext} +) + +\end{lstlisting} + +and we can build it in place using + +\begin{lstlisting} +python setup.py build_ext --inplace +\end{lstlisting} + +This creates a primes.c module which is the generated C code that we +can ship with our python code to users who may not have \texttt{pyrex} +installed, and a primes.so file which is the python shared library +extension. We can now fire up ipython, import primes, and call our +function with C performance. Here is an example shell session in +which we build and test our new extension code + +\begin{lstlisting} +# our single pyx file from above +pyrex_demos> ls primes* +primes.pyx + +# build the module in place +pyrex_demos> python setup.py build_ext --inplace +running build_ext +pyrexc primes.pyx --> primes.c +building 'primes' extension +creating build +creating build/temp.macosx-10.3-fat-2.5 +gcc -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -fno-strict-aliasing -Wno-long-double -no-cpp-precomp -mno-fused-madd -fno-common -dynamic -DNDEBUG -g -O3 -I/Library/Frameworks/Python.framework/Versions/2.5/include/python2.5 -c primes.c -o build/temp.macosx-10.3-fat-2.5/primes.o +gcc -arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.4u.sdk -g -bundle -undefined dynamic_lookup build/temp.macosx-10.3-fat-2.5/primes.o -o primes.so + +# now we have the original pyx and also the autogenerated C file and +# the extension module +pyrex_demos> ls primes* +primes.cprimes.pyxprimes.so + +# let's test drive this in ipython +pyrex_demos> ipython +IPython 0.8.3.svn.r2876 -- An enhanced Interactive Python. + +In [1]: import primes + +In [2]: dir(primes) +Out[2]: ['__builtins__', '__doc__', '__file__', '__name__', 'primes'] + +In [3]: print primes.primes(20) +[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71] + + +\end{lstlisting} + + +\section{Working with \texttt{numpy} arrays} + +\textt{numpy} arrays are the core of high performance computing in +python, and on of the most common data formats for passing large data +sets around between pyhton code and other wrappers. There are many +things that arrays do very well and are practically as fast as a +native C or Fortran implementations, eg convolutions and FFTs. But +there are somethings that can be painfully slow in python when working +with arrays, for example iterative algorithms over an array of values. +For these cases, it is nice to be able to quickly generate some python +extension code for working with \texttt{numpy} array data. + +\texttt{numpy} provides a file which exposes its C API for use in +\texttt{pyrex} extension code, you can find it, and another file which +\texttt{numpy} uses to expose the requisite bits of the Python C API +which it needs, in the \texttt{numpy} source code directory +\texttt{numpy/doc/pyrex}. These files are \texttt{c_numpy.pxd} and +\texttt{c_python.pxd}. In addition, \texttt{numpy} provides and +example file \texttt{numpyx.pyx}that shows you how to build a pyx +extension file for multi-dimensional array sof different data types +(eg int, float, python object). Here we will be a little less +ambitious for starters, and write a simple toy function that sums a 1D +array of floats. + +\begin{lstlisting} + +# import the numpy c API (you need to have c_python.pxd and +# c_numpy.pxd from the numpy source directory in your build directory +cimport c_numpy + +# since this is pyrex, we can import normal python modules too +import numpy + +# numpy must be initialized -- don't forget to do this when writing +# numpy extension code. It's a common gotcha +c_numpy.import_array() + +def sum_elements(c_numpy.ndarray arr): + cdef int i + cdef double x, val + + x = 0. + val = 0. + for i from 0<=i<arr.dimensions[0]: + val = (<double*>(arr.data + i*arr.strides[0]))[0] + x = x + val + + return x + +\end{lstlisting} + Modified: trunk/py4science/workbook/main.tex =================================================================== --- trunk/py4science/workbook/main.tex 2007-12-07 04:43:36 UTC (rev 4662) +++ trunk/py4science/workbook/main.tex 2007-12-07 04:48:30 UTC (rev 4663) @@ -50,12 +50,12 @@ \begin{document} -\title{ \vspace{3cm} +\title{ \vspace{3cm} Practical Scientific Computing\\ in Python} -\author{ \vspace{1cm} +\author{ \vspace{1cm} Editors:\\ John D. Hunter\\ Fernando P\xE9rez @@ -136,6 +136,11 @@ \chapter{Plotting on maps} \input{basemap.tex} +\chapter{Performance python: interfacing with other languages} +\input{intro_pyrex.tex} +\input{pyrex_ringbuf.tex} + + %%% Bibliography section \bibliographystyle{plain} Added: trunk/py4science/workbook/pyrex_ringbuf.tex =================================================================== --- trunk/py4science/workbook/pyrex_ringbuf.tex (rev 0) +++ trunk/py4science/workbook/pyrex_ringbuf.tex 2007-12-07 04:48:30 UTC (rev 4663) @@ -0,0 +1,43 @@ +This exercise introduces \texttt{pyrex} to wrap a C library for +trailing statistics. + +Computation of trailing windowed statistics is common in many +quantitative data driven disciplines, particularly where there is +noisy data. Common uses of windowed statistics are the trailing +moving average, standard deviation, minumum and maximum. Two common +use cases which pose computational challenges for python: real time +updating of trailing statistics as live data comes in, and posthoc +computation of trailing statistics over a large data array. In the +second case, for some statistics we can use convolution and related +techniques for efficient computation, eg of the trailing 30 sample +average + +\begin{lstlisting} + numpy.convolve(x, numpy.ones(30), mode=valid')[:len(x)] +\end{lstlisting} + +but for other statistics like the trailing 30 day maximum at each +point, efficient routines like convolution are of no help. + +This exercise introduces \texttt{pyrex} to efficiently solve the problem of +trailing statistics over arrays as well as for a live, incoming data +stream. A pure C library, \texttt{ringbuf}, defines a circular C +buffer and attached methods for efficiently computing trailing +averages, and \texttt{pyrex} is used to provide a pythonic API on top of this +extension code. The rigid segregation between the C library and the +python wrappers insures that the C code can be used in other projects, +be it a matlab (TM) extension or some other C library. The goal of +the exercise is to compute the trailing statistics \textit{mean}, +\textit{median}, \textit{stddev}, \textit{min} and \textit{max} using +three approaches: + +\begin{itemize} + \item with brute force using \texttt{numpy} arrays, slices and methods + + \item with python bindings to the \texttt{ringbuf} code + \texttt{ringbuf.Ringbuf}. + + \item using a \texttt{pyrex} extension to the + \texttt{ringbuf.runstats} code + +\end{itemize} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |