-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathplotaddress.nb
More file actions
770 lines (746 loc) · 34.9 KB
/
plotaddress.nb
File metadata and controls
770 lines (746 loc) · 34.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
(* Content-type: application/vnd.wolfram.mathematica *)
(*** Wolfram Notebook File ***)
(* http://www.wolfram.com/nb *)
(* CreatedBy='Mathematica 10.3' *)
(*CacheID: 234*)
(* Internal cache information:
NotebookFileLineBreakTest
NotebookFileLineBreakTest
NotebookDataPosition[ 158, 7]
NotebookDataLength[ 35600, 762]
NotebookOptionsPosition[ 34642, 730]
NotebookOutlinePosition[ 35031, 747]
CellTagsIndexPosition[ 34988, 744]
WindowFrame->Normal*)
(* Beginning of Notebook Content *)
Notebook[{
Cell[BoxData[
RowBox[{
RowBox[{"(*", " ", "Initialization", " ", "*)"}], "\n",
RowBox[{
RowBox[{"Needs", " ", "[", "\"\<JLink`\>\"", "]"}], "\n",
RowBox[{"(*", " ",
RowBox[{"Load", " ", "Java", " ", "functionality"}], " ", "*)"}], "\n",
RowBox[{
RowBox[{"If", "[",
RowBox[{
RowBox[{
RowBox[{"JavaLink", "[", "]"}], " ", "===", " ", "Null"}], ",", " ",
RowBox[{
RowBox[{"InstallJava", "[", "]"}], ";"}]}], "]"}], ";"}], "\n",
RowBox[{
RowBox[{"LoadJavaClass", "[", "\"\<java.net.URLEncoder\>\"", "]"}], ";"}],
"\n", "\n",
RowBox[{"(*", " ",
RowBox[{"Private", " ", "API", " ", "key", " ", "from", " ", "google"}],
" ", "*)"}], "\n",
RowBox[{
RowBox[{
"$key", " ", "=", " ",
"\"\<AIzaSyBufb92UiWaK5WRqZF_PeUloidrgn4OUw8\>\""}], ";"}], "\n", "\n",
RowBox[{
RowBox[{"ToWebString", "[", "s_String", "]"}], " ", ":=", " ",
RowBox[{"URLEncoder`encode", "[",
RowBox[{"s", ",", " ", "\"\<UTF-8\>\""}], "]"}]}], "\n", "\n",
RowBox[{
RowBox[{"iapi", "[",
RowBox[{"address_String", ",", " ", "key_String"}], "]"}], " ", ":=",
" ", "\n", " ",
RowBox[{
"\"\<https://maps.googleapis.com/maps/api/geocode/json?address=\>\"", " ",
"<>", " ", "\n", " ",
RowBox[{"ToWebString", "[", "address", "]"}], " ", "<>", " ",
"\"\<&key=\>\"", " ", "<>", " ", "key"}]}], "\n", " ", "\n",
RowBox[{
RowBox[{"api", "[", "address_String", "]"}], " ", ":=", "\n", "\t",
RowBox[{"With", "[",
RowBox[{
RowBox[{"{",
RowBox[{"res", " ", "=", " ",
RowBox[{
RowBox[{"{",
RowBox[{"\"\<lat\>\"", ",", " ", "\"\<lng\>\""}], "}"}], " ", "/.",
" ",
RowBox[{"(",
RowBox[{"\"\<location\>\"", " ", "/.", " ",
RowBox[{"(",
RowBox[{"\"\<geometry\>\"", " ", "/.", " ",
RowBox[{"(",
RowBox[{"\"\<results\>\"", " ", "/.", " ", "\n", "\t\t",
RowBox[{"ImportString", "[",
RowBox[{
RowBox[{"Import", "[",
RowBox[{
RowBox[{"iapi", "[",
RowBox[{"address", ",", " ", "$key"}], "]"}], ",", " ",
"\"\<String\>\""}], "]"}], ",", " ", "\"\<JSon\>\""}],
"]"}]}], ")"}]}], ")"}]}], ")"}]}]}], "}"}], ",", "\n",
"\t\t",
RowBox[{"Switch", "[",
RowBox[{"res", ",",
RowBox[{"{",
RowBox[{"{",
RowBox[{"_Real", ",", " ", "_Real"}], "}"}], "}"}], ",", " ",
RowBox[{"First", "@", "res"}], ",", " ", "_", ",", " ",
RowBox[{"Missing", "[", "\"\<NotAvailable\>\"", "]"}]}], "]"}]}],
"\n", "\t", "]"}]}]}]}]], "Code",
CellChangeTimes->{3.660827768651039*^9, 3.661170710231071*^9,
3.661184730920231*^9}],
Cell[BoxData[
RowBox[{
RowBox[{"(*", " ",
RowBox[{"Define", " ", "argument", " ", "processor"}], " ", "*)"}], "\n",
RowBox[{
RowBox[{
RowBox[{"cmdlnparser", "[", "arg_", "]"}], " ", ":=", " ",
RowBox[{"Module", "[",
RowBox[{
RowBox[{"{", "tmp", "}"}], ",", "\n", "\t",
RowBox[{
RowBox[{"If", "[",
RowBox[{
RowBox[{"StringContainsQ", "[",
RowBox[{"arg", ",", "\"\<colour=\>\""}], "]"}], ",", "\n", "\t\t",
RowBox[{
RowBox[{"clist", "=",
RowBox[{"ToExpression", "[",
RowBox[{"Rest", "[",
RowBox[{"StringCases", "[",
RowBox[{"arg", ",", " ",
RowBox[{"RegularExpression", "[", "\"\<\\\\w+\>\"", "]"}]}],
"]"}], "]"}], "]"}]}], ";", "\n", "\t\t",
RowBox[{"Return", "[", "]"}], ";"}]}], "\n", "\t", "]"}], ";", "\n",
"\t",
RowBox[{"If", "[",
RowBox[{
RowBox[{"StringContainsQ", "[",
RowBox[{"arg", ",", "\"\<legend=\>\""}], "]"}], ",", "\n", "\t\t",
RowBox[{
RowBox[{"legend", "=",
RowBox[{"Rest", "[",
RowBox[{"StringCases", "[",
RowBox[{"arg", ",", " ",
RowBox[{"RegularExpression", "[", "\"\<\\\\w+\>\"", "]"}]}],
"]"}], "]"}]}], ";", "\n", "\t\t",
RowBox[{"Return", "[", "]"}], ";"}]}], "\n", "\t", "]"}], ";", "\n",
"\t",
RowBox[{"AppendTo", "[",
RowBox[{"flist", ",", "arg"}], "]"}], ";"}]}], "\n", "]"}]}], "\n",
RowBox[{
RowBox[{"args", " ", "=", " ", "$ScriptCommandLine"}], ";"}]}]}]], "Code",\
CellChangeTimes->{{3.660827768651039*^9, 3.660827792618745*^9},
3.6608278543949413`*^9, {3.6608279687964163`*^9, 3.6608279824986153`*^9}, {
3.660828680456506*^9, 3.6608286832299557`*^9}, {3.661080259588388*^9,
3.66108033864083*^9}, {3.66108041810981*^9, 3.661080524783681*^9}, {
3.661080600462716*^9, 3.661080624845216*^9}, {3.661080677494485*^9,
3.661080683548801*^9}, {3.66108079318676*^9, 3.661080799776993*^9}, {
3.6610808875040913`*^9, 3.6610809823814363`*^9}, {3.6610810176877193`*^9,
3.661081035073045*^9}, {3.66108115602114*^9, 3.6610811756211987`*^9}, {
3.661081534896077*^9, 3.6610815373840218`*^9}, {3.661081569577647*^9,
3.661081579690755*^9}, {3.661081620589511*^9, 3.6610817522953663`*^9},
3.6610823891633797`*^9, {3.6610824578005047`*^9, 3.661082467055643*^9}, {
3.661167426007514*^9, 3.661167559918486*^9}, 3.661167600024145*^9, {
3.6611699588889513`*^9, 3.6611699697917433`*^9}, {3.661170022218733*^9,
3.661170053116642*^9}, {3.661170230834057*^9, 3.661170275827312*^9}, {
3.661170351998899*^9, 3.661170411975416*^9}, {3.66117045027009*^9,
3.661170551416148*^9}, {3.661170585027267*^9, 3.661170601788315*^9}, {
3.6611707161097727`*^9, 3.6611708260876217`*^9}, {3.6611709332575502`*^9,
3.661171049837042*^9}, {3.6611711045852127`*^9, 3.661171254814762*^9}, {
3.66117133985745*^9, 3.661171358873023*^9}, {3.661171503680228*^9,
3.6611715704198427`*^9}, {3.6611716253903418`*^9, 3.661171732395974*^9}, {
3.661171898576398*^9, 3.661171950726267*^9}, 3.6611725521350737`*^9, {
3.6611726022584867`*^9, 3.661172624297398*^9}, {3.661172749833757*^9,
3.661172779142372*^9}, {3.661173395222938*^9, 3.66117342112707*^9}, {
3.661173468100618*^9, 3.6611735644475203`*^9}, {3.661173629053959*^9,
3.661173632044285*^9}, {3.661173668047262*^9, 3.661173683609598*^9}, {
3.6611738214640503`*^9, 3.661173832647017*^9}, {3.66117387822472*^9,
3.661173892391543*^9}, {3.661173938515712*^9, 3.661173965654921*^9}, {
3.6611740065140247`*^9, 3.661174010898177*^9}, {3.661174049984157*^9,
3.661174060497306*^9}, 3.6611807829336987`*^9, {3.661180817213093*^9,
3.6611808206200323`*^9}, {3.661181171656229*^9, 3.66118117988211*^9}, {
3.661181472599099*^9, 3.661181511158194*^9}, {3.661202875667858*^9,
3.66120288333825*^9}, {3.661270820927926*^9, 3.6612708533363867`*^9}, {
3.661276054182507*^9, 3.661276057190267*^9}, {3.6612775709523*^9,
3.6612775732213507`*^9}, {3.6612776089523373`*^9, 3.661277611078595*^9}, {
3.661277665593025*^9, 3.661277763323963*^9}, {3.6612777955414352`*^9,
3.661277893696583*^9}, {3.661426738563094*^9, 3.66142675792127*^9}, {
3.661426802326746*^9, 3.661426854668378*^9}, {3.662139419003829*^9,
3.662139501555626*^9}, {3.662139864540224*^9, 3.662139883856215*^9}, {
3.662139925290491*^9, 3.662139929228037*^9}, {3.662144029957322*^9,
3.662144034952236*^9}, {3.6622300496262007`*^9, 3.662230087825968*^9}, {
3.662243845616407*^9, 3.6622439265176153`*^9}, {3.662244065415044*^9,
3.662244078479553*^9}, {3.662244753233041*^9, 3.662244758854917*^9}, {
3.662244871180513*^9, 3.662244872644746*^9}, {3.662244905084116*^9,
3.662245131246252*^9}, {3.6622933659958277`*^9, 3.662293378879636*^9}, {
3.662296792245185*^9, 3.662296798994483*^9}, {3.6622968879062243`*^9,
3.66229707923766*^9}, 3.662297146364224*^9, {3.662297198754154*^9,
3.662297208627428*^9}, 3.662297518182692*^9, {3.662314709987938*^9,
3.662314716035234*^9}, {3.662314783270442*^9, 3.662314797192129*^9}, {
3.662314887767871*^9, 3.662314934822412*^9}, {3.66231496507926*^9,
3.662315062606286*^9}, {3.662315202582108*^9, 3.662315368249971*^9}, {
3.662333228202051*^9, 3.6623333963872337`*^9}, {3.662333449239246*^9,
3.662333452448628*^9}}],
Cell[BoxData[
RowBox[{
RowBox[{"(*", " ",
RowBox[{
RowBox[{
"If", " ", "$ScriptCommandLine", " ", "is", " ", "completely", " ",
"blank"}], ",", " ",
RowBox[{"the", " ",
RowBox[{"script", "/", "notebook"}], " ", "is", " ", "being", " ",
"debugged", " ", "in", " ", "Mathematica"}]}], " ", "*)"}], "\n",
RowBox[{"If", "[",
RowBox[{
RowBox[{
RowBox[{"Length", "[", "$ScriptCommandLine", "]"}], "==", "0"}], ",",
"\n", "\t",
RowBox[{
RowBox[{"args", "=",
RowBox[{"{", "\"\<plotaddress\>\"", "}"}]}], ";"}], "\n", "\t",
RowBox[{"(*", " ",
RowBox[{
"Set", " ", "up", " ", "a", " ", "debug", " ", "Command", " ", "Line"}],
" ", "*)"}], "\n", "\t",
RowBox[{"(*", " ",
RowBox[{
RowBox[{"AppendTo", "[",
RowBox[{"args", ",",
RowBox[{
RowBox[{"NotebookDirectory", "[", "]"}], "<>",
"\"\<test/address1.csv\>\""}]}], "]"}], ";"}], " ", "*)"}], "\n",
"\t",
RowBox[{"(*", " ",
RowBox[{
RowBox[{"AppendTo", "[",
RowBox[{"args", ",",
RowBox[{
RowBox[{"NotebookDirectory", "[", "]"}], "<>",
"\"\<test/address2.csv\>\""}]}], "]"}], ";"}], " ", "*)"}], "\n",
"\t",
RowBox[{"(*", " ",
RowBox[{
RowBox[{"AppendTo", "[",
RowBox[{"args", ",", "\"\<colour={Blue,Green}\>\""}], "]"}], ";"}],
" ", "*)"}], "\n", "\t",
RowBox[{"(*", " ",
RowBox[{
RowBox[{"AppendTo", "[",
RowBox[{"args", ",", "\"\<legend={Personal,Work}\>\""}], "]"}], ";"}],
" ", "*)"}], "\n", "\t",
RowBox[{"(*", " ",
RowBox[{
RowBox[{"AppendTo", "[",
RowBox[{"args", ",",
RowBox[{
RowBox[{"NotebookDirectory", "[", "]"}], "<>",
"\"\<test/address.csv\>\""}]}], "]"}], ";"}], " ", "*)"}], "\n", ",",
"\n", "\t", "Nothing"}], "\n", "]"}]}]], "Code",
CellChangeTimes->{{3.660827768651039*^9, 3.660827792618745*^9},
3.6608278543949413`*^9, {3.6608279687964163`*^9, 3.6608279824986153`*^9}, {
3.660828680456506*^9, 3.6608286832299557`*^9}, {3.661080259588388*^9,
3.66108033864083*^9}, {3.66108041810981*^9, 3.661080524783681*^9}, {
3.661080600462716*^9, 3.661080624845216*^9}, {3.661080677494485*^9,
3.661080683548801*^9}, {3.66108079318676*^9, 3.661080799776993*^9}, {
3.6610808875040913`*^9, 3.6610809823814363`*^9}, {3.6610810176877193`*^9,
3.661081035073045*^9}, {3.66108115602114*^9, 3.6610811756211987`*^9}, {
3.661081534896077*^9, 3.6610815373840218`*^9}, {3.661081569577647*^9,
3.661081579690755*^9}, {3.661081620589511*^9, 3.6610817522953663`*^9},
3.6610823891633797`*^9, {3.6610824578005047`*^9, 3.661082467055643*^9}, {
3.661167426007514*^9, 3.661167559918486*^9}, 3.661167600024145*^9, {
3.6611699588889513`*^9, 3.6611699697917433`*^9}, {3.661170022218733*^9,
3.661170053116642*^9}, {3.661170230834057*^9, 3.661170275827312*^9}, {
3.661170351998899*^9, 3.661170411975416*^9}, {3.66117045027009*^9,
3.661170551416148*^9}, {3.661170585027267*^9, 3.661170601788315*^9}, {
3.6611707161097727`*^9, 3.6611708260876217`*^9}, {3.6611709332575502`*^9,
3.661171049837042*^9}, {3.6611711045852127`*^9, 3.661171254814762*^9}, {
3.66117133985745*^9, 3.661171358873023*^9}, {3.661171503680228*^9,
3.6611715704198427`*^9}, {3.6611716253903418`*^9, 3.661171732395974*^9}, {
3.661171898576398*^9, 3.661171950726267*^9}, 3.6611725521350737`*^9, {
3.6611726022584867`*^9, 3.661172624297398*^9}, {3.661172749833757*^9,
3.661172779142372*^9}, {3.661173395222938*^9, 3.66117342112707*^9}, {
3.661173468100618*^9, 3.6611735644475203`*^9}, {3.661173629053959*^9,
3.661173632044285*^9}, {3.661173668047262*^9, 3.661173683609598*^9}, {
3.6611738214640503`*^9, 3.661173832647017*^9}, {3.66117387822472*^9,
3.661173892391543*^9}, {3.661173938515712*^9, 3.661173965654921*^9}, {
3.6611740065140247`*^9, 3.661174010898177*^9}, {3.661174049984157*^9,
3.661174060497306*^9}, 3.6611807829336987`*^9, {3.661180817213093*^9,
3.6611808206200323`*^9}, {3.661181171656229*^9, 3.66118117988211*^9}, {
3.661181472599099*^9, 3.661181511158194*^9}, {3.661202875667858*^9,
3.66120288333825*^9}, {3.661270820927926*^9, 3.6612708533363867`*^9}, {
3.661276054182507*^9, 3.661276057190267*^9}, {3.6612775709523*^9,
3.6612775732213507`*^9}, {3.6612776089523373`*^9, 3.661277611078595*^9}, {
3.661277665593025*^9, 3.661277763323963*^9}, {3.6612777955414352`*^9,
3.661277893696583*^9}, {3.661426738563094*^9, 3.66142675792127*^9}, {
3.661426802326746*^9, 3.661426854668378*^9}, {3.662139419003829*^9,
3.662139501555626*^9}, {3.662139864540224*^9, 3.662139883856215*^9}, {
3.662139925290491*^9, 3.662139929228037*^9}, {3.662144029957322*^9,
3.662144034952236*^9}, {3.6622300496262007`*^9, 3.662230087825968*^9}, {
3.662243845616407*^9, 3.6622439265176153`*^9}, {3.662244065415044*^9,
3.662244078479553*^9}, {3.662244753233041*^9, 3.662244758854917*^9}, {
3.662244871180513*^9, 3.662244872644746*^9}, {3.662244905084116*^9,
3.662245131246252*^9}, {3.6622933659958277`*^9, 3.662293378879636*^9}, {
3.662296792245185*^9, 3.662296798994483*^9}, {3.6622968879062243`*^9,
3.66229707923766*^9}, 3.662297146364224*^9, {3.662297198754154*^9,
3.662297208627428*^9}, 3.662297518182692*^9, {3.662314709987938*^9,
3.662314716035234*^9}, {3.662314783270442*^9, 3.662314797192129*^9}, {
3.662314887767871*^9, 3.662314934822412*^9}, {3.66231496507926*^9,
3.662315062606286*^9}, {3.662315202582108*^9, 3.662315368249971*^9}, {
3.662333228202051*^9, 3.6623333963872337`*^9}, {3.662333449239246*^9,
3.662333452448628*^9}, {3.662333743087084*^9, 3.6623337582586117`*^9}, {
3.662333857123258*^9, 3.6623339129771957`*^9}, {3.662390215493272*^9,
3.662390234283648*^9}, 3.6623903260767527`*^9, 3.662390366664364*^9, {
3.6623904334035263`*^9, 3.66239045491549*^9}, 3.662390571355838*^9, {
3.662390866109701*^9, 3.66239087183636*^9}, {3.6623911928457623`*^9,
3.662391200365222*^9}, {3.662391602680933*^9, 3.66239163652214*^9}, {
3.662392687865858*^9, 3.662392702682827*^9}, {3.662393126808378*^9,
3.662393129273712*^9}, {3.6623934604916887`*^9, 3.662393461387683*^9}}],
Cell[BoxData["args"], "Input",
CellChangeTimes->{{3.6623776512862864`*^9, 3.662377651825651*^9}}],
Cell[BoxData[{
RowBox[{
RowBox[{"If", "[",
RowBox[{
RowBox[{
RowBox[{"Length", "[", "args", "]"}], "\[Equal]", "1"}], ",", "\n", "\t",
RowBox[{
RowBox[{
"Print", "[",
"\"\<USAGE: plotaddress file1 [file2...] [colour={colour1,colour2...}] \
[legend={title1,title2...}\>\"", "]"}], "\n", "\t",
RowBox[{"Exit", "[", "]"}]}], "\n", ",", "\n", "\t", "Nothing"}], "\n",
"]"}], "\n", "\n",
RowBox[{"(*", " ",
RowBox[{"Parse", " ", "command", " ", "line"}], " ", "*)"}]}], "\n",
RowBox[{
RowBox[{"flist", " ", "=", " ",
RowBox[{"{", "}"}]}], ";"}], "\n",
RowBox[{
RowBox[{"clist", " ", "=", " ",
RowBox[{"{", "}"}]}], ";"}], "\n",
RowBox[{
RowBox[{"legend", " ", "=", " ",
RowBox[{"{", "}"}]}], ";"}], "\n",
RowBox[{
RowBox[{"cmdlnparser", " ", "/@", " ",
RowBox[{"Rest", "[", "args", "]"}]}], ";"}], "\n",
RowBox[{
RowBox[{"Print", "[", "\"\<Command Line Parsed\>\"", "]"}], "\n",
RowBox[{"(*", " ",
RowBox[{
"Change", " ", "Default", " ", "plot", " ", "colour", " ", "to", " ",
"Blue"}], " ", "*)"}], "\n",
RowBox[{"(*", " ",
RowBox[{
"If", " ", "Colour", " ", "is", " ", "not", " ", "pecified", " ",
"Mathematica", " ", "defaults", " ", "to", " ", "an", " ", "orange", " ",
"colour"}], " ", "*)"}]}], "\n",
RowBox[{"If", "[",
RowBox[{
RowBox[{
RowBox[{"Length", "[", "clist", "]"}], "\[Equal]", "0"}], ",", "\n", "\t",
RowBox[{"clist", "=",
RowBox[{"{", "Blue", "}"}]}], "\n", ",", "\n", "\t", "Nothing"}], "\n",
"]"}]}], "Code",
CellChangeTimes->{{3.660827768651039*^9, 3.660827792618745*^9},
3.6608278543949413`*^9, {3.6608279687964163`*^9, 3.6608279824986153`*^9}, {
3.660828680456506*^9, 3.6608286832299557`*^9}, {3.661080259588388*^9,
3.66108033864083*^9}, {3.66108041810981*^9, 3.661080524783681*^9}, {
3.661080600462716*^9, 3.661080624845216*^9}, {3.661080677494485*^9,
3.661080683548801*^9}, {3.66108079318676*^9, 3.661080799776993*^9}, {
3.6610808875040913`*^9, 3.6610809823814363`*^9}, {3.6610810176877193`*^9,
3.661081035073045*^9}, {3.66108115602114*^9, 3.6610811756211987`*^9}, {
3.661081534896077*^9, 3.6610815373840218`*^9}, {3.661081569577647*^9,
3.661081579690755*^9}, {3.661081620589511*^9, 3.6610817522953663`*^9},
3.6610823891633797`*^9, {3.6610824578005047`*^9, 3.661082467055643*^9}, {
3.661167426007514*^9, 3.661167559918486*^9}, 3.661167600024145*^9, {
3.6611699588889513`*^9, 3.6611699697917433`*^9}, {3.661170022218733*^9,
3.661170053116642*^9}, {3.661170230834057*^9, 3.661170275827312*^9}, {
3.661170351998899*^9, 3.661170411975416*^9}, {3.66117045027009*^9,
3.661170551416148*^9}, {3.661170585027267*^9, 3.661170601788315*^9}, {
3.6611707161097727`*^9, 3.6611708260876217`*^9}, {3.6611709332575502`*^9,
3.661171049837042*^9}, {3.6611711045852127`*^9, 3.661171254814762*^9}, {
3.66117133985745*^9, 3.661171358873023*^9}, {3.661171503680228*^9,
3.6611715704198427`*^9}, {3.6611716253903418`*^9, 3.661171732395974*^9}, {
3.661171898576398*^9, 3.661171950726267*^9}, 3.6611725521350737`*^9, {
3.6611726022584867`*^9, 3.661172624297398*^9}, {3.661172749833757*^9,
3.661172779142372*^9}, {3.661173395222938*^9, 3.66117342112707*^9}, {
3.661173468100618*^9, 3.6611735644475203`*^9}, {3.661173629053959*^9,
3.661173632044285*^9}, {3.661173668047262*^9, 3.661173683609598*^9}, {
3.6611738214640503`*^9, 3.661173832647017*^9}, {3.66117387822472*^9,
3.661173892391543*^9}, {3.661173938515712*^9, 3.661173965654921*^9}, {
3.6611740065140247`*^9, 3.661174010898177*^9}, {3.661174049984157*^9,
3.661174060497306*^9}, 3.6611807829336987`*^9, {3.661180817213093*^9,
3.6611808206200323`*^9}, {3.661181171656229*^9, 3.66118117988211*^9}, {
3.661181472599099*^9, 3.661181511158194*^9}, {3.661202875667858*^9,
3.66120288333825*^9}, {3.661270820927926*^9, 3.6612708533363867`*^9}, {
3.661276054182507*^9, 3.661276057190267*^9}, {3.6612775709523*^9,
3.6612775732213507`*^9}, {3.6612776089523373`*^9, 3.661277611078595*^9}, {
3.661277665593025*^9, 3.661277763323963*^9}, {3.6612777955414352`*^9,
3.661277893696583*^9}, {3.661426738563094*^9, 3.66142675792127*^9}, {
3.661426802326746*^9, 3.661426854668378*^9}, {3.662139419003829*^9,
3.662139501555626*^9}, {3.662139864540224*^9, 3.662139883856215*^9}, {
3.662139925290491*^9, 3.662139929228037*^9}, {3.662144029957322*^9,
3.662144034952236*^9}, {3.6622300496262007`*^9, 3.662230087825968*^9}, {
3.662243845616407*^9, 3.6622439265176153`*^9}, {3.662244065415044*^9,
3.662244078479553*^9}, {3.662244753233041*^9, 3.662244758854917*^9}, {
3.662244871180513*^9, 3.662244872644746*^9}, {3.662244905084116*^9,
3.662245131246252*^9}, {3.6622933659958277`*^9, 3.662293378879636*^9}, {
3.662296792245185*^9, 3.662296798994483*^9}, {3.6622968879062243`*^9,
3.66229707923766*^9}, 3.662297146364224*^9, {3.6622973636409597`*^9,
3.662297394304502*^9}, {3.662297487082831*^9, 3.662297495700548*^9},
3.6622975345287113`*^9, {3.662393384146639*^9, 3.662393392445121*^9}, {
3.662393454387513*^9, 3.662393455443563*^9}, {3.662394185472139*^9,
3.6623942731974907`*^9}}],
Cell[BoxData["flist"], "Input",
CellChangeTimes->{{3.6612735056882963`*^9, 3.661273507150652*^9}}],
Cell[BoxData["clist"], "Input",
CellChangeTimes->{{3.661174031834036*^9, 3.6611740324309196`*^9}}],
Cell[BoxData["legend"], "Input",
CellChangeTimes->{{3.6614268879098263`*^9, 3.661426889043085*^9}}],
Cell[BoxData[
RowBox[{
RowBox[{"(*", " ",
RowBox[{
"Define", " ", "function", " ", "to", " ", "read", " ", "input", " ",
"addresses"}], " ", "*)"}], "\n",
RowBox[{
RowBox[{
RowBox[{"readaddr", "[", "ifile_", "]"}], " ", ":=", " ", "\n",
RowBox[{"Switch", "[",
RowBox[{
RowBox[{"FileExtension", "[", "ifile", "]"}], ",", "\n", "\t",
"\"\<csv\>\"", ",",
RowBox[{"Import", "[", "ifile", "]"}], ",", "\n", "\t", "\"\<xls\>\"",
",",
RowBox[{"Import", "[",
RowBox[{"ifile", ",",
RowBox[{"{",
RowBox[{"\"\<data\>\"", ",", "1"}], "}"}]}], "]"}], ",", "\n", "\t",
"\"\<xlsx\>\"", ",",
RowBox[{"Import", "[",
RowBox[{"ifile", ",",
RowBox[{"{",
RowBox[{"\"\<data\>\"", ",", "1"}], "}"}]}], "]"}], ",", "\n", "\t",
"_", ",", "Nothing"}], "\n", "]"}]}], "\n", "\n",
RowBox[{"(*", " ",
RowBox[{
"Read", " ", "files", " ", "from", " ", "the", " ", "command", " ",
"line"}], " ", "*)"}], "\n",
RowBox[{
RowBox[{"tblInput", " ", "=", " ",
RowBox[{"readaddr", " ", "/@", " ", "flist"}]}], ";"}]}]}]], "Code",
CellChangeTimes->{{3.661180941084029*^9, 3.661180989012905*^9}, {
3.661261155776153*^9, 3.661261254656642*^9}, {3.661273718907856*^9,
3.6612737699482803`*^9}, {3.6612742613284187`*^9, 3.661274338578671*^9}, {
3.66127591037998*^9, 3.6612759454835167`*^9}, {3.6612759858296013`*^9,
3.661276043437615*^9}, 3.661276285600128*^9, {3.66142783452355*^9,
3.661427839003559*^9}, {3.6622306362691793`*^9, 3.66223063781308*^9}, {
3.662293387711464*^9, 3.6622933998076973`*^9}, {3.662313421284144*^9,
3.662313450847703*^9}, {3.6623134975903*^9, 3.6623136476475563`*^9}, {
3.6623137205425253`*^9, 3.662313785638163*^9}, {3.662314460599231*^9,
3.662314473870439*^9}, {3.6623154310977783`*^9, 3.6623155528506613`*^9}, {
3.662333994103444*^9, 3.662334064264983*^9}, {3.662334147948574*^9,
3.662334289592185*^9}, {3.662380537883997*^9, 3.662380595431275*^9}, {
3.662381053324932*^9, 3.662381066731118*^9}, {3.662393414930859*^9,
3.6623934223139143`*^9}, {3.6623938271021423`*^9, 3.662393828195018*^9}}],
Cell[BoxData["tblInput"], "Input",
CellChangeTimes->{{3.6612743584338007`*^9, 3.661274362241043*^9}}],
Cell[BoxData[
RowBox[{
RowBox[{"If", "[",
RowBox[{
RowBox[{"MemberQ", "[",
RowBox[{"tblInput", ",", "$Failed"}], "]"}], ",", "\[IndentingNewLine]",
"\t",
RowBox[{
RowBox[{
"Print", "[", "\"\<One or more files specified do not exist\>\"", "]"}],
";", "\n", "\t",
RowBox[{"Exit", "[", "1", "]"}]}], "\n", ",", "\n", "\t",
RowBox[{"Print", "[", "\"\<Input files Read\>\"", "]"}]}], "\n", "]"}],
"\n"}]], "Code",
CellChangeTimes->{{3.662390828289291*^9, 3.6623908436744967`*^9}, {
3.662390966512597*^9, 3.662391050877523*^9}, {3.662391122086591*^9,
3.662391128675333*^9}, {3.662391425364923*^9, 3.662391427258843*^9}, {
3.6623934298205233`*^9, 3.662393441411378*^9}, {3.66239383303333*^9,
3.662393834954504*^9}}],
Cell[BoxData[
RowBox[{
RowBox[{"(*", " ",
RowBox[{
"Define", " ", "Function", " ", "to", " ", "geolocate", " ", "adress", " ",
"list"}], " ", "*)"}], "\n",
RowBox[{
RowBox[{
RowBox[{"geoloc", "[", "input_", "]"}], " ", ":=", " ",
RowBox[{"Module", "[",
RowBox[{
RowBox[{"{",
RowBox[{"colAddresses", ",", " ", "colLocations", ",", " ", "tmp"}],
"}"}], ",", "\n", "\t",
RowBox[{"(*", " ",
RowBox[{
"Merge", " ", "address", " ", "components", " ", "into", " ", "a", " ",
"single", " ", "string"}], " ", "*)"}], "\n", "\t",
RowBox[{
RowBox[{"colAddresses", " ", "=", " ",
RowBox[{
RowBox[{
RowBox[{"StringJoin", "[",
RowBox[{"Riffle", "[",
RowBox[{"#", ",", " ", "\"\< \>\""}], "]"}], "]"}], " ", "&"}],
" ", "/@", " ", "input"}]}], ";", "\n", "\t",
RowBox[{"(*", " ",
RowBox[{
"Geolocate", " ", "the", " ", "address", " ", "on", " ", "Google"}],
" ", "*)"}], "\n", "\t",
RowBox[{"colLocations", " ", "=", " ",
RowBox[{
RowBox[{
RowBox[{"api", "[", "#", "]"}], " ", "&"}], " ", "/@", " ",
"colAddresses"}]}], ";", "\n", "\t",
RowBox[{"(*", " ",
RowBox[{
"flip", " ", "the", " ", "table", " ", "to", " ", "add", " ", "the",
" ", "latitude", " ", "and", " ", "longitude", " ", "as", " ",
"rows"}], " ", "*)"}], "\n", "\t",
RowBox[{"tmp", " ", "=", " ",
RowBox[{"Transpose", "[", "input", "]"}]}], ";", "\n", "\t",
RowBox[{"tmp", " ", "=", " ",
RowBox[{"Append", "[",
RowBox[{"tmp", ",", " ",
RowBox[{
RowBox[{
RowBox[{"First", "@", "#"}], " ", "&"}], " ", "/@", " ",
"colLocations"}]}], "]"}]}], ";", " ", "\n", "\t",
RowBox[{"tmp", " ", "=", " ",
RowBox[{"Append", "[",
RowBox[{"tmp", ",", " ",
RowBox[{
RowBox[{
RowBox[{"Last", "@", "#"}], " ", "&"}], " ", "/@", " ",
"colLocations"}]}], "]"}]}], ";", "\n", "\t",
RowBox[{"(*", " ",
RowBox[{
"Flip", " ", "the", " ", "table", " ", "back", " ", "to", " ",
"restore", " ", "columnar", " ", "format"}], " ", "*)"}], "\n", "\t",
RowBox[{"tmp", " ", "=", " ",
RowBox[{"Transpose", "[", "tmp", "]"}]}], ";", "\n", "\t",
RowBox[{"(*", " ",
RowBox[{
"Filter", " ", "out", " ", "any", " ", "addresses", " ", "not", " ",
"located"}], " ", "*)"}], "\n", "\t",
RowBox[{"Select", "[",
RowBox[{"tmp", ",",
RowBox[{
RowBox[{"NumberQ", "[",
RowBox[{
"#", "\[LeftDoubleBracket]", "6", "\[RightDoubleBracket]"}], "]"}],
"&"}]}], "]"}]}]}], "\n", "]"}]}], "\n", "\n",
RowBox[{"(*", " ",
RowBox[{
"Clean", " ", "Addresses", " ", "in", " ", "preparation", " ", "for", " ",
"plotting"}], " ", "*)"}], "\n",
RowBox[{"tblLoc", " ", "=", " ",
RowBox[{"Select", "[",
RowBox[{"tblInput", ",",
RowBox[{
RowBox[{"NumberQ", "[",
RowBox[{
RowBox[{"#", "\[LeftDoubleBracket]", "6", "\[RightDoubleBracket]"}],
"&"}], "]"}], ";", "\n",
RowBox[{
"Print", "[", "\"\<Address clense Complete\>\"",
"]"}]}]}]}]}]}]}]], "Code",
CellChangeTimes->{{3.660827768651039*^9, 3.660827792618745*^9}, {
3.6608278543949413`*^9, 3.660827886417905*^9}, {3.661261278146105*^9,
3.661261280049438*^9}, {3.6612613318277063`*^9, 3.661261337835417*^9}, {
3.661273904328816*^9, 3.6612739363623743`*^9}, {3.661274029861809*^9,
3.661274228565032*^9}, {3.661276326561861*^9, 3.661276375727179*^9}, {
3.661276497576407*^9, 3.66127651050342*^9}, {3.661276775681926*^9,
3.6612768057690763`*^9}, {3.661702673756043*^9, 3.661702717011818*^9}, {
3.6617028689681387`*^9, 3.661702872994285*^9}, {3.661709911769552*^9,
3.661709957264245*^9}, {3.6622934090399933`*^9, 3.662293433841061*^9}, {
3.673427510371832*^9, 3.67342760919062*^9}}],
Cell[BoxData["tblLoc"], "Input",
CellChangeTimes->{{3.6623914449259367`*^9, 3.662391447306925*^9}}],
Cell[BoxData[
RowBox[{
RowBox[{"(*", " ",
RowBox[{
"Convert", " ", "the", " ", "full", " ", "nested", " ", "list", " ",
"into", " ", "a", " ", "list", " ", "of", " ", "Goegraphic", " ",
"Coordinates", " ", "only"}], " ", "*)"}], " ", "\n",
RowBox[{
RowBox[{
RowBox[{"geoPos", " ", "=", " ",
RowBox[{"Map", "[",
RowBox[{
RowBox[{
RowBox[{"GeoPosition", "[",
RowBox[{"#", "\[LeftDoubleBracket]",
RowBox[{"{",
RowBox[{"6", ",", "7"}], "}"}], "\[RightDoubleBracket]"}], "]"}],
"&"}], ",", " ", "tblLoc", ",", " ",
RowBox[{"{", "2", "}"}]}], "]"}]}], ";"}], "\n",
RowBox[{
"Print", "[", "\"\<Coordinates converted to positions\>\"",
"]"}]}]}]], "Code",
CellChangeTimes->{{3.6617082539161787`*^9, 3.6617082773080387`*^9}, {
3.6617084374430103`*^9, 3.6617084391518784`*^9}, {3.661708489474711*^9,
3.6617084900361767`*^9}, {3.661709129650395*^9, 3.661709158870798*^9}, {
3.661709190614788*^9, 3.661709215049259*^9}, {3.661709277465858*^9,
3.661709297883792*^9}, {3.661709381652285*^9, 3.661709439106236*^9}, {
3.6617094803051233`*^9, 3.661709508800651*^9}, {3.6617095434296007`*^9,
3.661709565415947*^9}, {3.661709634285502*^9, 3.6617096363320417`*^9}, {
3.661709682638332*^9, 3.6617097123039293`*^9}, {3.66170976625231*^9,
3.661709773943122*^9}, {3.661710011354097*^9, 3.661710070709814*^9},
3.661710103942177*^9, {3.6622934401291437`*^9, 3.6622934587057457`*^9}, {
3.6622934998684597`*^9, 3.662293500170478*^9}}],
Cell[BoxData["geoPos"], "Input",
CellChangeTimes->{{3.661277249770049*^9, 3.661277251800713*^9}, {
3.6612773397164*^9, 3.66127734015623*^9}}],
Cell[BoxData[
RowBox[{
RowBox[{"(*", " ",
RowBox[{"Plot", " ", "the", " ", "locations"}], " ", "*)"}], "\n",
RowBox[{"(*", " ",
RowBox[{
"Use", " ", "Bit", " ", "operations", " ", "to", " ", "build", " ", "4",
" ", "cases", " ", "based", " ", "on", " ", "presence", " ", "of", " ",
"colour", " ", "and", " ", "legend", " ", "parameters"}], " ", "*)"}],
"\n",
RowBox[{"(*", " ",
RowBox[{
"0", " ", "no", " ", "colour", " ", "or", " ", "legend", " ",
"specified"}], " ", "*)"}], "\n",
RowBox[{"(*", " ",
RowBox[{
RowBox[{"1", " ", "Legends", " ", "specified"}], ",", " ",
RowBox[{"but", " ", "not", " ", "colours"}]}], " ", "*)"}], "\n",
RowBox[{"(*", " ",
RowBox[{
RowBox[{"2", " ", "Colours", " ", "specified"}], ",", " ",
RowBox[{"but", " ", "not", " ", "Legend"}]}], " ", "*)"}], "\n",
RowBox[{"(*", " ",
RowBox[{
"3", " ", "Both", " ", "Colours", " ", "and", " ", "Legend", " ",
"Specified"}], " ", "*)"}], "\n",
RowBox[{
RowBox[{"Switch", "[",
RowBox[{
RowBox[{
RowBox[{"If", "[",
RowBox[{
RowBox[{
RowBox[{"Length", "[", "clist", "]"}], ">", "0"}], ",",
RowBox[{"BitSet", "[",
RowBox[{"0", ",", "1"}], "]"}], ",", "0"}], "]"}], "+",
RowBox[{"If", "[",
RowBox[{
RowBox[{
RowBox[{"Length", "[", "legend", "]"}], ">", "0"}], ",",
RowBox[{"BitSet", "[",
RowBox[{"0", ",", "0"}], "]"}], ",", "0"}], "]"}]}], ",", "\n", "\t",
"0", ",",
RowBox[{
RowBox[{"imgGeoPlot", " ", "=", " ",
RowBox[{"GeoListPlot", "[",
RowBox[{"geoPos", ",",
RowBox[{"ImageSize", "\[Rule]", "1920"}]}], "]"}]}], ";"}], ",",
"\n", "\t", "1", ",",
RowBox[{
RowBox[{"imgGeoPlot", " ", "=", " ",
RowBox[{"GeoListPlot", "[",
RowBox[{"geoPos", ",",
RowBox[{"ImageSize", "\[Rule]", "1920"}], ",",
RowBox[{"PlotLegends", "\[Rule]", "legend"}]}], "]"}]}], ";"}], ",",
"\n", "\t", "2", ",",
RowBox[{
RowBox[{"imgGeoPlot", " ", "=", " ",
RowBox[{"GeoListPlot", "[",
RowBox[{"geoPos", ",",
RowBox[{"ImageSize", "\[Rule]", "1920"}], ",",
RowBox[{"PlotStyle", "\[Rule]", "clist"}]}], "]"}]}], ";"}], ",",
"\n", "\t", "3", ",",
RowBox[{
RowBox[{"imgGeoPlot", " ", "=", " ",
RowBox[{"GeoListPlot", "[",
RowBox[{"geoPos", ",",
RowBox[{"ImageSize", "\[Rule]", "1920"}], ",",
RowBox[{"PlotStyle", "\[Rule]", "clist"}], ",",
RowBox[{"PlotLegends", "\[Rule]", "legend"}]}], "]"}]}], ";"}], ",",
"\n", "\t", "_", ",", "Nothing"}], "]"}], "\n",
RowBox[{"Print", "[", "\"\<Locations plotted\>\"", "]"}]}]}]], "Code",
CellChangeTimes->{{3.660829435080468*^9, 3.660829553626563*^9}, {
3.660829593625475*^9, 3.6608296210633917`*^9}, {3.660831131085106*^9,
3.6608311319967203`*^9}, {3.6608311719591703`*^9,
3.6608311726886177`*^9}, {3.6608975363010798`*^9, 3.660897562568845*^9}, {
3.66108003016994*^9, 3.6610800404390583`*^9}, {3.6610818780217867`*^9,
3.661081921386609*^9}, {3.6611701892386923`*^9, 3.661170192558744*^9}, {
3.6611815427258177`*^9, 3.6611815466757812`*^9}, 3.661182542504429*^9, {
3.661203297063508*^9, 3.661203298549518*^9}, {3.661277395894855*^9,
3.661277397238447*^9}, {3.661277939714157*^9, 3.6612779503704367`*^9},
3.661710123316128*^9, {3.6622294531636667`*^9, 3.662229474145191*^9}, {
3.662229995615108*^9, 3.662230008535432*^9}, 3.662230736718123*^9, {
3.662230772288644*^9, 3.662230789510312*^9}, {3.662242770772409*^9,
3.6622428196123047`*^9}, {3.6622428617886467`*^9, 3.662242928871036*^9}, {
3.662242966209818*^9, 3.6622430127641993`*^9}, {3.662243055459545*^9,
3.6622431683532667`*^9}, {3.662243314031211*^9, 3.662243375643642*^9}, {
3.6622434352696123`*^9, 3.662243442596788*^9}, {3.6622434976926126`*^9,
3.662243501450798*^9}, {3.662243545804783*^9, 3.662243554385635*^9}, {
3.6622435877942657`*^9, 3.662243786388217*^9}, {3.662293466792733*^9,
3.66229349483438*^9}, {3.662393511129915*^9, 3.662393532701098*^9}}],
Cell[BoxData["imgGeoPlot"], "Input",
CellChangeTimes->{{3.661710138867299*^9, 3.66171014297235*^9}}],
Cell[BoxData[
RowBox[{
RowBox[{"(*", " ",
RowBox[{"Save", " ", "Graphic"}], " ", "*)"}], "\[IndentingNewLine]",
RowBox[{
RowBox[{"Export", "[",
RowBox[{"\"\<addrplot.jpg\>\"", ",", "imgGeoPlot"}], "]"}], "\n",
RowBox[{"Print", "[", "\"\<Output file created\>\"", "]"}]}]}]], "Code",
CellChangeTimes->{{3.6608309411916227`*^9, 3.660830958863791*^9}, {
3.6612774842348127`*^9, 3.6612775045059633`*^9}, {3.66229350794672*^9,
3.662293526979381*^9}}]
},
AutoGeneratedPackage->Automatic,
WindowSize->{808, 587},
WindowMargins->{{0, Automatic}, {Automatic, 0}},
FrontEndVersion->"10.4 for Mac OS X x86 (32-bit, 64-bit Kernel) (February 25, \
2016)",
StyleDefinitions->"Default.nb"
]
(* End of Notebook Content *)
(* Internal cache information *)
(*CellTagsOutline
CellTagsIndex->{}
*)
(*CellTagsIndex
CellTagsIndex->{}
*)
(*NotebookFileOutline
Notebook[{
Cell[558, 20, 2868, 71, 354, "Code"],
Cell[3429, 93, 5462, 94, 240, "Code"],
Cell[8894, 189, 6278, 114, 226, "Code"],
Cell[15175, 305, 98, 1, 28, "Input"],
Cell[15276, 308, 5226, 94, 350, "Code"],
Cell[20505, 404, 99, 1, 28, "Input"],
Cell[20607, 407, 99, 1, 28, "Input"],
Cell[20709, 410, 100, 1, 28, "Input"],
Cell[20812, 413, 2201, 45, 209, "Code"],
Cell[23016, 460, 102, 1, 28, "Input"],
Cell[23121, 463, 776, 18, 144, "Code"],
Cell[23900, 483, 4146, 97, 337, "Code"],
Cell[28049, 582, 100, 1, 28, "Input"],
Cell[28152, 585, 1562, 32, 82, "Code"],
Cell[29717, 619, 144, 2, 28, "Input"],
Cell[29864, 623, 4194, 90, 242, "Code"],
Cell[34061, 715, 101, 1, 28, "Input"],
Cell[34165, 718, 473, 10, 82, "Code"]
}
]
*)