diff --git a/figures/Schmidt2018_dyn/Fig7_temporal_hierarchy.py b/figures/Schmidt2018_dyn/Fig7_temporal_hierarchy.py index 2fd8ff6e798ce825871a9c288258b13a1d3d68c5..980a66d6bf142ebce437241433c2eede7e39cc51 100644 --- a/figures/Schmidt2018_dyn/Fig7_temporal_hierarchy.py +++ b/figures/Schmidt2018_dyn/Fig7_temporal_hierarchy.py @@ -621,7 +621,7 @@ pl.savefig('Fig7_temporal_hierarchy_mpl.eps') """ -Merge eps files +Merge surface plots """ pyx.text.set(cls=pyx.text.LatexRunner) pyx.text.preamble(r"\usepackage{helvet}") diff --git a/figures/Schmidt2018_dyn/Fig8_alluvial_sim_exp.eps b/figures/Schmidt2018_dyn/Fig8_alluvial_sim_exp.eps new file mode 100644 index 0000000000000000000000000000000000000000..4a502a6685292aa4ac64d81a2476c35487cb51b7 --- /dev/null +++ b/figures/Schmidt2018_dyn/Fig8_alluvial_sim_exp.eps @@ -0,0 +1,643 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.14.6 (http://cairographics.org) +%%CreationDate: Thu Jun 15 08:56:19 2017 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 3 +%%BoundingBox: 0 -1 401 402 +%%EndComments +%%BeginProlog +save +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/pdfmark where { pop globaldict /?pdfmark /exec load put } + { globaldict begin /?pdfmark /pop load def /pdfmark + /cleartomark load def end } ifelse +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +%%EndProlog +%%BeginSetup +%%BeginResource: font DejaVuSans +11 dict begin +/FontType 42 def +/FontName /DejaVuSans def +/PaintType 0 def +/FontMatrix [ 1 0 0 1 0 0 ] def +/FontBBox [ 0 0 0 0 ] def +/Encoding 256 array def +0 1 255 { Encoding exch /.notdef put } for +Encoding 49 /one put +Encoding 50 /two put +Encoding 51 /three put +Encoding 52 /four put +Encoding 54 /six put +Encoding 55 /seven put +Encoding 65 /A put +Encoding 67 /C put +Encoding 68 /D put +Encoding 69 /E put +Encoding 70 /F put +Encoding 72 /H put +Encoding 73 /I put +Encoding 76 /L put +Encoding 77 /M put +Encoding 79 /O put +Encoding 80 /P put +Encoding 83 /S put +Encoding 84 /T put +Encoding 86 /V put +Encoding 97 /a put +Encoding 100 /d put +Encoding 108 /l put +Encoding 112 /p put +Encoding 116 /t put +Encoding 118 /v put +/CharStrings 27 dict dup begin +/.notdef 0 def +/V 1 def +/P 2 def +/four 3 def +/t 4 def +/O 5 def +/T 6 def +/M 7 def +/S 8 def +/d 9 def +/I 10 def +/v 11 def +/C 12 def +/A 13 def +/one 14 def +/two 15 def +/l 16 def +/F 17 def +/p 18 def +/a 19 def +/six 20 def +/E 21 def +/H 22 def +/three 23 def +/D 24 def +/L 25 def +/seven 26 def +end readonly def +/sfnts [ +<0001000000090080000300106376742000691d3900001198000001fe6670676d7134766a0000 +1398000000ab676c7966918e5f770000009c000010fc686561640d1447cc0000144400000036 +686865610d9f07880000147c00000024686d747885aa0ebe000014a00000006c6c6f63610000 +f19c0000150c000000706d617870048806710000157c00000020707265703b07f1000000159c +0000056800020066fe96046605a400030007001a400c04fb0006fb0108057f0204002fc4d4ec +310010d4ecd4ec301311211125211121660400fc73031bfce5fe96070ef8f272062900010010 +0000056805d5000600b740270411050605031102030606050311040300010002110101004203 +0401af0006040302000505010710d4c4173931002fec3239304b5358071005ed071008ed0710 +08ed071005ed5922b2500801015d406200032a03470447055a037d0383030706000702080409 +06150114021a041a052a002601260229042905250620083800330133023c043c053706480045 +014502490449054706590056066602690469057a007601760279047905750680089800970629 +5d005d21013309013301024afdc6d301d901dad2fdc705d5fb1704e9fa2b000200c90000048d +05d500080013003a40180195100095098112100a0802040005190d3f11001c09041410fcec32 +fcec11173931002ff4ecd4ec30400b0f151f153f155f15af1505015d01113332363534262325 +2132041514042b0111230193fe8d9a9a8dfe3801c8fb0101fefffbfeca052ffdcf92878692a6 +e3dbdde2fda800020064000004a405d50002000d0081401d010d030d0003030d4200030b07a0 +0501038109010c0a001c0608040c0e10dc4bb00b544bb00d545b58b9000cffc03859d43cc4ec +32113931002fe4d43cec321239304b5358071004c9071005c9592201402a0b002a0048005900 +690077008a000716012b0026012b0336014e014f0c4f0d5601660175017a0385010d5d005d09 +012103331133152311231121350306fe0201fe35fed5d5c9fd5e0525fce303cdfc33a8fea001 +60c3000000010037000002f2059e0013003840190e05080f03a9001101bc08870a0b08090204 +000810120e461410fc3cc4fc3cc432393931002fecf43cc4ec3211393930b2af1501015d0111 +2115211114163b01152322263511233533110177017bfe854b73bdbdd5a28787059efec28ffd +a0894e9a9fd202608f013e00000000020073ffe305d905f0000b00170023401306951200950c +91128c1809190f33031915101810fcecfcec310010e4f4ec10ee300122001110003332001110 +002720001110002120001110000327dcfefd0103dcdc0101feffdc013a0178fe88fec6fec5fe +870179054cfeb8fee5fee6feb80148011a011b0148a4fe5bfe9efe9ffe5b01a40162016201a5 +00000001fffa000004e905d50007004a400e0602950081040140031c0040050810d4e4fce431 +002ff4ec3230014bb00a5458bd00080040000100080008ffc03811373859401300091f001001 +10021f071009400970099f09095d03211521112311210604effdeecbfdee05d5aafad5052b00 +000100c90000061f05d5000c00bf403403110708070211010208080702110302090a0901110a +0a09420a070203080300af080b050908030201050a061c043e0a1c00040d10fcecfcec111739 +31002f3cc4ec32111739304b5358071005ed071008ed071008ed071005ed5922b2700e01015d +405603070f080f09020a15021407130a260226072007260a200a3407350a69027c027b07790a +80028207820a90021604010b0313011b0323012c032708280934013c035608590965086a0976 +08790981018d0395019b03145d005d13210901211123110123011123c9012d017d017f012dc5 +fe7fcbfe7fc405d5fc0803f8fa2b051ffc000400fae1000000010087ffe304a205f00027007e +403c0d0c020e0b021e1f1e080902070a021f1f1e420a0b1e1f0415010015a114941895110495 +00942591118c281e0a0b1f1b0700221b190e2d071914222810dcc4ecfcece411123939393931 +0010e4f4e4ec10eef6ee10c6111739304b535807100eed11173907100eed1117395922b20f29 +01015db61f292f294f29035d01152e012322061514161f011e0115140421222627351e013332 +363534262f012e01353424333216044873cc5fa5b377a67ae2d7feddfee76aef807bec72adbc +879a7be2ca0117f569da05a4c53736807663651f192bd9b6d9e0302fd04546887e6e7c1f182d +c0abc6e4260000020071ffe3045a06140010001c003840191ab9000e14b905088c0eb8019703 +17040008024711120b451d10fcecf4ec323231002fece4f4c4ec10c4ee30b6601e801ea01e03 +015d0111331123350e0123220211100033321601141633323635342623220603a2b8b83ab17c +cbff00ffcb7cb1fdc7a79292a8a89292a703b6025ef9eca86461014401080108014461fe15cb +e7e7cbcbe7e7000100c90000019305d50003002eb700af02011c00040410fc4bb0105458b900 +0000403859ec31002fec3001400d30054005500560058f059f05065d13331123c9caca05d5fa +2b000001003d0000047f0460000600fb40270311040504021101020505040211030206000601 +1100000642020300bf0506050302010504000710d44bb00a5458b90000004038594bb014544b +b015545b58b90000ffc03859c4173931002fec3239304b5358071005ed071008ed071008ed07 +1005ed592201408e48026a027b027f02860280029102a402080600060109030904150015011a +031a0426002601290329042008350035013a033a043008460046014903490446054806400856 +0056015903590450086600660169036904670568066008750074017b037b0475057a06850085 +0189038904890586069600960197029a03980498059706a805a706b008c008df08ff083e5d00 +5d133309013301233dc3015e015ec3fe5cfa0460fc5403acfba0000000010073ffe3052705f0 +00190036401a0da10eae0a951101a100ae04951791118c1a07190d003014101a10fcec32ec31 +0010e4f4ecf4ec10eef6ee30b40f1b1f1b02015d01152e0123200011100021323637150e0123 +2000111000213216052766e782ff00fef00110010082e7666aed84feadfe7a0186015386ed05 +62d55f5efec7fed8fed9fec75e5fd34848019f01670168019f470000000200100000056805d5 +0002000a00c2404100110100040504021105050401110a030a0011020003030a071105040611 +0505040911030a08110a030a4200030795010381090509080706040302010009050a0b10d4c4 +173931002f3ce4d4ec1239304b5358071005ed0705ed071005ed0705ed071008ed071005ed07 +1005ed071008ed5922b2200c01015d40420f010f020f070f080f005800760070008c00090701 +0802060309041601190256015802500c67016802780176027c0372047707780887018802800c +980299039604175d005d090121013301230321032302bcfeee0225fe7be50239d288fd5f88d5 +050efd1903aefa2b017ffe810000000100e10000045a05d5000a004040154203a00402a00581 +0700a009081f061c03001f010b10d44bb00f5458b9000100403859ecc4fcec31002fec32f4ec +d4ec304b5358592201b40f030f04025d3721110535253311211521fe014afe990165ca014afc +a4aa047348b848fad5aa0000000100960000044a05f0001c009e4027191a1b03181c11050400 +110505044210a111940da014910400a00200100a02010a1c171003061d10fc4bb015544bb016 +545b4bb014545b58b90003ffc03859c4d4ecc0c011123931002fec32f4ecf4ec304b53580710 +05ed0705ed01b01c1011173959220140325504560556077a047a05761b87190704000419041a +041b051c74007606751a731b741c82008619821a821b821ca800a81b115d005d252115213536 +00373e0135342623220607353e01333204151406070600018902c1fc4c73018d33614da7865f +d3787ad458e80114455b19fef4aaaaaa7701913a6d974977964243cc3132e8c25ca5701dfeeb +0000000100c100000179061400030022b7009702010800460410fcec31002fec30400d100540 +05500560057005f00506015d13331123c1b8b80614f9ec00000100c90000042305d500090029 +40120695040295008104ad08050107031c00040a10fcec32d4c431002fecf4ec10ee30b20f0b +01015d13211521112115211123c9035afd700250fdb0ca05d5aafe48aafd3700000200bafe56 +04a4047b0010001c003e401b1ab9000e14b90508b80e8c01bd03bc1d11120b47170400080246 +1d10fcec3232f4ec310010e4e4e4f4c4ec10c4ee304009601e801ea01ee01e04015d25112311 +33153e013332001110022322260134262322061514163332360173b9b93ab17bcc00ffffcc7b +b10238a79292a7a79292a7a8fdae060aaa6461febcfef8fef8febc6101ebcbe7e7cbcbe7e700 +00000002007bffe3042d047b000a002500bc4027191f0b17090e00a91706b90e1120861fba1c +b923b8118c170c001703180d09080b1f030814452610fcecccd4ec323211393931002fc4e4f4 +fcf4ec10c6ee10ee11391139123930406e301d301e301f3020302130223f27401d401e401f40 +2040214022501d501e501f50205021502250277027851d871e871f8720872185229027a027f0 +271e301e301f30203021401e401f40204021501e501f50205021601e601f60206021701e701f +70207021801e801f80208021185d015d0122061514163332363d01371123350e012322263534 +36332135342623220607353e0133321602bedfac816f99b9b8b83fbc88accbfdfb0102a79760 +b65465be5af3f00233667b6273d9b4294cfd81aa6661c1a2bdc0127f8b2e2eaa2727fc000002 +008fffe3049605f0000b0024005840241306000d860c00a01606a01c16a510a00c8922911c8c +250c22091c191e131c03211f1b2510fcececf4ece4310010e4f4e4fce410ee10ee10ee111239 +304014cb00cb01cd02cd03cd04cb05cb0607a41eb21e025d015d012206151416333236353426 +01152e01232202033e0133320015140023200011100021321602a4889f9f88889f9f01094c9b +4cc8d30f3bb26be10105fef0e2fefdfeee0150011b4c9b033bbaa2a1bbbba1a2ba0279b82426 +fef2feef575dfeefebe6feea018d0179016201a51e000000000100c90000048b05d5000b002e +401506950402950081089504ad0a05010907031c00040c10fcec32d4c4c431002fececf4ec10 +ee30b21f0d01015d132115211121152111211521c903b0fd1a02c7fd3902f8fc3e05d5aafe46 +aafde3aa0000000100c90000053b05d5000b002c4014089502ad0400810a0607031c05380901 +1c00040c10fcec32fcec3231002f3ce432fcec30b2500d01015d133311211133112311211123 +c9ca02decacafd22ca05d5fd9c0264fa2b02c7fd39000001009cffe3047305f000280070402e +0015130a86091f862013a0150da00993061ca020932391068c15a329161c13000314191c2620 +101c03141f09062910fc4bb016544bb014545b58b90009ffc03859c4c4d4ecf4ec1117393931 +0010ece4f4e4ec10e6ee10ee10ee10ee11123930014009641e611f6120642104005d011e0115 +140421222627351e013332363534262b013533323635342623220607353e0133320415140603 +3f91a3fed0fee85ec76a54c86dbec7b9a5aeb6959ea39853be7273c959e6010c8e03251fc490 +ddf22525c33132968f8495a67770737b2426b42020d1b27cab00000200c9000005b005d50008 +0011002e4015009509810195100802100a0005190d32001c09041210fcecf4ec113939393931 +002fecf4ec30b2601301015d0111332000111000212521200011100029010193f40135011ffe +e1fecbfe42019f01b20196fe68fe50fe61052ffb770118012e012c0117a6fe97fe80fe7efe96 +0000000100c90000046a05d500050025400c0295008104011c033a00040610fcecec31002fe4 +ec304009300750078003800404015d133311211521c9ca02d7fc5f05d5fad5aa000100a80000 +046805d5000600634018051102030203110405044205a0008103050301040100060710fcccc4 +11393931002ff4ec304b5358071005ed071005ed5922014bb0165458bd000700400001000700 +07ffc03811373859401258020106031a05390548056703b000b006075d005d13211501230121 +a803c0fde2d301fefd3305d556fa81052b000000013500b800cb00cb00c100aa009c01a600b8 +00660000007100cb00a002b20085007500b800c301cb0189022d00cb00a600f000d300aa0087 +00cb03aa0400014a003300cb000000d9050200f4015400b4009c01390114013907060400044e +04b4045204b804e704cd0037047304cd04600473013303a2055605a60556053903c5021200c9 +001f00b801df007300ba03e9033303bc0444040e00df03cd03aa00e503aa0404000000cb008f +00a4007b00b80014016f007f027b0252008f00c705cd009a009a006f00cb00cd019e01d300f0 +00ba018300d5009803040248009e01d500c100cb00f600830354027f00000333026600d300c7 +00a400cd008f009a0073040005d5010a00fe022b00a400b4009c00000062009c0000001d032d +05d505d505d505f0007f007b005400a406b80614072301d300b800cb00a601c301ec069300a0 +00d3035c037103db0185042304a80448008f0139011401390360008f05d5019a061407230666 +0179046004600460047b009c00000277046001aa00e904600762007b00c5007f027b000000b4 +025205cd006600bc00660077061000cd013b01850389008f007b0000001d00cd074a042f009c +009c0000077d006f0000006f0335006a006f007b00ae00b2002d0396008f027b00f600830354 +063705f6008f009c04e10266008f018d02f600cd03440029006604ee00730000140000960000 +b707060504030201002c2010b002254964b040515820c859212d2cb002254964b040515820c8 +59212d2c20100720b00050b00d7920b8ffff5058041b0559b0051cb0032508b0042523e120b0 +0050b00d7920b8ffff5058041b0559b0051cb0032508e12d2c4b505820b0fd454459212d2cb0 +02254560442d2c4b5358b00225b0022545445921212d2c45442d2cb00225b0022549b00525b0 +05254960b0206368208a108a233a8a10653a2d000001000000025eb8369cab945f0f3cf5001f +080000000000d3d94ef700000000d3d94ef7f7d6fc4c0e5909dc000000080000000100000000 +00010000076dfe1d00000efef7d6fa510e5900010000000000000000000000000000001b04cd +00660579001004d300c90517006403230037064c007304e3fffa06e700c90514008705140071 +025c00c904bc003d0596007305790010051700e105170096023900c1049a00c9051400ba04e7 +007b0517008f050e00c9060400c90517009c062900c9047500c9051700a80000000000000044 +00000124000001a400000260000002dc00000368000003d8000004d4000005cc000006640000 +06ac000007d00000086800000964000009d400000ad400000b1000000b6400000c0400000d30 +00000e0800000e6800000ec400000fac0000102c00001070000010fc00010000001b0354002b +0068000c000200100099000800000415021600080004b8028040fffbfe03fa1403f92503f832 +03f79603f60e03f5fe03f4fe03f32503f20e03f19603f02503ef8a4105effe03ee9603ed9603 +ecfa03ebfa03eafe03e93a03e84203e7fe03e63203e5e45305e59603e48a4105e45303e3e22f +05e3fa03e22f03e1fe03e0fe03df3203de1403dd9603dcfe03db1203da7d03d9bb03d8fe03d6 +8a4105d67d03d5d44705d57d03d44703d3d21b05d3fe03d21b03d1fe03d0fe03cffe03cefe03 +cd9603cccb1e05ccfe03cb1e03ca3203c9fe03c6851105c61c03c51603c4fe03c3fe03c2fe03 +c1fe03c0fe03bffe03befe03bdfe03bcfe03bbfe03ba1103b9862505b9fe03b8b7bb05b8fe03 +b7b65d05b7bb03b78004b6b52505b65d40ff03b64004b52503b4fe03b39603b2fe03b1fe03b0 +fe03affe03ae6403ad0e03acab2505ac6403abaa1205ab2503aa1203a98a4105a9fa03a8fe03 +a7fe03a6fe03a51203a4fe03a3a20e05a33203a20e03a16403a08a4105a096039ffe039e9d0c +059efe039d0c039c9b19059c64039b9a10059b19039a1003990a0398fe0397960d0597fe0396 +0d03958a410595960394930e05942803930e0392fa039190bb0591fe03908f5d0590bb039080 +048f8e25058f5d038f40048e25038dfe038c8b2e058cfe038b2e038a8625058a410389880b05 +891403880b03878625058764038685110586250385110384fe038382110583fe0382110381fe +0380fe037ffe0340ff7e7d7d057efe037d7d037c64037b5415057b25037afe0379fe03780e03 +770c03760a0375fe0374fa0373fa0372fa0371fa0370fe036ffe036efe036c21036bfe036a11 +42056a530369fe03687d036711420566fe0365fe0364fe0363fe0362fe03613a0360fa035e0c +035dfe035bfe035afe0359580a0559fa03580a035716190557320356fe035554150555420354 +150353011005531803521403514a130551fe03500b034ffe034e4d10054efe034d10034cfe03 +4b4a13054bfe034a4910054a1303491d0d05491003480d0347fe0346960345960344fe034302 +2d0543fa0342bb03414b0340fe033ffe033e3d12053e14033d3c0f053d12033c3b0d053c40ff +0f033b0d033afe0339fe033837140538fa033736100537140336350b05361003350b03341e03 +330d0332310b0532fe03310b03302f0b05300d032f0b032e2d09052e10032d09032c32032b2a +25052b64032a2912052a25032912032827250528410327250326250b05260f03250b0324fe03 +23fe03220f03210110052112032064031ffa031e1d0d051e64031d0d031c1142051cfe031bfa +031a42031911420519fe031864031716190517fe031601100516190315fe0314fe0313fe0312 +11420512fe0311022d05114203107d030f64030efe030d0c16050dfe030c0110050c16030bfe +030a100309fe0308022d0508fe030714030664030401100504fe03401503022d0503fe030201 +1005022d0301100300fe0301b80164858d012b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b002b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b1d00> +] def +/f-0-0 currentdict end definefont pop +%%EndResource +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 -1 401 402 +%%EndPageSetup +q 0 -1 401 403 rectclip q +0.313726 g +122.5 w +0 J +0 j +[] 0.0 d +4 M q 0.543916 0 0 -1 0 401.018738 cm +58.983 339.59 m 729.382 339.59 l S Q +0.76163 g +q 0.543916 0 0 -1 0 401.018738 cm +58.983 62.09 m 729.382 62.09 l S Q +0.313726 g +110.250403 w +q 0.543916 0 0 -1 0 401.018738 cm +58.983 223.215 m 394.183 223.215 394.183 178.465 729.382 178.465 c S Q +0 g +28.082 400.179 4 -159.25 re f +28.082 232.929 4 -232.75 re f +396.883 400.179 4 -232.75 re f +396.883 159.429 4 -159.25 re f +BT +9.5 0 0 9.5 -0.0742188 394.093201 Tm +/f-0-0 1 Tf +(VP)Tj +0 -1.25 Td +(V4t)Tj +0 -1.25 Td +[(V)18(OT)]TJ +0 -1.25 Td +(MSTd)Tj +0 -1.25 Td +(PITv)Tj +0 -1.25 Td +(PITd)Tj +0 -1.25 Td +[(CITv)]TJ +0 -1.25 Td +[(CITd)]TJ +0 -1.25 Td +(AITv)Tj +0 -1.25 Td +(AITd)Tj +0 -1.758005 Td +(V1)Tj +0 -1.25 Td +(V2)Tj +0 -1.25 Td +(V4)Tj +0.0107422 -2.480983 Td +(MT)Tj +0 -1.25 Td +(MSTl)Tj +0 -1.25 Td +[(F)17(ST)]TJ +0 -1.25 Td +(STPp)Tj +0 -1.25 Td +[(STP)44(a)]TJ +0 -1.25 Td +(46)Tj +0 -1.25 Td +[(FEF)]TJ +0 -1.25 Td +(TH)Tj +0 -1.25 Td +(TF)Tj +-0.0107422 -2.230345 Td +(V3)Tj +0 -1.25 Td +(V3A)Tj +0 -1.25 Td +(PIP)Tj +0 -1.25 Td +(PO)Tj +0 -1.25 Td +(DP)Tj +0 -1.25 Td +(MIP)Tj +0 -1.25 Td +(MDP)Tj +0 -1.25 Td +(VIP)Tj +0 -1.25 Td +(LIP)Tj +0 -1.25 Td +(7a)Tj +24 0 0 24 40.711661 311.818896 Tm +(1S)Tj +0.0366211 -8.500001 Td +(2S)Tj +13.252123 7.034929 Td +(1E)Tj +0.0366211 -8.506592 Td +(2E)Tj +ET +Q q +32 278.019 365 -156 re W n +q +32 278.019 365 -156 re W n +% Fallback Image: x=32 y=123 w=365 h=156 res=300ppi size=2965950 +[ 0.24 0 0 0.24 32 122.018738 ] concat +/DeviceGray setcolorspace +8 dict dup begin + /ImageType 1 def + /Width 1521 def + /Height 650 def + /Interpolate false def + /BitsPerComponent 8 def + /Decode [ 0 1 ] def + /DataSource currentfile /ASCII85Decode filter /FlateDecode filter def + /ImageMatrix [ 1 0 0 -1 0 650 ] def +end +image +Gb"0WH[&e.IGjVqqlil\dMBEjo]^7cmSe:qdWV7+03u"^>G0>^.grpkZE5BQ66Z\4E2.pe#) + 7YuNJ0aL`fUQ/2k:'Z$mITM0$6VC,E6N!'mXW;@p,*LO/t`Z.jN6/k[n,+1V-_UO_3b"3Tn + )(5Q<(?PZV;-q46Dgci#L!!$(O^)cH@ZQ2fh!.K>09r,M<-3l`c)B"W0^](VMTSM=D)B4K5 + B!!$`fQu]@=YP\nqSR1gcV!4`=Q92=#M73:[qfAdJq68c6eeX)?;%Pk?eTJ$m\$,hk5\0@V + FC]K&nkB,"$H4IWqYnc*+Q2ke?EC>[]!f'@ENckJlfeTQ?(Xci+iW@edF@N4,nTt*K!(\A? + iQtS#G]1Hr$_W]FK#NF03762,I.M<OiD!_g[U<Lm[i;799Gq,nL;lcdfY+6Y!k!t]=S-H^4 + uL_[?!OQol.l.c^*!4()Ll`6Xt__6;u&Xa%r9jg\]^$bL'2d"TX(!`ZsG=0]6lJYH.1o=&t + QPPnY%rX^5+^K>1*$CS7H/V_9$HN_bT4LBmn'NC<Wg"I`[Wn8iNuNbtB9]C%)k:#8jK#n6f + Bbsqj`]0lP#?Y/j?5_SCc`Ug"]I.dAOG!Ampm4EP>?7<D1%Zht2Mti;R&'!<FM-^ko)ZYE. + `Zq2FTYI2'VRj(GXJ@77FH##u?gnkGDX6MDVghtDmgK3])\/JHpn%BEj1BKipXLp6;LLT9M + :B@Kcueo)B?t@Ui<doH@fRq<=sPqKLA-oH)-Q`Ge-Q&*-@^AT:[H<OU`ViG=8G\f)tlM$X5 + ]V<Dp&sQ=6V+Kquqk:Fe7p64Mku#JFRUF*+)oU=^Gj_,i1R^K0QQM/_JN:36GPT?ksr)L$H + LHe*(`=l5a9\"6aRto(f_K-[1(?>Betf,s%T3dNnVZiWoI%P\7UY52p5NqO4GTZ=8jbRF3Y + ]Et0;\](#PMEumSHPHT0OIVR3SnupiW`k;OHQ_)$cF/6LM2o9qa:e!8UBW/&9-nERYSOPbV + *W0'S[SsjA*;9JJNJE/#3cCjmUd0#5F_<u/B/TNIHGWP13!!_um5b$e':%JM''o+k0dc\%) + Z;%1/s:WJT^cuoTsgu6FG&fR)9B&?c^Hl]1ZSSlF=eL)`B1h3FS&7=AFO4h[W_@6\<dYDes + /&9qlB2C9]otpE:@K\3H=I"LOHs]d;E<^[t;GU</_@eN7_RRDi!"e!?8sD+.q>mE$HTZ^S( + ,\W='<P\cPtI4k!A7jl(&YW=f&>Nc]rQ5*3@tE1l&l_6[5i&H"qp5*4:<m)Hq)YppplX(jX + 4)WVep@(GNQ'@/i8^h/>n$6o7\3tgm!i]Sl$7^TeD>J]?%Kb=7D)I#<#g"_8&U;;.JY60BK + U?;1@&I(?Oc!^FTs)NSq2\bS0i2=I746hb'#mB$;&bagWQ1<FiAdEjsI-i);qTr=i;"#thj + qE>M,5>1q[WPs:(*7/ONNRn0<,?/oUGIL?fo[EK*U"[G9U8&Z#mbuL%X7OTZ+gB`70</4Sk + Yq8"Les?N;88ne2%sPe5_d9(EFX.Mr<?a.F9llqcQb4j98o8pV*.J3^"%*i7k-.4Z(5O+#8 + `Wl7,HYM2i(a+o&JiqN+W4=BAMBS$L$YppOsQmu<5(nHS,EKD!cd>==5NEZk.;3"kR"'E*O + ndp5'4ipL`IH7VDP*TQT,i/Lut0f,oo'e1b)n=A'RXG;d0\8!5;i%=+oO2M=<e!f!;Gp*uA + L`bqUq#1uY5k*Ufmi%Q->m"bVip7''>IiE"8J-?:1q&+jh1>NZKD!c+9^@fZK(#EYSNOoGI + :br.gj"Q1&:A[Z#$B;D`hn%m4m':XF?H3;K'tlMqQOime54C?Z`o8D$dmJo)D>\G9f&ot(S + (u5N8P)mg+t"c+Ag$NlacZsR3MDM*U+R%;IuqHVY.%L^_R&[0OI=7?cPTE;m[V>,5C.T"tk + jl:((SGn^j"D'V,KmL>^7khp"D.F5@2PE#T9,61C_udM:`82:INhH'\jJ,5<p-jrpn<iX]Z + p\bZ_p,5@>kd<l$bHn8R?%0U$%^5amciYj'@E:tX+)1X.A^6G("^&`t@Fd9q?$NQq5Hs+jE + SP>Z%](/T;cGFE$?Xc_W0@>1G$jUOi$Ut*R_b:2?DS@7*RMqS$2,pi'$#p6boU7iH7<](si + *[)c#egXLGRmki*:+gTK!1!]d"pn%_2=@_/I-XDK&E])[?l4teIlbu0'-IOM%G'"1^<fZM2 + iEN_SI9K,5@%(4^WNa^!Ape`#_f#q!.Bl%^N)`WQFS>MOR'7:]maApe!TqrJ'OC@C_LcNJA + J"+>nbSWj]VJd=oJiLl]T_:]S=5<tfN2b$Z\ucP:+i"Mn/C9+TeQ,)rjc"/QQVe[>(V[3NV + OhclBoqWAYc$c,mdUE.s?\LIVP,5>>Tknt5l5Z>T;05hI$@gcC+n9)Q\a*FG24^7MHs2Y8m + &U]$%:1"T=7#d0/]OeXJIp@QK&:CUep9L4WJBNBp>P?DE_:M@ZOO'cU.cTLa/@7_4otrNA0 + &cZLgI;-q!]D7t3q@D^7CQ0;;k\MT6%a=d^8>#dZ#6kZ[X=k6T1m$$"CG@Qo;ri=e9H4f(: + k^b3c"&R&fjf6>k*0aE^]pq!Y-FLHK1BbU<(NimLoK9#WRh%CG0X`Rs*B&js<\en-s?HB2! + DGV%nnOQeB7n"Q'KE]T/7B\=nd;HPhIpRt<fJ-,T>?[u(+C"5HB8c#JEYcA_N[<B#d6_#m( + Jpa0FT1Y#c4_)D[//:qdWK-rbN(MGa`rdb/>,5B/4Ej@KEI*Yi"TS;nA^4@1aN10*P>66L6 + i1$\tCrW:ZI&@<RK]&?b84`JZo<7YS.UX]WDm#t?&^a<rb[k-=Ym6R>pa0eCd.+I*K>\g%N + 8PYX/ZdLQC@QYt7/op]dN\J+45-USo38B;!KnT#Gkl=)\EI%-MQ:`I'G,Z11j':d::=_tBD + 16/D$`HW#X2k!q(`_X)[FeWn1d_DkI75&>$dj*dR*GCSc;\YT&1%L!\Id\_8g#?ja[;r21* + +gJrcaUh:G%BI<FKQf'EG'#X4PilB_#?jD]MnC\C"_#X2:(m$-h%S]U:\5"Z)kNo2.E`f@" + ]b0Lq5nsq8G-3PEkBYQ%.ol"/NH#--6kT:C%*s<[d$:G$:5/K&b?oN[u22HMoCF[9o=hk=H + +)CHA]:8^q7eV@B#X4Dj0DU6LD]'dH^c;N>8[Z'I@m7(q!R;qb8:dPXB?M?8$,K,(*(p3LT + S=sM!OiVfUr`8jpGG'2_Vum",(bl?fpDWa?sUarU4;V6`Zb+JK,r'ppo:mJ*Y<q],:scZ5C + TiO7J(MD^g%!aBsO+R%ebEl"<V>N2u-sgKDd.E^XE2pHs"dZo%UVc^UK0890`si+-r^ar5n + @fmQ^kb6L\D\lbFFD&&2@t0A#1`Os0V)m$37GIj7cgc70;H,D(sb"GW5LIPb/.aih#@Zj8i + NdQ[EmgW<8ZF_S;Jhp)5Q6L^,2i(/77I\#][aT.JJprLB0hAofYjY=^TPX+_HdIV^/HL<2K + Oe5;;!<j$^V!k/6SXqnN(*iX*!XM!<Eq#D[ps*12$WbF5U)ZFA"<XUhBj^PAbo7>'T&]ug+ + S\JnZI[?)a'L)81P1[q*K7IV6djPLHpE,`+00^:cTcpFc:%:#23ZA8><l3l+,N,?Xn8FFqD + kY="-Ol'=R+8Ih)i&]ZBk>I4M:pZ7.@J>`S0ToRgV#erI"1H)B"VJ_+2_C"-5V?ojU!\:\" + O3&U`%j+$8'2S(S&pZ#q<6O:8rafJDA)>OP6lDX5DW7h^sk_)G9jSt5W3SbtpVN3TShaFrI + jk5!`rm9=IN55"MLfE(&!n;VEA^2J:P`SGk+G^9`gKA[^,d"1trhY#CEj68-<$%f@gK>61n + 1A)$sB9WqJT],G73QKk9[JKk$QKFQ(dCk-CcdtdOqK[H1"cu!eRn6:J9MCD*N^TX0K9lfI0 + )#$HkRI3TmHP+g\$rcar`j+L>rF5io2sTB=a^of[fD5N2#,0e:5fZQ01RYf?O6=p3?;p#p5 + 5Jl2\=rpJL;N<mQF=X6Y-Y6nc@-S#_(bt"g3hi*?=;3$_<:U&^Y^n0Rj-`BkDfmEg,^_-U[ + G*Z()1#$592^bElQ$4a[%dn^\K<5W1WE@*bumpI[BZ=VWT!!@#&ir1ta\LBk_FU$c<]oa$> + &/"Z^m%j!,L<i5N\)!(i$#n$Z@e)P?T?L0c*H/]PC5:LikG'Bd\jCZg$[Yu$-!+@,YrZ^n+ + L\oAg3pua!m](XK):U%S-m'!gY2Crg3BB"DgDp^t3V>U:Zg31Gh<DdVB<G[-%gX=qn/"cZ? + QJ>l)a&:3FE_#7nA(W$gUEL$nd-f!n0/VjJGd5j0KhI=Z1gp^X8^S>pmD%B$LQ\P_'gCET0 + gA$0JP]Bh\0hT0Ds/p6N>D>a!`$KRu5%SGO<PLhQ@M^eK=A&:@pWWDcM&R`hGTC^\\&LW#Y + ^qe"`oaph*&T>P&o`VhD1"^f;9UJ)8gSs1)O,!\a)X\GqCUGBiPdh2p%/R[EC@0%)0CF!cW + NkP\Efk<&t[m+ksXD/77qKRPY=&%G*Di6Ri1*k61c=L754`uKJ=AjX9.%aejQ'ltD2/\2.9 + :@,LJh<l*,q%rblWIAO8fC%c`T,]AMJ3,RuriCA<:UIWoq:K]D]5,%AhE-_O\B,0:5QokM7 + .=h`>j:]@m`:LQi)=tEHfTOYbhjU*SEaQP'6'O/_4NS>eCPG>AX2HSI=$2,h!WinEi\D+C4 + Wo*i&KbK5@]"ai;?/>1S4BAc-@?eftsnOrRf^&*+igPB;Kq,J"^b`pX+cqTBE7$[o%E@EJl + 1%.$K9J@sU,idrBWo8cG-+H`H*rq9;$OFVAg:^d5sFJ(D];F!k9Tn;AZCoZ2[>^A4&+DVH9 + pI)a<AXogZ'm,1B$6%;7-9m(#mBi4<]Z>t!WnjNcob]No`QkfOUbC-;C)P=/)<di;8cg:mm + rWgQfc<Ws5`F>tP3(*;qO%0u2n7AFB7B)k!j4+rO4d2umq1'-c$@_VFW:QDF\c"bKrCFnU> + OK4R@n-LIAEPZ)&Vdh+huI>@Ik;QKSI)Y[ej&to+$Elfq9#%AgYg$M4q)Z=iB8a-IOYJM4; + &,-"9+&O\f,L0A\"_?Uq"Lj2t=5\F,@X.GRk1dRl%r'O2eK^*VB5<?*CB0Y,\RZQ+aQ#W)/ + MtF0fnSlFW)RFT?d!'DuXnX5S"npSgEnkBip%WS1OZpP2`Z=&aER:&i8nigV\B[_%9n^<;o + 0!4GKWplj+883$$BGKcI?>cTOG`VTG/CZ?0(<`d7%*Xd7pjJA?(@kB>beE`Wj`I,^#gm\`) + W8WZR9>q7OKO23t#P/u1n3&><4q3P=[MU,;4-/U;K"2A!(P87chTp3G9DO*$#_&Y,^@R`X! + 4F$F2W,nda0Cj>fRVo7Ka506@]ffDN8WG=.u37KLPN?(V?jo\Z8h&0-D*XhO:d*5!(Qf[iS + cAM$%hW)XDDc_DupPgJIE*;k@Eap[Bfb@C]Uc!i&cjL^?o%F#HT-ENlu$Ya(EP<!,DkS.rt + 2K7oCukjTANpI(+'sZCUPHj9+Wkpb'_K""O$'O:S.Hi4CLtiJqc"GRL=(i4G&:EG`S1>9H' + 3?O3*=%hAD#3XEGJ%.rr&+Wj5W_&%q)(Mpn)>9IJ[?S!8XArLMhJQ*5/nS!B+\6]D2%DeAt + (2mbqK'RQ0PRr4FYdfl'*o6rI+SZRXD^PW,nq!SB^0I&m=LO6F[m1Q/?TO_KX^XX2=<#)C& + c;A>EQAC96La*$`E,th@7(]1"2U<>c*r969ji)H?Y7umC8R%$9jfg]?ZItfI6>.G&gR2Bit + 61?p])M"&A_ELj8:`Ra9N>#pkm/8iL$5Q2Dft"#ei@*GmcPOChNmn&U^E/g.;AcR_UZ]?SR + L_d_LSaYQVdD%i;=DN^H"7#f0S?2PZfWnGu&93eFO`NqoY`6PGhWnC>Jc=fLAA&'Q3l.cUh + QC=pl9Ae9@/EQh2bLOA$$"CD79UR[3h%f$+@f)j"jjEM+A+S_D`R%G@^Hl.q&CEko:FA\mT + +WlF`p_mRT-Q+g!@5`_@QQ2%]CZ@9'R#Kth-7`/>;rtHJ6U&^_n28-pB2'B:@4[#6,p)!IM + *jH87IW1"c"(GrChU[Z"CGM0G1OGP+!r3,3b,J%3pp1%JI'!Hq!e*Z\8)--+o'dOdY66@a] + k-ei#@3gc>%BflbFnOh[$lS[0l>*J5HTd.2_1p`bS[1#f/G(2^g&n,Tl.kpa.0[$$"%A.1! + XjZ?Uhf!0_dIK&E+FMd_&9gpI,,&:=S"k<]4inmMNMDkq34^B/U25^rpo:t[tG?&lN4TKRm + F/De-IJIP=eNo1j-/!%ft1*#kY21fa'Y$>(h%8H&Fi#@\.c/j0Z$i2(B+SeYbabR;15$6$9 + N^Gue7IUo0QKD(=nt@@]O'0,R[01\*5Xtr!o=.G7#nHdX&&H;/%!EEHO:U^iHn<;1abt,i! + d$g!YnY;eKFLZ>L#?H$P.q9XI-?7A@jR:f*Hs)#,6T*FOSnG87/t.)lpC3((jl&dR,gUN"< + XZfq$X]J!I>m`=<5Lj^a(!_+S]%Hae-UY#9"`[=;u29cJsusjUlkc_]:g[\8),F,PXfiqsr + q>)A^gln<"'@5:`?t5#b#@Och8Y5E"-tTJ1tY<98pRXW4id!U:m(86Jurkh+%/LUU(p_+,D + 7r[],I6;7S)Bd*:.393Fu"<V@;,0^uFnt@1XO0k&I3&WUe*eFn1\7-hG%8EdUi562YndF*s + KQ7>^/7L3GJ;`ul(kN:!=P/Jji@Pa1n6m?Z047-\.O"T.":I9p"o0//TaHC4bj^/t2Dh*9J + r`U1Yeu2B'LD5N3Kh^C-Bpdb@0`C\ZCqR.&:E,^KcRmJ%f$]afHcBQ\*J9`$b6jsfS36eY@ + 0_7"<TP]\cjuK+Z"]\4([LlJ'-s!>KD`\_d:!&bF>u&(;Yd^Gk[MZ[u_<?L]'b-9DOY^_1r + \_hob,D%iGt,3.b!kLO@0ui56_XcZQa(#LXdjE/a>/B<D?Y&:?IYpoXI!juSS1_2"55+6>< + 1JP6>5SAe`g6U%;3nDQ4Q0A,7.>=aD)_f<]RQ-YG)O9ECT$^g66f7=>95$X4[HLdKi5QV'1 + mP'*m_br\:,PZ59nLL&5[K+\\529ZE.%d>`#Y+=B-IY2+bJ"I>,5?,BnT,^'>C\sA+"h'+, + Pn#4bXM$[3n*7Qm-?nNJe.Sn5M+!jrD*EJ,5;]mbOE&;!HT9;5k#qOnQ2_Ff7Ef)4p3V>eQ + ^nJK'N\+KOM#.qO[a]6gu7\l%aX=d=f+;5"&k_6h91[Je,+[TBku0/@^Mo6T!Z;')bT+`ZY + $fNq]cFlbFMD*tg:+OO%/:mND:dK'<ea\P`lS+S_%NnT,^?q/@CkLFc,klS-J:is7j0@JjA + c;*LL=n0&CmQgtO81!598#X5%nqB_Tc[K%ZeI)s;%LUYKMi#I=ZfpMcd>?3T>(kN:oR/ZT@ + 'hpZ@i'TiN5J/<<E!4"4Pd4"jb%HqL#7u:(anV@r)<Jbb"<Xp)rfGH,53tc.+YVjdq:rCYH + P(WrN/+kf+*Jk'O;`0\T&.=J"<V[Ei@RiD@2je/fbshP/Jmch/d*9eb;FaO_^HV8+S\b5%r + VjHF%JPN7e!)Sj$/=<dp(ITi'Rsn?^k<9dp$@Ai'S5!np0sF)'\iP"rj!7>bd.7&:>mZLUR + HRBHdN]+%fs/Z[a&j=@VeR((U-D/F:/%Je-E$n@!k$*EY\uTc>sIj%)A^8+<2p%f(,2BHg^ + b+"C_eEs=^p8.WOlR^b_+#!88E#Jl1qf[--SnrYtb%qW#>3K(:mUl+(t@6D2nO\bP1)M/Kb + Z(X19g[^I>Je,8/aIgGp[n$P9LZ6t5S3uk0'Z#Rq398EEj]`urn=`#Uq=Ak,(2G,hciG)So + 12'r5k(J&*7:UJ#0Foc#X1)-c%b@CP)iTSHt\.f[gP_j&gI+t#HqQA8+McB_1tcFjBkFJYl + _as?9%"Q8+Nnn_1uX.3TOO;o!&>6LNYZ<01,67#f2:FGR\GnFkj6SGm#3Mii\!S\3(XM#X5 + W6+b'f]Nu8'BRc:K(-28r*5"G+90CE"GMWBEJ6Y!c`[1(/9*PmNN\8,M5[PZ5un=_]Lq9+n + JP7`1UN^Nedl`rtZ1P$qW+1gL8KbZT/Ru6,kJ%UND!fQkd,5<hlY@/`mb)V#Y5)bTH>\Blq + LA@\ipb5&nL\q;G)<REBi568a[?([92[[BV0t;!B+eIR0K]'`j]S;\J5/VbH&:Bju],"G`B + "f,g50UkeIh`C`9gJ2V)@lSD@$n,^Je-m\f>;8>k3J&c_a*"bYUYD'=sNer;&4rb<AE1S(r + :uq\8,L^9QkMHn6m^t<*K_l4*i+G0G\jaXG+cVNX.hm`G8RkA$VjMJe+(8)V3X5F#`;tL#B + j^*:f;$ZD/.d&&WD.:M(WfHu0FBQnF<KY`dt4Y7#pmn27<.39G"-huhcBO:mTLl6H)>kI>: + N2&u3f8+;'IgpN6,>^#^=7dtt3gpN4^maG,P_$B*Wa\N@=43AcB^]G#AWT%qU2%b4D&\a!b + 1.F>4,5Ar_gpN6TI%K8rL>W/,nJYFH)""8Uhuh/Af0VOho4Yj!#X5HoL]"N`[A+.^%j\sBY + gUF&7h#SC8;%GsFRac1"V?&(0fCl;`].=K"<U_L)k-#$S1cgQ&$1YD[hc'?q=5a)_!9S![" + NM7X9_"o((U/kE-8mZ#X5IN2Dd#FZ5r`PHlr_*q3L,RF3^*Z_$?._ODc/?RPH&]5]U[SAg! + ^IZD9eUJQ1_")HJ1u^)RDBO;^#61W/(0":.2Q+s,TQMWTgdn:?hon2=dhP9gpZ#?&SchZbo + E*.e]sK1!?n\8OkKJe+Z2%8D2Nb@NusI0:W_'6>1`jQH%Ef4>(,86[]>q0$2Vj!oWkUlQ$/ + g*f1P\$FdUn,Y'7!2?#$m^Rr.".&HGen,oo>sRl[Mn!*6DY[P8lnF#%=N:"pp05R'ha%AeY + `=LJ:10gb(kN9/Jqph\aQL5f-P1YJ1H`<m8flG%]+KE56bI^1SG^#>U2M9.%qLWI*@ESi[h + $:[1<7::LTTT@kdDW/J/rZ$^=2Xo3U(16hugF/i^PdAE2dki#X2W0*o=IPT3&A#,PZe+=NY + h\IP-s@=@)EW)faP_Hh:UsbUG(o]VE!HUpTc#O2piW7E,#%WiE]dO4VDMW]oj40.mgfd2dE + S]YmWgRB\^.HukJ/"#e<]ORFOH<]8PGDCYWPC$A[EG:P/CWcia`eCMXgI3]@`dsXD\kua:U + ^$-eo&(lccS@^>%SQtJB)[_M<=LuImJ&T<*s8%!-rqZh+CZ*Fin>5?QUFAtJ_$B>G:&+jHR + ."kD<*]8W:W5Qco'Y=8s72:;=&1dgSIh@a[1Rf%DX?ZpiF);!$B$immCPH[*rFWSonO"^:A + 9FFN/DM^,m5<o+."R8@`q_8YGe8@;dNU4;chl7%u):UC!iW_$c*&f^g'C&po8d(BDpU[?i' + &94*EddbNF8(1]:B$T?:\thuf!I.:90!CYZ)*rq:j>joZ._rn14'*Bb-`I8"a:>t"/_LG7< + l/jF9'K;YrLCh?/ci9u[c]D3j4Je'hp\W04i'Q;jf\c8A'+7FVAn=%1Q?\72<c=()#>oR]6 + g#C[c=mb$li8DdOZuhgf?-U>,>7l7u8\Bi?[+-D9JhPL$2`)sE\fq`6^er<uS.Mn%GBW?.S + NQHn1qqDkGM1IX&&AJj`qQ]R138c=^9`.3^),5"r!L^=_u>narjn-J"--k[1BTRaiLXsNY] + KQbp1I_-'omD.KSQs\X""8U+)i9BSTJ_9RG$rteimSnk*PVGSa(XZOR*X.^^]YrUu^*iZL: + !Pki5Ii4.c90)I%jW0>4(VOGD`rmbg1iX1RK=HXk+l4o8Q-^%9FRJ+Vg4rZQ\3kn8BZ-!>U + +CRL0+h!<Y-b?OkVkftj5g_T5_7l=Q0,kun*f[lOriJu?)5PXG<p'X+2-e!+1].Yq@e!PpK + ""l?TPeUYh5elKt+jhH/;fc/UmslJBI=`!>b.tR5`]NVe:1a*i"/<](Tu2H1kJKYs9!@gtI + )'%MN:JoV@EZ*/IS@H^I:aDrJRD:Ri2Dgt-hr5H[%H[>;R0<Ad7nqUNjbPd?+`:oe;0aT"7 + FW[7<:hDG-eg3JQH;lf%f!9eJhQLaA;:+!Ap;3giE.uG5QURZ_Go!<b'=X@/#BEi3:.\G6p + GUKH@TSbRJJY[oP7Y7uqkcmCP>7/D]K/#sKJfdT<HnQJV*eI<&%6a#^fW^H+%oag%Jr"2^u + ratLEn)\;r3(Rf3t\=r.XCS7FQe/+-5a+]NM#sKJ.Y!T&a>OVMcV3gG+/Io625C**1kgbTD + =%D&9q[e-?,S`fE\!1^bZ+IG1F<pP0lp'(Xg!t0&eVfQ`kid\PkC8'oLaDRlrq\^j[f+Uec + \_(`EI:8[""/\u]6el$q?LJZ#)nMooksj6*tU"o^:DPc418t/k"m]C?aKcG>G/YSGe33W:N + (0$s1lG3_4bOaA9;W3om\>3pjdT%NUf$`\TPs\I<rXRX.dPqjqb_hhqAjp*cj(R%%c`fjBP + L)WrsN+5aDPp^SSld6Wq)C-hr3+6pA;tq9/O"A>e8a"<W_ZL_m>IcO=b\G6ffEpjbK^9`E7 + G=_@>=+o$R]>Zo^i^$L)1hY32spqV:\+-;DUf4]'3e$F*k^$+fJ'S6id`hB<>\&KdTU4WQQ + #X0@OS!/>CM.c#.(Ibe;&g6t"K^?9fiU^VB*b2Mto*@N&V+dN<`qM'u9^Aqd_$B%cQ".5pL + %,`bfAL$_Je,rF_KTpV^07f==/)_sBb>_X?Kia8epFm2KnHcFHpD9m4h\OOb760ai?1.4&' + /VTjO8FNJ`$X9>NJfHTANiJ'0\m>F:`gbI`lplDr/-D2s5L_NSjmg=?,EG0A4>cQ`u;("%p + YWa^9OqBBS-(U721;&UZhI7HHCDh*06"JDphu+M!K')ZQ']j0&&3M(T!s7dpG('pM]WK\fs + EXK,3?1S?FR%nJ.IUp@.MqTTaE3_;N:,5?\1^@9KJ>n\_m5A)r(3ZCm1_$=M6?WQR+]P?cq + >Wj5k*)I<b#@p\2?5pPC/G?D&*tt1TW/0@6'$)N(DRbp7lfSZs(EF$bLYr8dV/`^eq8`iX# + K046?r-?U!J1i<@J+#(nmNEP#@&'0fO)k0octVn,PZeiDVJ$4HIA\CPC00]hug,2Y,i-[%l + h[d;[>SFL7H\,h\@MJ:\'W/Je'hX]r*3=n`*c8O3A2`^e$s0$*QU8_B<dS+pii33$c,3b-k + TGe-pJU%LV8dn,WdTQ[/O,=(=HFb2p`I"2P4Y[`OOgW[o+N'.I#u_$=cj?bCJpAA<H]q=ZC + @61=o%`(0O)$Z>p5nPHRUZ9V"b+37]7b?i-.IT;TF,TeNKHlt3KA_t54keOAYe^l"V/s$RZ + #HV.uW=?$0nQE]*_ad/i"d1&(J2Nh=CYa<5b,X\sS*7^S.Kgha?VuOPAXq8_*Y@-E8;,n'k + p`dXj<I[mj'=2e+S\4EZ:h3f]^jK",Mc(g6N]=[Hls_\>PA7i7Ann?CV<5+VZnn!pcqaQAR + =Qg2g3bO\5dWe+<J?(el:SIAbL#/NjO_i%7DH9^oF2:ZaYJJ\#(DF5XHDPd]_>.0ZrukUCh + l]"U3b^Z>>[S(CWe&JL+S!-D;R24MN`h_$:ao?_A.)@ol&nLb93k+S`a2ilZRk5<paM8.YG + B)i3DS=a**aFBN^:>rUH_AB-Y4+(eID[KKf.%gH1c1^h-T\[#fD:6k]GRHtcEi585KV-a0@ + U2qge-9EOtpb:#T3Bp+a%$M]A&:Bj6S#^OF`QjJe#X6I0T\7jTG%.ae"G..?goU$_#r]?L_ + .6&["<[Khq.^mRNV.><Nnt%*oVTps`hgIc^>9,ZoOZZl#r^b0Y;(V>/XcM<D8u?/QF7&_[) + 4t*R2bPPX62Mfps;WaqO\^n`:O&MI/OV(BO_-[p@]Eh3@m3fYSY-2(,fn,SLPe[39KO\i'V + e0I&BSmiNq=NTFZVbQ"=h3@FLn5,jK7s_J[(?#X24Q_eo+M)=Mo@FK/^RJe&T5i6G!)7D!h + sX$2+GeJ.P$<X_GZl6H(#85;`V_gpt=R>fORiWq^^;,HEJ%uUo=hMcWa[A,@+%g<Z4f*3Tk + QO\)6#.QX"<<OD,/$<F+?94$g'LhL7YP@,=<RGYN@TU,XmAPfu6Vb*SYcj7KEMPKUf]a%i0 + VjK^6TXaC*2Y\fQt0,o/Hd.nfi28k(_`GpUgYIk,@#@&I)mKnI^&!p.Kth)"[n+SW?M%u_$ + 3[E9D0hSm6)r1AOlj<LLAd]Q1Z-`2)$$@Mp<3'+nuTsI^&#$ZeCcfids&0&U]DN_-Td`Oj5 + <$;8_Z)52:A2GP@[G'qH[2A1H$L.p9/%pi'5.Bf2qNg1.Q9.tS;@A=$9H"aPCE&@(B,Loq[ + t+S]nC&arYdB0$r?=&UjW*tI&hWUX=-h&ZhW*,65E3%RDciLGM*C+dI[hJb.:iC\a\_\"nF + ?"1VuG:uL=i59`WQ$'oYU)O3FN:e4SN]$>453u6J?K7*(D@>M^0u/CTBETD8q>C1UCV;:1. + ?GLlRXu-!A1i>6VtERi%rhasprH"=og>Ge!l^,3f"m>-64eNH'lQ5Cp98.DY_N[9pCVeK0D + D&n%s7<S&nG[_T7al$#X6\B^9!3_9A!i+d`#-i(D2%jWlW(HQZ,4^!\=+b+o"S/CH-:_e6l + (AkS>(fi+#J#\,Pm-/j<;;kDf0?Gq[?T"<X\c/hX?t0uAL"VMEI)1#6g^_8f.ej%j9t^)eI + l1>Qp]_8g#qRictIfV%H#Go1FHJDD5Y&:D\N.ebiCZZ$4B0[b.H_+/n1Z9H?^=ib3$.!1&" + ZYW)"NE0.^<>XS>"NY@>g=u$/SOn5@Hpc_sFk9P>83Kp;oPHtbNAGXU%u^E)#1>7aFIr"tj + p8[eij3q83)J1JZnHZ+F>DB9n4f!C>jg^Y/@7)Lmdc:]VRd&IhJOrmpm4MI-:Rrr!d9GiT? + HjY+o%MK.?;_mG_HL9RN1V[?r9-o"CF6EV3SI&&;PSqDgIeGIX2:651\W_]q;rZL(@.t/Ct + *O*bTsM70Hs"GpO3^qEUF+/Rb[3;88TI2H)m1<CZ5("d;<%SIBbo7du[BGjg93%X,-U%kKL + pcuXeO\Z6qL9$&OU<7Uhs]I+)g@6>1fi!leV#eh2a94ru<m+q^kUA>0-I(A@a*9k(<]`G2O + \_(u_M!2uRK]($fh-KbTrVY$Af6JDFA83=f1m]5S3.`fM]_I>tJ]/SDAs:V]GJO!%I=a,-_ + NL>79gnVL"e`3diCi?0*]<_s:[j&f./ESS2(os8jW[@52:KJ%SdmP(qZL8Z]]-4(DdD]pcf + >9AAGgIT=2;2.I=gp^]]-+ZjF,a3NYePm8PBQcGIO&__*5\Z?=A\gP4LdYY?:MESnJ^A@i# + ](Vp(-;K"NW<W*sFcTNC_6&&G_Tett*M]CN3fhl2Oc7/uBQ@*(eng_4MQF+]\7gE:[,0<_C + TpN)c.F>5okH0oE<X(L264SYQJfLJ-tG9?_#B/B</ro(kXIe^f&rV3;jDl3P?gltl>=rnd1 + #=B`1Iqo+)b3XE2-b@ecaX$X's3(H5hLG:N)eQeFf7)nDroYZWr?XWBq^$^iD)][cgH4<i7 + t:5^5&'u1P/HjJ8j&Bh2=\i\MA0H[CKE-C\kX[RcBd#=J+A*e_6;\!dVjNkj/N%sJ,b)W9^ + k]n]]8bdoP^NcmE\58hB*.p7K94e+P&r&TXUuXYA3ha"olS,H1tMUV`K"Ls8A"Sp5AkAn#l + @WbT?J-n'BJ^pBA/Cgj[SY++/0+h+OrA)&O1g)[q7=VFQCop7CM^<GeQ[rSW2%^V,!=;VuH + 2++,R6YO^*8,l'mgIe/1mEc"DG\SHRpe)1ak=g.pgR`XMZs7t-arJD$Zdgc;SrkmKRL\gC0 + 6iEp$:&_33r)]rt:+E=6$`0GP7iqR'dtcZ&>i`JA!#_1E*?+/-#mTI^p7rZ*O/*KT,c1LaH + W0fAljS>L;+^*_?T!1d%n3?`s7QGcV<RM`jL+Sl3f^U=\C0V<n8J(tC]#*CH<6!=M"T]hh- + =4]NG[S1jo*.s%>P&AY?`ID!*hE:4ETi<T$n]s/[?AnSI5?*mp#IOprpln!,m/[4+?5!hYE + 0He"Y?DT2g-jSY_n_roo3!f04Q&hf1Q%AO?#RBE2.FEdW*cg_]5c#$OH%ba_i*s35Jsn'D% + !mr&'aa8Ydbn,N.*Er?fTr=]-Ml/26<p]'?qk24nhoS<JDqqf#"]Y>ZcH%e[5V.Ja'Q.7b" + FU^NaYWEPUE[M_)F\Ie.EVWN4Kl^P9j0,sTpW4QQ^\.T@?1N=/5Q'2tc2>'LIH"VmIkCYhh + Yr'F=8WN"q5aPnlZ7RO`i=OYeim6oi+idDSI](=71t,_VQUG9M1f4FSa?cU37cgCm(/8.i4 + n=N+'\OW5PrKZfCOJNi@j\gIs_._Gj>V'X/N,Rjn8Vcp/go?`i=L!4+&J<(Am"IE67Res+[ + YMs&f>PX/776UI10%r>.f`\k\f45M#+<[dONQ[G\g_K?LIDaXJbl]VDtrpRR5"?g<WK]XFu + Wr]-US3=sAZ-lhqcs6K,f>3#YKnN@s<p](m*6XX^UH=cU=JT1XChO_&ZS\^?[@r6(3s5E,4 + ?Mup6fCjLIY?^2pO"U4d^W,[:kteeGE5PoZqP!lbJ+[&O_b4u$M`eQ6KrVn%=m>Eo0DspUe + g1%VMg96R4iuR^!2bZS^T$JZ6\c/c)"U)<Zh="acTW@n@$/&!qtIR:9_X5?HQQPbDtrhpB< + H/EE!tA)YQ&n;^Q\\)bN'"*!5K3VBa4SN+%l6NI,K>!'.iGH@?M3e!5K`eru]_GKk:~> +Q +Q Q +showpage +%%Trailer +end restore +%%EOF diff --git a/figures/Schmidt2018_dyn/Fig8_alluvial_struct_sim.eps b/figures/Schmidt2018_dyn/Fig8_alluvial_struct_sim.eps new file mode 100644 index 0000000000000000000000000000000000000000..a6705ea7a335dbc64c0b90e60bf05ac48c91313f --- /dev/null +++ b/figures/Schmidt2018_dyn/Fig8_alluvial_struct_sim.eps @@ -0,0 +1,705 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.14.6 (http://cairographics.org) +%%CreationDate: Thu Jul 27 13:08:13 2017 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 0 -1 598 403 +%%EndComments +%%BeginProlog +save +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/pdfmark where { pop globaldict /?pdfmark /exec load put } + { globaldict begin /?pdfmark /pop load def /pdfmark + /cleartomark load def end } ifelse +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +%%EndProlog +%%BeginSetup +%%BeginResource: font DejaVuSans +11 dict begin +/FontType 42 def +/FontName /DejaVuSans def +/PaintType 0 def +/FontMatrix [ 1 0 0 1 0 0 ] def +/FontBBox [ 0 0 0 0 ] def +/Encoding 256 array def +0 1 255 { Encoding exch /.notdef put } for +Encoding 49 /one put +Encoding 50 /two put +Encoding 51 /three put +Encoding 52 /four put +Encoding 54 /six put +Encoding 55 /seven put +Encoding 65 /A put +Encoding 67 /C put +Encoding 68 /D put +Encoding 69 /E put +Encoding 70 /F put +Encoding 72 /H put +Encoding 73 /I put +Encoding 76 /L put +Encoding 77 /M put +Encoding 79 /O put +Encoding 80 /P put +Encoding 83 /S put +Encoding 84 /T put +Encoding 86 /V put +Encoding 97 /a put +Encoding 100 /d put +Encoding 108 /l put +Encoding 112 /p put +Encoding 116 /t put +Encoding 118 /v put +/CharStrings 27 dict dup begin +/.notdef 0 def +/F 1 def +/E 2 def +/four 3 def +/six 4 def +/M 5 def +/S 6 def +/T 7 def +/d 8 def +/P 9 def +/p 10 def +/a 11 def +/V 12 def +/t 13 def +/I 14 def +/l 15 def +/three 16 def +/A 17 def +/O 18 def +/D 19 def +/L 20 def +/seven 21 def +/one 22 def +/two 23 def +/v 24 def +/C 25 def +/H 26 def +end readonly def +/sfnts [ +<0001000000090080000300106376742000691d3900001198000001fe6670676d7134766a0000 +1398000000ab676c7966918e5f770000009c000010fc686561640d1447cc0000144400000036 +686865610d9f07880000147c00000024686d747885aa0ebe000014a00000006c6c6f63610000 +e9ec0000150c000000706d617870048806710000157c00000020707265703b07f1000000159c +0000056800020066fe96046605a400030007001a400c04fb0006fb0108057f0204002fc4d4ec +310010d4ecd4ec301311211125211121660400fc73031bfce5fe96070ef8f2720629000100c9 +0000042305d50009002940120695040295008104ad08050107031c00040a10fcec32d4c43100 +2fecf4ec10ee30b20f0b01015d13211521112115211123c9035afd700250fdb0ca05d5aafe48 +aafd3700000100c90000048b05d5000b002e401506950402950081089504ad0a05010907031c +00040c10fcec32d4c4c431002fececf4ec10ee30b21f0d01015d132115211121152111211521 +c903b0fd1a02c7fd3902f8fc3e05d5aafe46aafde3aa000000020064000004a405d50002000d +0081401d010d030d0003030d4200030b07a00501038109010c0a001c0608040c0e10dc4bb00b +544bb00d545b58b9000cffc03859d43cc4ec32113931002fe4d43cec321239304b5358071004 +c9071005c9592201402a0b002a0048005900690077008a000716012b0026012b0336014e014f +0c4f0d5601660175017a0385010d5d005d09012103331133152311231121350306fe0201fe35 +fed5d5c9fd5e0525fce303cdfc33a8fea00160c300000002008fffe3049605f0000b00240058 +40241306000d860c00a01606a01c16a510a00c8922911c8c250c22091c191e131c03211f1b25 +10fcececf4ece4310010e4f4e4fce410ee10ee10ee111239304014cb00cb01cd02cd03cd04cb +05cb0607a41eb21e025d015d01220615141633323635342601152e01232202033e0133320015 +140023200011100021321602a4889f9f88889f9f01094c9b4cc8d30f3bb26be10105fef0e2fe +fdfeee0150011b4c9b033bbaa2a1bbbba1a2ba0279b82426fef2feef575dfeefebe6feea018d +0179016201a51e000000000100c90000061f05d5000c00bf4034031107080702110102080807 +02110302090a0901110a0a09420a070203080300af080b050908030201050a061c043e0a1c00 +040d10fcecfcec11173931002f3cc4ec32111739304b5358071005ed071008ed071008ed0710 +05ed5922b2700e01015d405603070f080f09020a15021407130a260226072007260a200a3407 +350a69027c027b07790a80028207820a90021604010b0313011b0323012c032708280934013c +035608590965086a097608790981018d0395019b03145d005d13210901211123110123011123 +c9012d017d017f012dc5fe7fcbfe7fc405d5fc0803f8fa2b051ffc000400fae1000000010087 +ffe304a205f00027007e403c0d0c020e0b021e1f1e080902070a021f1f1e420a0b1e1f041501 +0015a11494189511049500942591118c281e0a0b1f1b0700221b190e2d071914222810dcc4ec +fcece4111239393939310010e4f4e4ec10eef6ee10c6111739304b535807100eed1117390710 +0eed1117395922b20f2901015db61f292f294f29035d01152e012322061514161f011e011514 +0421222627351e013332363534262f012e01353424333216044873cc5fa5b377a67ae2d7fedd +fee76aef807bec72adbc879a7be2ca0117f569da05a4c53736807663651f192bd9b6d9e0302f +d04546887e6e7c1f182dc0abc6e426000001fffa000004e905d50007004a400e060295008104 +0140031c0040050810d4e4fce431002ff4ec3230014bb00a5458bd00080040000100080008ff +c03811373859401300091f00100110021f071009400970099f09095d03211521112311210604 +effdeecbfdee05d5aafad5052b0000020071ffe3045a06140010001c003840191ab9000e14b9 +05088c0eb801970317040008024711120b451d10fcecf4ec323231002fece4f4c4ec10c4ee30 +b6601e801ea01e03015d0111331123350e012322021110003332160114163332363534262322 +0603a2b8b83ab17ccbff00ffcb7cb1fdc7a79292a8a89292a703b6025ef9eca8646101440108 +0108014461fe15cbe7e7cbcbe7e7000200c90000048d05d500080013003a4018019510009509 +8112100a0802040005190d3f11001c09041410fcec32fcec11173931002ff4ecd4ec30400b0f +151f153f155f15af1505015d011133323635342623252132041514042b0111230193fe8d9a9a +8dfe3801c8fb0101fefffbfeca052ffdcf92878692a6e3dbdde2fda8000200bafe5604a4047b +0010001c003e401b1ab9000e14b90508b80e8c01bd03bc1d11120b471704000802461d10fcec +3232f4ec310010e4e4e4f4c4ec10c4ee304009601e801ea01ee01e04015d2511231133153e01 +3332001110022322260134262322061514163332360173b9b93ab17bcc00ffffcc7bb10238a7 +9292a7a79292a7a8fdae060aaa6461febcfef8fef8febc6101ebcbe7e7cbcbe7e70000000002 +007bffe3042d047b000a002500bc4027191f0b17090e00a91706b90e1120861fba1cb923b811 +8c170c001703180d09080b1f030814452610fcecccd4ec323211393931002fc4e4f4fcf4ec10 +c6ee10ee11391139123930406e301d301e301f3020302130223f27401d401e401f4020402140 +22501d501e501f50205021502250277027851d871e871f8720872185229027a027f0271e301e +301f30203021401e401f40204021501e501f50205021601e601f60206021701e701f70207021 +801e801f80208021185d015d0122061514163332363d01371123350e01232226353436332135 +342623220607353e0133321602bedfac816f99b9b8b83fbc88accbfdfb0102a79760b65465be +5af3f00233667b6273d9b4294cfd81aa6661c1a2bdc0127f8b2e2eaa2727fc00000100100000 +056805d5000600b7402704110506050311020306060503110403000100021101010042030401 +af0006040302000505010710d4c4173931002fec3239304b5358071005ed071008ed071008ed +071005ed5922b2500801015d406200032a03470447055a037d03830307060007020804090615 +0114021a041a052a002601260229042905250620083800330133023c043c0537064800450145 +02490449054706590056066602690469057a0076017602790479057506800898009706295d00 +5d21013309013301024afdc6d301d901dad2fdc705d5fb1704e9fa2b00010037000002f2059e +0013003840190e05080f03a9001101bc08870a0b08090204000810120e461410fc3cc4fc3cc4 +32393931002fecf43cc4ec3211393930b2af1501015d01112115211114163b01152322263511 +233533110177017bfe854b73bdbdd5a28787059efec28ffda0894e9a9fd202608f013e000000 +000100c90000019305d50003002eb700af02011c00040410fc4bb0105458b9000000403859ec +31002fec3001400d30054005500560058f059f05065d13331123c9caca05d5fa2b00000100c1 +00000179061400030022b7009702010800460410fcec31002fec30400d100540055005600570 +05f00506015d13331123c1b8b80614f9ec000001009cffe3047305f000280070402e0015130a +86091f862013a0150da00993061ca020932391068c15a329161c13000314191c2620101c0314 +1f09062910fc4bb016544bb014545b58b90009ffc03859c4c4d4ecf4ec11173939310010ece4 +f4e4ec10e6ee10ee10ee10ee11123930014009641e611f6120642104005d011e011514042122 +2627351e013332363534262b013533323635342623220607353e01333204151406033f91a3fe +d0fee85ec76a54c86dbec7b9a5aeb6959ea39853be7273c959e6010c8e03251fc490ddf22525 +c33132968f8495a67770737b2426b42020d1b27cab00000200100000056805d50002000a00c2 +404100110100040504021105050401110a030a0011020003030a071105040611050504091103 +0a08110a030a4200030795010381090509080706040302010009050a0b10d4c4173931002f3c +e4d4ec1239304b5358071005ed0705ed071005ed0705ed071008ed071005ed071005ed071008 +ed5922b2200c01015d40420f010f020f070f080f005800760070008c00090701080206030904 +1601190256015802500c67016802780176027c0372047707780887018802800c980299039604 +175d005d090121013301230321032302bcfeee0225fe7be50239d288fd5f88d5050efd1903ae +fa2b017ffe81000000020073ffe305d905f0000b00170023401306951200950c91128c180919 +0f33031915101810fcecfcec310010e4f4ec10ee300122001110003332001110002720001110 +002120001110000327dcfefd0103dcdc0101feffdc013a0178fe88fec6fec5fe870179054cfe +b8fee5fee6feb80148011a011b0148a4fe5bfe9efe9ffe5b01a40162016201a50000000200c9 +000005b005d500080011002e4015009509810195100802100a0005190d32001c09041210fcec +f4ec113939393931002fecf4ec30b2601301015d011133200011100021252120001110002901 +0193f40135011ffee1fecbfe42019f01b20196fe68fe50fe61052ffb770118012e012c0117a6 +fe97fe80fe7efe960000000100c90000046a05d500050025400c0295008104011c033a000406 +10fcecec31002fe4ec304009300750078003800404015d133311211521c9ca02d7fc5f05d5fa +d5aa000100a80000046805d5000600634018051102030203110405044205a000810305030104 +0100060710fcccc411393931002ff4ec304b5358071005ed071005ed5922014bb0165458bd00 +070040000100070007ffc03811373859401258020106031a05390548056703b000b006075d00 +5d13211501230121a803c0fde2d301fefd3305d556fa81052b000000000100e10000045a05d5 +000a004040154203a00402a005810700a009081f061c03001f010b10d44bb00f5458b9000100 +403859ecc4fcec31002fec32f4ecd4ec304b5358592201b40f030f04025d3721110535253311 +211521fe014afe990165ca014afca4aa047348b848fad5aa0000000100960000044a05f0001c +009e4027191a1b03181c11050400110505044210a111940da014910400a00200100a02010a1c +171003061d10fc4bb015544bb016545b4bb014545b58b90003ffc03859c4d4ecc0c011123931 +002fec32f4ecf4ec304b5358071005ed0705ed01b01c1011173959220140325504560556077a +047a05761b87190704000419041a041b051c74007606751a731b741c82008619821a821b821c +a800a81b115d005d25211521353600373e0135342623220607353e0133320415140607060001 +8902c1fc4c73018d33614da7865fd3787ad458e80114455b19fef4aaaaaa7701913a6d974977 +964243cc3132e8c25ca5701dfeeb00000001003d0000047f0460000600fb4027031104050402 +11010205050402110302060006011100000642020300bf0506050302010504000710d44bb00a +5458b90000004038594bb014544bb015545b58b90000ffc03859c4173931002fec3239304b53 +58071005ed071008ed071008ed071005ed592201408e48026a027b027f02860280029102a402 +080600060109030904150015011a031a0426002601290329042008350035013a033a04300846 +0046014903490446054806400856005601590359045008660066016903690467056806600875 +0074017b037b0475057a068500850189038904890586069600960197029a03980498059706a8 +05a706b008c008df08ff083e5d005d133309013301233dc3015e015ec3fe5cfa0460fc5403ac +fba0000000010073ffe3052705f000190036401a0da10eae0a951101a100ae04951791118c1a +07190d003014101a10fcec32ec310010e4f4ecf4ec10eef6ee30b40f1b1f1b02015d01152e01 +23200011100021323637150e01232000111000213216052766e782ff00fef00110010082e766 +6aed84feadfe7a0186015386ed0562d55f5efec7fed8fed9fec75e5fd34848019f0167016801 +9f470000000100c90000053b05d5000b002c4014089502ad0400810a0607031c053809011c00 +040c10fcec32fcec3231002f3ce432fcec30b2500d01015d133311211133112311211123c9ca +02decacafd22ca05d5fd9c0264fa2b02c7fd3900013500b800cb00cb00c100aa009c01a600b8 +00660000007100cb00a002b20085007500b800c301cb0189022d00cb00a600f000d300aa0087 +00cb03aa0400014a003300cb000000d9050200f4015400b4009c01390114013907060400044e +04b4045204b804e704cd0037047304cd04600473013303a2055605a60556053903c5021200c9 +001f00b801df007300ba03e9033303bc0444040e00df03cd03aa00e503aa0404000000cb008f +00a4007b00b80014016f007f027b0252008f00c705cd009a009a006f00cb00cd019e01d300f0 +00ba018300d5009803040248009e01d500c100cb00f600830354027f00000333026600d300c7 +00a400cd008f009a0073040005d5010a00fe022b00a400b4009c00000062009c0000001d032d +05d505d505d505f0007f007b005400a406b80614072301d300b800cb00a601c301ec069300a0 +00d3035c037103db0185042304a80448008f0139011401390360008f05d5019a061407230666 +0179046004600460047b009c00000277046001aa00e904600762007b00c5007f027b000000b4 +025205cd006600bc00660077061000cd013b01850389008f007b0000001d00cd074a042f009c +009c0000077d006f0000006f0335006a006f007b00ae00b2002d0396008f027b00f600830354 +063705f6008f009c04e10266008f018d02f600cd03440029006604ee00730000140000960000 +b707060504030201002c2010b002254964b040515820c859212d2cb002254964b040515820c8 +59212d2c20100720b00050b00d7920b8ffff5058041b0559b0051cb0032508b0042523e120b0 +0050b00d7920b8ffff5058041b0559b0051cb0032508e12d2c4b505820b0fd454459212d2cb0 +02254560442d2c4b5358b00225b0022545445921212d2c45442d2cb00225b0022549b00525b0 +05254960b0206368208a108a233a8a10653a2d000001000000025eb8369cbaf45f0f3cf5001f +080000000000d3d94ef700000000d3d94ef7f7d6fc4c0e5909dc000000080000000100000000 +00010000076dfe1d00000efef7d6fa510e5900010000000000000000000000000000001b04cd +0066049a00c9050e00c9051700640517008f06e700c90514008704e3fffa0514007104d300c9 +051400ba04e7007b0579001003230037025c00c9023900c10517009c05790010064c00730629 +00c9047500c9051700a8051700e10517009604bc003d05960073060400c90000000000000044 +00000098000000f8000001b40000028c0000038800000480000004f000000588000006080000 +06a8000007d4000008b40000093000000978000009b400000a9c00000b9800000c2400000ca4 +00000ce800000d7400000de400000ee400001008000010a0000010fc00010000001b0354002b +0068000c000200100099000800000415021600080004b8028040fffbfe03fa1403f92503f832 +03f79603f60e03f5fe03f4fe03f32503f20e03f19603f02503ef8a4105effe03ee9603ed9603 +ecfa03ebfa03eafe03e93a03e84203e7fe03e63203e5e45305e59603e48a4105e45303e3e22f +05e3fa03e22f03e1fe03e0fe03df3203de1403dd9603dcfe03db1203da7d03d9bb03d8fe03d6 +8a4105d67d03d5d44705d57d03d44703d3d21b05d3fe03d21b03d1fe03d0fe03cffe03cefe03 +cd9603cccb1e05ccfe03cb1e03ca3203c9fe03c6851105c61c03c51603c4fe03c3fe03c2fe03 +c1fe03c0fe03bffe03befe03bdfe03bcfe03bbfe03ba1103b9862505b9fe03b8b7bb05b8fe03 +b7b65d05b7bb03b78004b6b52505b65d40ff03b64004b52503b4fe03b39603b2fe03b1fe03b0 +fe03affe03ae6403ad0e03acab2505ac6403abaa1205ab2503aa1203a98a4105a9fa03a8fe03 +a7fe03a6fe03a51203a4fe03a3a20e05a33203a20e03a16403a08a4105a096039ffe039e9d0c +059efe039d0c039c9b19059c64039b9a10059b19039a1003990a0398fe0397960d0597fe0396 +0d03958a410595960394930e05942803930e0392fa039190bb0591fe03908f5d0590bb039080 +048f8e25058f5d038f40048e25038dfe038c8b2e058cfe038b2e038a8625058a410389880b05 +891403880b03878625058764038685110586250385110384fe038382110583fe0382110381fe +0380fe037ffe0340ff7e7d7d057efe037d7d037c64037b5415057b25037afe0379fe03780e03 +770c03760a0375fe0374fa0373fa0372fa0371fa0370fe036ffe036efe036c21036bfe036a11 +42056a530369fe03687d036711420566fe0365fe0364fe0363fe0362fe03613a0360fa035e0c +035dfe035bfe035afe0359580a0559fa03580a035716190557320356fe035554150555420354 +150353011005531803521403514a130551fe03500b034ffe034e4d10054efe034d10034cfe03 +4b4a13054bfe034a4910054a1303491d0d05491003480d0347fe0346960345960344fe034302 +2d0543fa0342bb03414b0340fe033ffe033e3d12053e14033d3c0f053d12033c3b0d053c40ff +0f033b0d033afe0339fe033837140538fa033736100537140336350b05361003350b03341e03 +330d0332310b0532fe03310b03302f0b05300d032f0b032e2d09052e10032d09032c32032b2a +25052b64032a2912052a25032912032827250528410327250326250b05260f03250b0324fe03 +23fe03220f03210110052112032064031ffa031e1d0d051e64031d0d031c1142051cfe031bfa +031a42031911420519fe031864031716190517fe031601100516190315fe0314fe0313fe0312 +11420512fe0311022d05114203107d030f64030efe030d0c16050dfe030c0110050c16030bfe +030a100309fe0308022d0508fe030714030664030401100504fe03401503022d0503fe030201 +1005022d0301100300fe0301b80164858d012b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b002b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b1d00> +] def +/f-0-0 currentdict end definefont pop +%%EndResource +%%BeginResource: font DejaVuSans-Bold +11 dict begin +/FontType 42 def +/FontName /DejaVuSans-Bold def +/PaintType 0 def +/FontMatrix [ 1 0 0 1 0 0 ] def +/FontBBox [ 0 0 0 0 ] def +/Encoding 256 array def +0 1 255 { Encoding exch /.notdef put } for +Encoding 32 /space put +Encoding 43 /plus put +Encoding 68 /D put +Encoding 69 /E put +Encoding 70 /F put +Encoding 80 /P put +Encoding 86 /V put +Encoding 97 /a put +Encoding 100 /d put +Encoding 101 /e put +Encoding 105 /i put +Encoding 108 /l put +Encoding 109 /m put +Encoding 110 /n put +Encoding 111 /o put +Encoding 114 /r put +Encoding 115 /s put +Encoding 116 /t put +Encoding 117 /u put +Encoding 118 /v put +Encoding 121 /y put +/CharStrings 22 dict dup begin +/.notdef 0 def +/P 1 def +/o 2 def +/l 3 def +/y 4 def +/s 5 def +/e 6 def +/n 7 def +/r 8 def +/space 9 def +/d 10 def +/a 11 def +/D 12 def +/t 13 def +/m 14 def +/E 15 def +/v 16 def +/i 17 def +/u 18 def +/plus 19 def +/V 20 def +/F 21 def +end readonly def +/sfnts [ +<000100000009008000030010637674203eb9310800000e18000002546670676d5b026bf00000 +106c000000ac676c79662a32e3cc0000009c00000d7c686561640e2547990000111800000036 +686865610eaf07870000115000000024686d747872220a5400001174000000586c6f63610000 +9fcc000011cc0000005c6d617870065b062d0000122800000020707265707c61a2e700001248 +000007a700020066fe96046605a400030007001fbc00040126000000060126b6010805890204 +002fc4d4ec310010d4ecd4ec301311211125211121660400fc73031bfce5fe96070ef8f27206 +29000000000200bc0000058905d5000a0013003140160cae070bae008d09130d070108102d04 +0b081600031410fcec32d4ec113939393931002ff4ecd4ec30b2001501015d13212004151404 +21231121011133323635342623bc027f011d0131fecffee3fefe7f0181d5707a7a7005d5fdea +ebfdfdfa04befe5f6d64646c000000020058ffe30527047b000b0017002d401306a11200a10c +ca12981809420f4c0342153b1810fcecfcec310010e4f4ec10ee30b637133f19471303015d01 +220615141633323635342603200011100021200011100002c1777d7d77757c7c7501210145fe +bbfedffedefeb90147037baba1a1ababa1a1ab0100fec8feecfeecfec8013801140114013800 +0000000100ac0000021206140003001eb700a302010d00100410fcec31002fec304009500560 +057005800504015d13211121ac0166fe9a0614f9ec00000000010019fe4605120460000f0136 +40430f1d000f05040b0c0d030e1d050504031d040504021d0102050504021d03020f000f011d +00000f250e0a021005000a9f08da0300b3100f0e0b0908050302010904001010d44bb00a544b +b012545b4bb014545b58b9000000403859c41739310010e432f4ec113912391139304b535807 +1005ed071008ed071008ed071005ed071005ed17390708ed59220140a4000200021002100220 +0240025002650274028602800294029002a002b402b002b002b002c002c002d402d002e002e0 +0218040109030505050605070508160115051506150724052406240735003501380336063607 +390e390f450045014a034a044505450667026506860286058606880d880e970296059606990d +990ea802aa03aa04a90ea90fb501bc03b804b009b00abf0bb90db90ec802cb0dcb0ec90fd602 +e502395d005d1321090121010e012b01353332363f01190166012d01000166fe2947bd9bcf70 +5b53170a0460fd0802f8fb36bb95eb3a4b1f00000001006affe30462047b002700dc40400d0c +020e0b361e1f1e050607080905040a361f1f1e250a0b1e1f041500cc01d40414cc15d4189f11 +049f25ca1198281e0a0b1f1b0700531b520e140750224d2810fcecc4d4ece411123939393931 +0010e4f4ec10fef5ee10f5ee121739304b535807100eed11173907100eed1117395922b2080b +01015d405e0909090a090b0b0c0b0d090f05231a0c1a0d1a0e180f2c082e092e0a2e0b2e0c2e +0d292039083b093b0a3b0b3a0c3a0d4b094a0a4a0b4a0c480d770c770dba08ba09ba0aba0bba +0cba0d250e060e070e080e090e0a0d0b370d3f295f29095d005d01112e012322061514161f01 +041615140421222627111e013332363534262f012e01353436333216041773d65f66634b613f +0113befef8fefa6fed7d6be174696a496d3fefc0f4fc63da043dfef0303033352b2e0b0923a0 +abb3b42323011034343a39302f0d081ea2a5b2ac1e0000020058ffe3050a047b0014001b0043 +40210015d80109cc08d4059f0c01d7189f12ca0c981c1b150208150d0044020d0f3b1c10fcec +f4ecc4111239310010e4f4ece410fef4ee10ee3930b42f1d3f1d02015d0115211e0133323637 +110e0123200011100021200005342623220607050afcbb0d9c8c71ed7d7ffe7ffed0feaf014b +01220108013dfe9077606882100233667e7e4344feec3031013501170112013afec293667d75 +6e000000000100ac00000512047b0017003540180d0400010adb12d015ca10b30e01020d0047 +110d0d0f101810fcec32f4ec31002f3ce4f4e4ec1139393930b46019801902015d0111213511 +3426272e012322061511211121153e013332160512fe980d1015482e7080fe9a016651b66ec2 +c902aafd566f019b916e1a2327ad99fdd90460a4625dee000000000100ac000003ec047b0011 +00374016110e0906070003c00b940eca09b3070a060d0008101210fc4bb0135458b90008ffc0 +3859c4ec3231002fe4f4e4fcc4113911123930012e012322061511211121153e013332161703 +ec2f5d2f8a95fe9a016645b37d122a28032f1615b1a5fdfc0460b86e650305000002005cffe3 +050e06140010001c0038401b17a100d00e11a105d008980eca01a3031404000d02401a420b3b +1d10fcecf4ec323231002fece4f4e4ec10e4ee30b44f1e601e02015d0111211121350e012322 +0011100033321603323635342623220615141603a60168fe984ab275cffef6010acf74b3a273 +79797372797903bc0258f9eca2635c01490103010301495dfcc9a8a0a0a8a8a0a0a800000002 +0058ffe304c5047b000a0025009d402a090600191f0b00d217cf069f0ed01120cc1fcb1c9f23 +ca11980c00231703180d090d0b3d1f030d143b2610fcecc4f4ec32321139393931002fe4f4fc +f4ec10e6eef6ee39123911123930404c2f273d203d213f274d204d215d205d216e206e217e20 +7e2170278c208c219d209d21ad20ad21bd20bd2115321e301f431e401f531e501f631e601f85 +1e801f931e901fa21ea01fb21eb01f105d015d0122061514163332363d01251121350e012322 +26353424213335342623220607113e0133200402a270715b51658a0169fe9748b481aed9010f +0122d3868e73c65573e874012f010d01f84c4a444d916d2987fd81a6665dcba2c5b81c554f2e +2e01111c1def0000000200bc0000063905d500080017002e401500c0098d01c0160802160a00 +052d102e001609031810fcecfcec113939393931002fecf4ec30b2501901015d011133323635 +342623012120041716121514020706042901023d8aecf9f8edfdf501960154014d7769666669 +78feb0feb0fe6a04b2fc71eadfdee80123617465fef8a7a9fef7657461000001001b000003a4 +059e0013006d401a0e05080f03a11101b308a1000a080b09020904000d10120e541410fc4bb0 +0f544bb010545b4bb011545b4bb012545b58b9000e004038593cc4fc3cc4c412393931002fc4 +ecf43cec32113939300140183f003f1302000200030f100f1150025003501560026003095d00 +5d01112111211114163b011121222635112311331102330171fe8f3e5cb8fecdd4b1b2b2059e +fec2ff00fe254e37ff00b1d401db0100013e0000000100aa000007b4047b0025006940291b15 +1209040700200607180fdb20d02303ca1eb31c13070014120c080d0648140d12481f1b0d1d10 +2610fc4bb00f5458b9001d00403859fc3cfcecfcec3911123931002f3c3ce4f43ce4ec321139 +11391117393001400f1f2730275027702780279027af27075d013e01333216151121113e0135 +34262322060711211134262322061511211121153e0133321604ba44bb70c1cafe980101464e +666f02fe9840526770fe98016842ab6774b203a6686deee3fd5602480d1c1a776ba89ffdda02 +48ba6ba99dfdd90460a45f6070000000000100bc000004e105d5000b0030401404c006be02c0 +008d08c00a01050907031600030c10fcec32d4c4c431002fecf4ecf4ec30b6100d500d700d03 +015d132111211121112111211121bc040ffd720267fd9902a4fbdb05d5feddfeeafeddfeaafe +dd000001001f000005190460000600d34027031d040504021d0102050504021d030206000601 +1d00000625020300df0506050302010504000710d4b49f001f00025dc4173931002fec323930 +4b5358071005ed071008ed071008ed071005ed592201407c0002000210021002200230024002 +5602660280029002a002b002b002b002b002c002c002d002d002e002e002e002f002f0021905 +0002010d030a04150013011c031a04260024012b032904360034013903390430084600460149 +034904600878068701880387058806960096019903990495059a06a803b601b903245d005d13 +2109012101211f0166011701160167fe47fe770460fcfa0306fba0000000000200ac00000212 +0614000300070029400e06dd00b304a30205010d0400100810fc3cec3231002fecf4ec304009 +500960097009800904015d1321112111211121ac0166fe9a0166fe9a0460fba00614fedc0000 +000100a0ffe3050604600019003b401b0f0300010cdb14d017981001b312060200130f0d1147 +020d00101a10fcecf4ec3211123931002fe432f4e4ec1139393930b4601b801b02015d131121 +151402151416171e013332363511211121350e01232226a00168020e1116472e70800166fe9a +51b56dc2cb01b402ac705bfeed2e87771b2326ac990229fba0a2625dee00000100d9000005db +0504000b00224010000703a70901a60508040012020a060c10d43cc4fc3cc431002ff43cfc3c +c43001112115211123112135211103d1020afdf6eefdf6020a0504fdf4ecfdf4020cec020c00 +0001000a0000062705d5000600834027031d040504021d0102050504021d0002060006011d00 +000625020300c10506050302010504000710d4b48f001f00025dc4173931002fec3239304b53 +58071005ed071008ed071008ed071005ed592201402c000210022002b0020407010803170118 +03180417051f082008470047014803480445054a06570158038f08115d005d13210901210121 +0a0183018c018b0183fdd7fe3505d5fbb2044efa2b000000000100bc000004cb05d50009002b +401104c006be02c0008d08050107031600030a10fcec32d4c431002ff4ecf4ec30b6100b500b +700b03015d13211121112111211121bc040ffd720267fd99fe7f05d5feddfeeafeddfd870166 +0133016600bc00e90000013d00a200fa031f00020002006601660002000200ac015400ec00bc +006201660181048501540166016d04a400020166007f04cd0000000201330062007100000025 +04a401bc00ba00e500660181018d0548055a0166016d000000000002000200f605c301f00539 +02390058046d043d04b2048104b2016601750466048100b00466043902d1049c047b04cf047b +005801330166014c0166014c000200ac009a014a0123009a029a01440119014402cd00c10000 +0166013f019a013b05cb05cb00d500d5015000ac00ac0077020a01c701f2012f015801b20123 +00f600f6011f012f0135023501ee01e70133009800d10358050a009a008f0112009800bc00cd +00e500e500f2007304000166008f05d5022b05d500c300e100d700e50000006a01020000001d +032d05d505d505f000a8006a00ec00e1010205d506140721046602f800ec018302a602f80123 +010201020112011f031f005e03cd046004c7048900ec01bc00ba01020333031f03420333035c +0112011f05d5019a009a00e106660179046004600460047b000000ec02c302b802cd00be00dd +00d50000006a025c027b029a00dd01ae01ba01120000008501ae04600762041b009a069a0458 +00ee009a029a00d102cd019a015005cb05cb008b008b063100f6040600f0034c016004a800c1 +0000002505c101000121074a06120096014a078300a800000337007b0014000000c9010005c1 +05c105c105c101000108061d00960427039e00ec0102027d0133009800d10358017900cd0239 +0362009c009c009c009301b8009300b80073000014000326b707060504030201002c2010b002 +254964b040515820c859212d2cb002254964b040515820c859212d2c20100720b00050b00d79 +20b8ffff5058041b0559b0051cb0032508b0042523e120b00050b00d7920b8ffff5058041b05 +59b0051cb0032508e12d2c4b505820b80128454459212d2cb002254560442d2c4b5358b00225 +b0022545445921212d2c45442d2cb00225b0022549b00525b005254960b0206368208a108a23 +3a8a10653a2d0001000000025eb8518cf5005f0f3cf5001f080000000000d3d94ee800000000 +d3d94ee8f772fcae0fcd096500010008000000010000000000010000076dfe1d00001021f772 +f9320fcd00010000000000000000000000000000001604cd006605dd00bc057f005802be00ac +0537001904c3006a056d005805b200ac03f200ac02c9000005ba005c0566005806a400bc03d3 +001b085600aa057700bc0537001f02be00ac05b200a006b400d90631000a057700bc00000000 +0000004c000000c8000001540000019000000308000004600000050c000005940000060c0000 +060c000006a8000007bc00000844000008f8000009d800000a3c00000b3c00000b9000000c20 +00000c7400000d2400000d7c000100000016034e002b0078000c0002001000400008000005ed +02210008000441840280012600fe000301250011000301240121003a0005012400fa00030123 +0016000301220121003a0005012200fe00030121003a0003012000fa0003011f00bb0003011e +00640003011d00fe0003011c00190003011b001e0003011a00fe0003011900fe0003011800fe +0003011700fe0003011600fe000301150114000e0005011500fe00030114000e0003011300fe +0003011200fe0003010f010e007d0005010f00fe0003010e007d0003010d010c008c0005010d +00fe0003010d00c00004010c010b00590005010c008c0003010c00800004010b010a00260005 +010b00590003010b00400004010a00260003010900fe0003010800fe00030107000c00030107 +008000040106b2972e054113010600fa0003010500fa0003010400fe00030103001900030102 +00fa0003010100fa0003010040ff7d03ff3e03fefe03fcfb2c05fcfe03fb2c03fafe03f9f847 +05f97d03f84703f7fa03f6fe03f5fe03f4fe03f3bb03f2fe03f1fe03f0fe03ef1e03eefe03ed +ec0a05edfe03ec0a03ec4004ebea0a05eb3203ea0a03e9fa03e8911605e8fe03e7fa03e6fa03 +e5911605e5fe03e4fe03e3fe03e2fe03e1fe03e0fe03dffe03defa03dddc1805dd6403dc1803 +dba01e05db6403dad92505dafa03d92503d8d12505d8fa03d7d61405d71603d6d51005d61403 +d51003d4d30b05d42003d30b03d2d12505d2fa03d1911605d12503d0940c05d02303cfce1405 +cf2603cecd1205ce1403cd1203cc911605cc1d03cb1403cac9bb05cafe03c9c85d05c9bb03c9 +8004c840ffc72505c85d03c84004c72503c6fe03c56403c4901005c4fe03c31c03c2fe03c1fe +03c0bf3a05c0fa03bfad1b05bf3a03bebd1a05be3203bdbc1105bd1a03bcbb0f05bc1103bbba +0c05bb0f03ba0c03b9911605b9fe03b8fe03b71503b61203b5fe03b4fe03b3fe03b21703b119 +03b01603afad1b05affa03aead1b05aefa03ad911605ad1b03ac911605ac7d03abfe03aa2603 +a9fe03a8fe03a7fe03a6fe03a50a03a4fe03a3a20e05a3fe03a20e03a24004a1a01e05a1fa03 +a0911605a01e039f9116059ffa039e940c059e1c039dfe039c9bbb059cfe039b9a5d059bbb03 +9b80049a8f25059a5d039a400499fe0398972e0598fe03972e0396911605961e40ff0395940c +05952003940c0393911605934b039291160592fe03919010059116039010038f25038efe038d +fe038cfe038bfe038afe0389fe038887250588fe0387250386fe0385fe0384320383960382fe +0381fe038019037f0a037efe037dfe037cfe037bfa037afa0379fe037776a60577fe0376a603 +75741b0575fa03741b0373fa03727d0371fe03706f2c056f2c036efa036dfa036cfa036bfe03 +6afe0369fe0368630c0568320367fe0366320365640a0565fe03640a0364400463620a05630c +03620a0361601505619603600111056015035f0a035efe035dfe035c0111055cfe035b5a1b05 +5bfe035a0111055a1b0359fe0358fa0357fe035601110540ff56fe0355fe03541e0353140352 +51190552fa0351011105511903504f190550fa034f4e11054f19034e11034d1e034c4b14054c +15034b4a11054b14034a490e054a1103490e0348fa034746140547150346140345fa0344430e +05440f03430e034241250542fa0341011105412503403f0f0540fe033f3e0e053f0f033e0e03 +3d3c0d053d16033c0d033b64033afe0339140338fe0337130336351a0536250335341405351a +0335c004340a0d0534140334800433320c05331403334004320c033130a60531fe0330011105 +30a6032f0c032e13032d2c3a052dfa032c1525052c3a032b64032a640329fe03281503271711 +05271e03262003251e0324231105402b241e0323110322000d0522fa03210f03214004201403 +1f0a031e1e031d1c19051d25031c0f13051c19031cb801004091041b0d031a194b051a7d0319 +011105194b0318fe031711031615250516fa031501110515250314640313110312fe03110111 +0511fe031064030f0e10050f13030fc0040e10030e80040d0111050dfa030c32030b0a0d050b +16030b80040a0d030a400409fe0308fe0307fe0306050a0506fe03050a0305400404fa030364 +030201110502fe0301000d05011103000d0301b80164858d012b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b002b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b1d0000> +] def +/f-1-0 currentdict end definefont pop +%%EndResource +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 -1 598 403 +%%EndPageSetup +q 0 -1 598 404 rectclip q +0.768627 0.305882 0.321569 rg +110 w +0 J +0 j +[] 0.0 d +4 M q 1 0 0 -1 0 402.030151 cm +121.457 345 m 357.457 345 357.457 325 593.457 325 c S Q +0.298039 0.447059 0.690196 rg +66 w +q 1 0 0 -1 0 402.030151 cm +121.457 93 m 357.457 93 357.457 97 593.457 97 c S Q +1 0.623529 0.603922 rg +33 w +q 1 0 0 -1 0 402.030151 cm +121.457 194.5 m 357.457 194.5 357.457 209.5 593.457 209.5 c S Q +0.505882 0.447059 0.698039 rg +22 w +q 1 0 0 -1 0 402.030151 cm +121.457 271 m 357.457 271 357.457 259 593.457 259 c S Q +0.298039 0.447059 0.690196 rg +q 1 0 0 -1 0 402.030151 cm +121.457 137 m 357.457 137 357.457 182 593.457 182 c S Q +1 0.623529 0.603922 rg +q 1 0 0 -1 0 402.030151 cm +121.457 167 m 357.457 167 357.457 141 593.457 141 c S Q +0.8 0.72549 0.454902 rg +q 1 0 0 -1 0 402.030151 cm +121.457 241 m 357.457 241 357.457 237 593.457 237 c S Q +0.333333 0.658824 0.407843 rg +q 1 0 0 -1 0 402.030151 cm +121.457 41 m 357.457 41 357.457 53 593.457 53 c S Q +0.392157 0.709804 0.803922 rg +q 1 0 0 -1 0 402.030151 cm +121.457 11 m 357.457 11 357.457 31 593.457 31 c S Q +0.8 0.72549 0.454902 rg +11 w +q 1 0 0 -1 0 402.030151 cm +121.457 224.5 m 357.457 224.5 357.457 157.5 593.457 157.5 c S Q +0 g +117.457 342.03 4 -88 re f +117.457 112.03 4 -110 re f +117.457 246.03 4 -55 re f +117.457 183.03 4 -33 re f +117.457 142.03 4 -22 re f +117.457 372.03 4 -22 re f +117.457 402.03 4 -22 re f +593.457 231.03 4 -209 re f +593.457 382.03 4 -143 re f +BT +9.5 0 0 9.5 90.973893 134.606417 Tm +/f-0-0 1 Tf +[(FEF)]TJ +0 -1.25 Td +(46)Tj +-0.0170896 5.48759 Td +(MSTd)Tj +0 -1.25 Td +(STPp)Tj +0 -1.25 Td +[(STP)44(a)]TJ +10 0 0 10 13.964844 168.472388 Tm +/f-1-0 1 Tf +[(Polysens)-3(ory )]TJ +0 -1.25 Td +[(dors)-3(al ar)-3(eas)]TJ +9.5 0 0 9.5 91.36355 238.884644 Tm +/f-0-0 1 Tf +(V4t)Tj +0 -1.25 Td +(PITd)Tj +0 -1.25 Td +(MT)Tj +0 -1.25 Td +(MSTl)Tj +0 -1.25 Td +[(F)17(ST)]TJ +10 0 0 10 4.697266 213.930676 Tm +/f-1-0 1 Tf +[(Dorsa)-3(l strea)-3(m)]TJ +9.5 0 0 9.5 91.36355 107.009521 Tm +/f-0-0 1 Tf +(V3)Tj +0 -1.25 Td +(V3A)Tj +0 -1.25 Td +(PIP)Tj +0 -1.25 Td +(PO)Tj +0 -1.25 Td +(DP)Tj +0 -1.25 Td +(MIP)Tj +0 -1.25 Td +(MDP)Tj +0 -1.25 Td +(VIP)Tj +0 -1.25 Td +(LIP)Tj +0 -1.25 Td +(7a)Tj +10 0 0 10 4.697266 51.513745 Tm +/f-1-0 1 Tf +[(Dorsa)-3(l strea)-3(m)]TJ +9.5 0 0 9.5 91.36355 393.325586 Tm +/f-0-0 1 Tf +(VP)Tj +0 -1.25 Td +[(V)18(OT)]TJ +10 0 0 10 3.168945 393.552124 Tm +/f-1-0 1 Tf +[(Earl)-3(y visu)-3(al )]TJ +0 -1.25 Td +[(+ ventra)-3(l area)]TJ +9.5 0 0 9.5 91.36355 363.504883 Tm +/f-0-0 1 Tf +(V1)Tj +0 -1.25 Td +(V2)Tj +10 0 0 10 18.925781 358.894946 Tm +/f-1-0 1 Tf +[(Earl)-3(y visu)-3(al)]TJ +9.5 0 0 9.5 91.465601 336.129883 Tm +/f-0-0 1 Tf +(V4)Tj +0 -1.25 Td +(PITv)Tj +0 -1.25 Td +[(CITv)]TJ +0 -1.25 Td +[(CITd)]TJ +0 -1.25 Td +(AITv)Tj +0 -1.25 Td +(AITd)Tj +0 -1.25 Td +(TH)Tj +0 -1.25 Td +(TF)Tj +10 0 0 10 -0.0488281 295.403931 Tm +/f-1-0 1 Tf +[(V)55(entra)-3(l strea)-3(m)]TJ +4.407227 -16.706753 Td +[(F)64(ront)-3(al)]TJ +24 0 0 24 552.461182 314.361511 Tm +/f-0-0 1 Tf +(1S)Tj +0.0366211 -9.322224 Td +(2S)Tj +ET +Q Q +showpage +%%Trailer +end restore +%%EOF diff --git a/figures/Schmidt2018_dyn/Fig8_interactions.py b/figures/Schmidt2018_dyn/Fig8_interactions.py new file mode 100644 index 0000000000000000000000000000000000000000..451f95632efa29f9ead2afdc724551c19e05e049 --- /dev/null +++ b/figures/Schmidt2018_dyn/Fig8_interactions.py @@ -0,0 +1,371 @@ +import csv +import correlation_toolbox.helper as ch +import json +import numpy as np +import os +import pyx +import scipy.io + +from helpers import original_data_path +from multiarea_model.multiarea_model import MultiAreaModel +from plotcolors import myred, myblue +from scipy.spatial.distance import pdist +from scipy.spatial.distance import squareform + +import matplotlib.pyplot as pl +from matplotlib import gridspec +from matplotlib import rc_file +rc_file('plotstyle.rc') + +import sys +sys.path.append('../Schmidt2018') +from graph_helpers import apply_map_equation + +""" +Figure layout +""" +cmap = pl.cm.coolwarm +cmap = cmap.from_list('mycmap', [myblue, 'white', myred], N=256) +cmap2 = cmap.from_list('mycmap', ['white', myred], N=256) + + +width = 7.0866 +n_horz_panels = 2. +n_vert_panels = 3. + +axes = {} +gs1 = gridspec.GridSpec(1, 3) +gs1.update(left=0.05, right=0.95, top=0.95, + bottom=0.52, wspace=0., hspace=0.4) +axes['A'] = pl.subplot(gs1[:, 0]) +axes['B'] = pl.subplot(gs1[:, 1]) +axes['C'] = pl.subplot(gs1[:, 2]) + +gs1 = gridspec.GridSpec(1, 1) +gs1.update(left=0.18, right=0.8, top=0.44, + wspace=0., bottom=0.27, hspace=0.2) +axes['D'] = pl.subplot(gs1[:, :]) + +gs1 = gridspec.GridSpec(1, 1) +gs1.update(left=0.165, right=0.6, top=0.15, + wspace=0., bottom=0.075, hspace=0.2) +axes['E'] = pl.subplot(gs1[:, :]) + +gs1 = gridspec.GridSpec(1, 1) +gs1.update(left=0.688, right=0.95, top=0.15, + wspace=0., bottom=0.075, hspace=0.2) +axes['F'] = pl.subplot(gs1[:, :]) + +for label in ['A', 'B', 'C', 'D', 'E', 'F']: + if label in ['E', 'F']: + label_pos = [-0.08, 1.01] + else: + label_pos = [-0.2, 1.01] + pl.text(label_pos[0], label_pos[1], r'\bfseries{}' + label, + fontdict={'fontsize': 16, 'weight': 'bold', + 'horizontalalignment': 'left', 'verticalalignment': + 'bottom'}, transform=axes[label].transAxes) + axes[label].spines['right'].set_color('none') + axes[label].spines['top'].set_color('none') + axes[label].yaxis.set_ticks_position("left") + axes[label].xaxis.set_ticks_position("bottom") + +for label in ['E', 'F']: + axes[label].spines['right'].set_color('none') + axes[label].spines['top'].set_color('none') + axes[label].spines['left'].set_color('none') + axes[label].spines['bottom'].set_color('none') + + axes[label].yaxis.set_ticks_position("none") + axes[label].xaxis.set_ticks_position("none") + axes[label].set_yticks([]) + axes[label].set_xticks([]) + +""" +Load data +""" + +""" +Create MultiAreaModel instance to have access to data structures +""" +M = MultiAreaModel({}) + + +# Load experimental functional connectivity +func_conn_data = {} +with open('Fig8_exp_func_conn.csv', 'r') as f: + myreader = csv.reader(f, delimiter='\t') + # Skip first 3 lines + next(myreader) + next(myreader) + next(myreader) + areas = next(myreader) + for line in myreader: + dict_ = {} + for i in range(len(line)): + dict_[areas[i]] = float(line[i]) + func_conn_data[areas[myreader.line_num - 5]] = dict_ + +exp_FC = np.zeros((len(M.area_list), + len(M.area_list))) +for i, area1 in enumerate(M.area_list): + for j, area2 in enumerate(M.area_list): + exp_FC[i][j] = func_conn_data[area1][area2] + + +""" +Simulation data +""" +LOAD_ORIGINAL_DATA = True + +if LOAD_ORIGINAL_DATA: + tmin = 500. + tmax = 10000. + + cc_weights_factor = [1.0, 1.4, 1.5, 1.6, 1.7, 1.75, 1.8, 1.9, 2., 2.1, 2.5] + labels = ['33fb5955558ba8bb15a3fdce49dfd914682ef3ea', + '783cedb0ff27240133e3daa63f5d0b8d3c2e6b79', + '380856f3b32f49c124345c08f5991090860bf9a3', + '5a7c6c2d6d48a8b687b8c6853fb4d98048681045', + 'c1876856b1b2cf1346430cf14e8d6b0509914ca1', + 'a30f6fba65bad6d9062e8cc51f5483baf84a46b7', + '1474e1884422b5b2096d3b7a20fd4bdf388af7e0', + '99c0024eacc275d13f719afd59357f7d12f02b77', + 'f18158895a5d682db5002489d12d27d7a974146f', + '08a3a1a88c19193b0af9d9d8f7a52344d1b17498', + '5bdd72887b191ec22a5abcc04ca4a488ea216e32'] + + sim_FC = {} + for label in labels: + fn = os.path.join(original_data_path, + label, + 'Analysis', + 'functional_connectivity_synaptic_input.npy') + sim_FC[label] = np.load(fn) + + label = '99c0024eacc275d13f719afd59357f7d12f02b77' + fn = os.path.join(original_data_path, + label, + 'Analysis', + 'FC_synaptic_input_communities.json') + with open(fn, 'r') as f: + part_sim = json.load(f) + part_sim_list = [part_sim[area] for area in M.area_list] + part_sim_index = np.argsort(part_sim_list, kind='heapsort') + + +# """ +# Load bold signals +# """ +# label = '99c0024eacc275d13f719afd59357f7d12f02b77' +# bold_load_path = '../data/' +# bold = {} +# base_fn = 'bold_signal_syn_input/bold_signal_syn_input_{}'.format(label) +# for area in M.area_list: +# bold[area] = np.load('{}_{}.npy'.format(base_fn, area)) + +# data[label].bold_signal = bold + + +def matrix_plot(ax, matrix, index, vlim, pos=None): + ax.yaxis.set_ticks_position('none') + ax.xaxis.set_ticks_position('none') + + x = np.arange(0, len(M.area_list) + 1) + y = np.arange(0, len(M.area_list[::-1]) + 1) + X, Y = np.meshgrid(x, y) + + ax.set_xlim((0, 32)) + ax.set_ylim((0, 32)) + + ax.set_aspect(1. / ax.get_data_ratio()) + + vmax = vlim + vmin = -vlim + + # , norm = LogNorm(1e-8,1.)) + im = ax.pcolormesh(matrix[index][:, index][::-1], + cmap=cmap, vmin=vmin, vmax=vmax) + + cbticks = [-1., -0.5, 0., 0.5, 1.0] + cb = pl.colorbar(im, ax=ax, ticks=cbticks, fraction=0.046) + cb.ax.tick_params(labelsize=12) + ax.set_yticks([i + 0.5 for i in np.arange(0, len(M.area_list) + 1)]) + ax.set_yticklabels(np.array(M.area_list)[index][::-1], size=8.) + + if pos != (0, 2): + cb.remove() + else: + ax.text(1.25, 0.52, r'FC', rotation=90, + transform=ax.transAxes, size=12) + ax.set_xticks([i + 0.5 for i in np.arange(0, len(M.area_list) + 1)]) + ax.set_xticklabels(np.array(M.area_list)[index], rotation=90, size=8.) + ax.tick_params(pad=1.5) + + +""" +Plotting +""" +ax = axes['A'] +label = '99c0024eacc275d13f719afd59357f7d12f02b77' + + +matrix_plot(ax, sim_FC[label], + part_sim_index[::-1], 1., pos=(0, 0)) + +ax = axes['B'] +matrix_plot(ax, FC_exp, + louvain_sim_mat_index[::-1], 1., pos=(0, 1)) + +# ax = axes['C'] + +# matrix_plot(ax, exp_FC, louvain_sim_mat_index[::-1], 1., pos=(0, 2)) + +# indices = np.array(1. - np.eye(32), dtype=np.bool) + + +# def compute_cc(label, cmp_matrix, measure='synaptic_input'): +# ts = [] +# if measure == 'synaptic_input': +# d = data[label].synaptic_input +# elif measure == 'bold': +# d = data[label].bold_signal +# for area in M.area_list: +# ts.append(ch.centralize(d[area], units=True)) + +# D = pdist(ts, metric='correlation') +# correlation_matrix = 1. - squareform(D) +# for i in range(32): +# correlation_matrix[i][i] = 0. + +# cc = np.corrcoef(correlation_matrix[indices].flatten(), +# cmp_matrix[indices].flatten())[0][1] +# return cc + +# for k in labels: +# cc_exp = compute_cc(k, func_conn) +# corrcoeffs['sim_exp'].append(cc_exp) +# cc_struct = compute_cc(label, conn_matrix) +# corrcoeffs['sim_struct'].append(cc_struct) + +# label = '99c0024eacc275d13f719afd59357f7d12f02b77' +# cc_exp = compute_cc(label, func_conn) +# cc_struct = compute_cc(label, conn_matrix) +# ########################################################################## + +# ax = axes['D'] +# ax.spines['right'].set_color('none') +# ax.spines['top'].set_color('none') +# ax.yaxis.set_ticks_position("left") +# ax.xaxis.set_ticks_position("bottom") + +# ax.plot(cc_weights_factor_100[0], cc_exp, '.', +# ms=10, markeredgecolor='none', color='k') + +# ax.plot(cc_weights_factor[1:], corrcoeffs[ +# 'sim_exp'][1:], '.', ms=10, markeredgecolor='none', label='Sim. vs. Exp.', color='k') +# ax.plot(cc_weights_factor[0], corrcoeffs[ +# 'sim_exp'][0], '^', ms=5, markeredgecolor='none', label='Sim. vs. Exp.', color='k') + +# cc_bold = compute_cc('99c0024eacc275d13f719afd59357f7d12f02b77', func_conn, measure='bold') +# ax.plot(cc_weights_factor_100[0], cc_bold, '.', +# ms=10, markeredgecolor='none', color=myred) + +# print(("Corr. with HiRes", +# np.corrcoef(correlation_matrix[indices].flatten(), +# func_conn[indices].flatten())[0][1])) +# print(("Corr. with HiRes", corrcoeffs['sim_exp'])) +# print(("Corr. of structur with HiRes", +# np.corrcoef(conn_matrix[indices].flatten(), +# func_conn[indices].flatten())[0][1])) + +# ax.hlines(corrcoeffs['struct_exp'], -0.1, +# 2.5, linestyle='dashed', color='k') +# ax.set_xlabel(r'Cortico-cortical weight factor $\chi$', +# labelpad=-0.1, size=16) +# ax.set_ylabel(r'$r_{\mathrm{Pearson}}$', size=16) +# ax.set_xlim((0.9, 2.7)) +# ax.set_ylim((-0.1, 0.6)) +# ax.set_yticks([0., 0.2, 0.4]) +# ax.set_yticklabels([0., 0.2, 0.4], size=13) +# ax.set_xticks([1., 1.5, 2., 2.5]) +# ax.set_xticklabels([1., 1.5, 2., 2.5], size=13) + + +""" +Save figure +""" +pl.savefig('Fig8_interactions_mpl.eps') + +# """ +# We compare the clusters found in the functional connectivity to +# clusters found in the structural connectivity of the network. To +# detect the clusters in the structural connectivity, we repeat the the +# procedure from Fig. 7 of Schmidt et al. 'Multi-scale account of the +# network structure of macaque visual cortex' and apply the map equation +# method (see Materials & Methods in Schmidt et al. 2018) to the +# structural connectivity of the network. + +# This requires installation of the infomap executable and defining the +# path to the executable. +# """ +# infomap_path = None +# filename = 'Fig8_structural_clusters' +# modules, modules_areas, index = apply_map_equation(M.K_matrix, +# M.area_list, +# filename='stab', +# infomap_path=infomap_path) +# files = 'Fig8_structural_clusters.map' +# map_equation_dict = {} +# with open('{}.map'.format(fn), 'r') as f: +# line = '' +# while '*Nodes' not in line: +# line = f.readline() +# line = f.readline() +# map_equation = [] +# map_equation_areas = [] +# while "*Links" not in line: +# map_equation.append(int(line.split(':')[0])) +# map_equation_areas.append(line.split('"')[1]) +# line = f.readline() +# f.close() +# map_equation = np.array(map_equation) +# map_equation_dict[label] = dict( +# list(zip(map_equation_areas, map_equation))) + +# To create the alluvial input, we rename the simulated clusters +# 1S --> 2S, 2S ---> 1S +# f = open('alluvial_input.txt', 'w') +# f.write("area,map_equation, louvain, louvain_exp\n") +# for i, area in enumerate(M.area_list): +# if part_sim_mat[i] == 1: +# psm = 2 +# elif part_sim_mat[i] == 2: +# psm = 1 +# s = '{}, {}, {}, {}, {}'.format(area, +# map_equation_dict[area], +# psm, +# part_exp_mat[i]) +# f.write(s) +# f.write('\n') +# f.close() + +# The alluvial plot cannot be created with a script. To reproduce the alluvial +# plot, go to http://app.rawgraphs.io/ and proceed from there. + +""" +Merge with alluvial plot +""" +pyx.text.set(cls=pyx.text.LatexRunner) +pyx.text.preamble(r"\usepackage{helvet}") + +c = pyx.canvas.canvas() +c.fill(pyx.path.rect(0, 0., 17.9, 17.), [pyx.color.rgb.white]) + +c.insert(pyx.epsfile.epsfile(0., 6., "Fig8_interactions_mpl.eps", width=17.9)) +c.insert(pyx.epsfile.epsfile( + 1.7, 1., "Fig8_alluvial_struct_sim.eps", width=8.8)) +c.insert(pyx.epsfile.epsfile( + 11.5, 1.3, "Fig8_alluvial_sim_exp.eps", width=5.4)) + +c.writeEPSfile("Fig8_interactions.eps") diff --git a/figures/Schmidt2018_dyn/Snakefile b/figures/Schmidt2018_dyn/Snakefile index 94a3513285cbad8f246b7c22bb99217c0c623082..247aa10a25b5b432f3ea54fe568b767c90120694 100644 --- a/figures/Schmidt2018_dyn/Snakefile +++ b/figures/Schmidt2018_dyn/Snakefile @@ -38,7 +38,18 @@ ORIGINAL_SIMULATIONS = {'all': ['533d73357fbe99f6178029e6054b571b485f40f6', '5bdd72887b191ec22a5abcc04ca4a488ea216e32', '99c0024eacc275d13f719afd59357f7d12f02b77', '3afaec94d650c637ef8419611c3f80b3cb3ff539'], - 'Fig7': ['99c0024eacc275d13f719afd59357f7d12f02b77']} + 'Fig7': ['99c0024eacc275d13f719afd59357f7d12f02b77'], + 'Fig8': ['33fb5955558ba8bb15a3fdce49dfd914682ef3ea', + '783cedb0ff27240133e3daa63f5d0b8d3c2e6b79', + '380856f3b32f49c124345c08f5991090860bf9a3', + '5a7c6c2d6d48a8b687b8c6853fb4d98048681045', + 'c1876856b1b2cf1346430cf14e8d6b0509914ca1', + 'a30f6fba65bad6d9062e8cc51f5483baf84a46b7', + '1474e1884422b5b2096d3b7a20fd4bdf388af7e0', + 'f18158895a5d682db5002489d12d27d7a974146f', + '08a3a1a88c19193b0af9d9d8f7a52344d1b17498', + '5bdd72887b191ec22a5abcc04ca4a488ea216e32', + '99c0024eacc275d13f719afd59357f7d12f02b77']} if LOAD_ORIGINAL_DATA: @@ -53,7 +64,8 @@ rule all: 'Fig4_metastability.eps', 'Fig5_ground_state.eps', 'Fig6_comparison_exp_spiking_data.eps', - 'Fig7_temporal_hierarchy.eps' + 'Fig7_temporal_hierarchy.eps', + 'Fig8_interactions.eps' include: './Snakefile_preprocessing' @@ -150,3 +162,17 @@ rule Fig7_temporal_hierarchy: 'Fig7_temporal_hierarchy.eps' shell: 'python3 Fig7_temporal_hierarchy.py' + +rule Fig8_interactions: + input: + expand(os.path.join(DATA_DIR, '{simulation}', 'Analysis', 'functional_connectivity_synaptic_input.npy'), + simulation=SIMULATIONS['Fig8']), + expand(os.path.join(DATA_DIR, '{simulation}', 'Analysis', 'FC_synaptic_input_communities.json'), + simulation=SIMULATIONS['Fig8'][-1]), + expand(os.path.join(DATA_DIR, '{simulation}', 'Analysis', 'functional_connectivity_bold_signal.npy'), + simulation=SIMULATIONS['Fig8'][-1]) + output: + 'Fig8_interactions.eps' + shell: + 'python3 Fig8_interactions.py' + diff --git a/figures/Schmidt2018_dyn/Snakefile_preprocessing b/figures/Schmidt2018_dyn/Snakefile_preprocessing index 9bbfda2f9510250b7f23a94d0ed439f59b5ac4d1..c11ab8b8f373839310669b1d87877a7106eb6ee5 100644 --- a/figures/Schmidt2018_dyn/Snakefile_preprocessing +++ b/figures/Schmidt2018_dyn/Snakefile_preprocessing @@ -80,3 +80,40 @@ rule cross_correlation: 'cross_correlation_{area1}_{area2}.npy') shell: 'python3 compute_cross_correlation.py {} {{wildcards.simulation}} {{wildcards.area1}} {{wildcards.area2}}'.format(DATA_DIR) + +rule synaptic_input: + input: + expand(os.path.join(DATA_DIR, '{{simulation}}', 'Analysis', + 'rate_time_series_full', + 'rate_time_series_full_{{area}}_{pop}.npy'), + pop=population_list), + output: + os.path.join(DATA_DIR, '{simulation}', 'Analysis', 'synaptic_input', 'synaptic_input_{area}.npy') + shell: + 'python3 compute_synaptic_input.py {} {{wildcards.simulation}} {{wildcards.area}}'.format(DATA_DIR) + +rule functional_connectivity: + input: + expand(os.path.join(DATA_DIR, '{{simulation}}', 'Analysis', '{{method}}', '{{method}}_{area}.npy'), + area=area_list) + output: + os.path.join(DATA_DIR, '{simulation}', 'Analysis', 'functional_connectivity_{method}.npy') + shell: + 'python3 compute_functional_connectivity.py {} {{wildcards.simulation}} {{wildcards.method}}'.format(DATA_DIR) + +rule communities_FC: + input: + os.path.join(DATA_DIR, '{simulation}', 'Analysis', 'functional_connectivity.npy') + output: + os.path.join(DATA_DIR, '{simulation}', 'Analysis', 'FC_synaptic_input_communities.json') + shell: + 'python3 compute_louvain_communities.py {} {{wildcards.simulation}}'.format(DATA_DIR) + +rule bold_signal: + input: + os.path.join(DATA_DIR, '{simulation}', 'Analysis', 'synaptic_input', 'synaptic_input_{area}.npy') + output: + os.path.join(DATA_DIR, '{simulation}', 'Analysis', 'bold_signal', 'bold_signal_{area}.npy') + shell: + 'python3 compute_bold_signal.py {} {{wildcards.simulation}} {{wildcards.area}}'.format(DATA_DIR) + diff --git a/figures/Schmidt2018_dyn/compute_bold_signal.R b/figures/Schmidt2018_dyn/compute_bold_signal.R new file mode 100644 index 0000000000000000000000000000000000000000..a1cb882da10d4dd16e979091d2814b2607965bf0 --- /dev/null +++ b/figures/Schmidt2018_dyn/compute_bold_signal.R @@ -0,0 +1,12 @@ +library('neuRosim') +args <- commandArgs(trailingOnly=TRUE) +print(args) + +x <- read.table(args[1]) +d <- data.matrix(x) + +T <- 100 +it <- 0.001 + +out <- balloon(d, T, it) +write.table(out, args[2]) \ No newline at end of file diff --git a/figures/Schmidt2018_dyn/compute_bold_signal.py b/figures/Schmidt2018_dyn/compute_bold_signal.py new file mode 100644 index 0000000000000000000000000000000000000000..a10f5a59501fe13557fa38348b0ccf82385a91cd --- /dev/null +++ b/figures/Schmidt2018_dyn/compute_bold_signal.py @@ -0,0 +1,54 @@ +import numpy as np +import os +import sys + + +data_path = sys.argv[1] +label = sys.argv[2] +area = sys.argv[3] + +load_path = os.path.join(data_path, + label, + 'Analysis', + 'synaptic_input') + +save_path = os.path.join(data_path, + label, + 'Analysis', + 'bold_signal') + +try: + os.mkdir(save_path) +except FileExistsError: + pass + +fn = os.path.join(load_path, + 'synaptic_input_{}.npy'.format(area)) +synaptic_input = np.load(fn) + + +def bold_R_parser(fn): + f = open(fn, 'r') + # skip first line + f.readline() + + bold_signal = [] + for l in f: + bold_signal.append(float(l.split(' ')[-1])) + f.close() + return np.array(bold_signal) + + +fn = os.path.join(save_path, + 'syn_input_{}.txt'.format(area)) +out_fn = os.path.join(save_path, + 'bold_syn_input_{}.txt'.format(area)) + +np.savetxt(fn, synaptic_input / np.max(synaptic_input)) +os.system('Rscript --vanilla compute_bold_signal.R {} {}'.format(fn, out_fn)) + +bold_signal = bold_R_parser(out_fn) +fn = os.path.join(save_path, + 'bold_signal_{}.npy'.format(area)) +np.save(fn, bold_signal) + diff --git a/figures/Schmidt2018_dyn/compute_functional_connectivity.py b/figures/Schmidt2018_dyn/compute_functional_connectivity.py new file mode 100644 index 0000000000000000000000000000000000000000..35f44d880282e5a3297ec49bb4791920a094b960 --- /dev/null +++ b/figures/Schmidt2018_dyn/compute_functional_connectivity.py @@ -0,0 +1,39 @@ +import correlation_toolbox.helper as ch +import numpy as np +import os +import sys + +from multiarea_model import MultiAreaModel +from scipy.spatial.distance import pdist +from scipy.spatial.distance import squareform + +data_path = sys.argv[1] +label = sys.argv[2] +method = sys.argv[3] + +load_path = os.path.join(data_path, + label, + 'Analysis', + method) +save_path = os.path.join(data_path, + label, + 'Analysis') + +""" +Create MultiAreaModel instance to have access to data structures +""" +M = MultiAreaModel({}) + +time_series = [] +for area in M.area_list: + fn = os.path.join(load_path, + '{}_{}.npy'.format(method, area)) + si = np.load(fn) + time_series.append(ch.centralize(si, units=True)) + +D = pdist(time_series, metric='correlation') +correlation_matrix = 1. - squareform(D) + +np.save(os.path.join(save_path, + 'functional_connectivity_{}.npy'.format(method)), + correlation_matrix) diff --git a/figures/Schmidt2018_dyn/compute_louvain_communities.py b/figures/Schmidt2018_dyn/compute_louvain_communities.py new file mode 100644 index 0000000000000000000000000000000000000000..de1a616919926c1395318eeb69217e6a47ed6e01 --- /dev/null +++ b/figures/Schmidt2018_dyn/compute_louvain_communities.py @@ -0,0 +1,48 @@ +import community +import json +import networkx as nx +import numpy as np +import os +import sys + +from multiarea_model.multiarea_model import MultiAreaModel + +data_path = sys.argv[1] +label = sys.argv[2] + + +""" +Create MultiAreaModel instance to have access to data structures +""" +M = MultiAreaModel({}) + + +load_path = os.path.join(data_path, + label, + 'Analysis', + 'functional_connectivity_synaptic_input.npy') + + +FC = np.load(load_path) +for i in range(FC.shape[0]): + FC[i][i] = 0. + +G = nx.Graph() +for area in M.area_list: + G.add_node(area) + +edges = [] +for i, area in enumerate(M.area_list): + for j, area2 in enumerate(M.area_list): + edges.append((area, area2, FC[i][j])) +G.add_weighted_edges_from(edges) + +part = community.best_partition(G) + +fn = os.path.join(data_path, + label, + 'Analysis', + 'FC_synaptic_input_communities.json') + +with open(fn, 'w') as f: + json.dump(part, f) diff --git a/figures/Schmidt2018_dyn/compute_synaptic_input.py b/figures/Schmidt2018_dyn/compute_synaptic_input.py new file mode 100644 index 0000000000000000000000000000000000000000..36cc2283b31d46f759e830459fea84e4ccf34304 --- /dev/null +++ b/figures/Schmidt2018_dyn/compute_synaptic_input.py @@ -0,0 +1,97 @@ +import correlation_toolbox.helper as ch +import correlation_toolbox.correlation_analysis as corr +import json +import numpy as np +import os +import sys + +from multiarea_model.multiarea_model import MultiAreaModel + +data_path = sys.argv[1] +label = sys.argv[2] +area = sys.argv[3] + + +load_path = os.path.join(data_path, + label, + 'Analysis', + 'rate_time_series_full') +save_path = os.path.join(data_path, + label, + 'Analysis', + 'synaptic_input') + +with open(os.path.join(data_path, label, 'custom_params_{}'.format(label)), 'r') as f: + sim_params = json.load(f) +T = sim_params['T'] + + +""" +Create MultiAreaModel instance to have access to data structures +""" +connection_params = {'cc_weights_factor': sim_params['cc_weights_factor'], + 'cc_weights_I_factor': sim_params['cc_weights_I_factor'], + 'K_stable': '../SchueckerSchmidt2017/K_prime_original.npy'} + +M = MultiAreaModel({}) + +""" +Synaptic filtering kernel +""" +t = np.arange(0., 20., 1.) +tau_syn = M.params['neuron_params']['single_neuron_dict']['tau_syn_ex'] +kernel = np.exp(-t / tau_syn) + + +""" +Load rate time series +""" +rate_time_series = {} +for source_area in M.area_list: + rate_time_series[source_area] = {} + for source_pop in M.structure[source_area]: + fn = os.path.join(load_path, + 'rate_time_series_full_{}_{}.npy'.format(source_area, source_pop)) + dat = np.load(fn) + rate_time_series[source_area][source_pop] = dat + + +synaptic_input_list = [] +N_list = [] +for pop in M.structure[area]: + time_series = np.zeros(int((sim_params['T'] - 500.))) + for source_area in M.area_list: + for source_pop in M.structure[source_area]: + weight = M.W[area][pop][source_area][source_pop] + time_series += (rate_time_series[source_area][source_pop] * + abs(weight) * + M.K[area][pop][source_area][source_pop]) + syn_current = np.convolve(kernel, time_series, mode='same') + synaptic_input_list.append(time_series) + N_list.append(M.N[area][pop]) + + fp = '_'.join(('synaptic_input', + area, + pop)) + try: + os.mkdir(save_path) + except FileExistsError: + pass + np.save('{}/{}.npy'.format(save_path, fp), time_series) + +synaptic_input_list = np.array(synaptic_input_list) +area_time_series = np.average(synaptic_input_list, axis=0, weights=N_list) + +fp = '_'.join(('synaptic_input', + area)) +np.save('{}/{}.npy'.format(save_path, fp), area_time_series) + +par = {'areas': M.area_list, + 'pops': 'complete', + 'resolution': 1., + 't_min': 500., + 't_max': T} +fp = '_'.join(('synaptic_input', + 'Parameters.json')) +with open('{}/{}'.format(save_path, fp), 'w') as f: + json.dump(par, f)