-
Notifications
You must be signed in to change notification settings - Fork 0
/
What I Learned.html
683 lines (657 loc) · 50.3 KB
/
What I Learned.html
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
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
<meta charset="utf-8">
<meta name="generator" content="quarto-1.2.269">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>What I Learned</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
pre > code.sourceCode { white-space: pre; position: relative; }
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
pre > code.sourceCode > span:empty { height: 1.2em; }
.sourceCode { overflow: visible; }
code.sourceCode > span { color: inherit; text-decoration: inherit; }
div.sourceCode { margin: 1em 0; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
pre > code.sourceCode { white-space: pre-wrap; }
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
}
pre.numberSource code
{ counter-reset: source-line 0; }
pre.numberSource code > span
{ position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code > span > a:first-child::before
{ content: counter(source-line);
position: relative; left: -1em; text-align: right; vertical-align: baseline;
border: none; display: inline-block;
-webkit-touch-callout: none; -webkit-user-select: none;
-khtml-user-select: none; -moz-user-select: none;
-ms-user-select: none; user-select: none;
padding: 0 4px; width: 4em;
color: #aaaaaa;
}
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
div.sourceCode
{ }
@media screen {
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
}
code span.al { color: #ff0000; font-weight: bold; } /* Alert */
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
code span.at { color: #7d9029; } /* Attribute */
code span.bn { color: #40a070; } /* BaseN */
code span.bu { color: #008000; } /* BuiltIn */
code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
code span.ch { color: #4070a0; } /* Char */
code span.cn { color: #880000; } /* Constant */
code span.co { color: #60a0b0; font-style: italic; } /* Comment */
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
code span.do { color: #ba2121; font-style: italic; } /* Documentation */
code span.dt { color: #902000; } /* DataType */
code span.dv { color: #40a070; } /* DecVal */
code span.er { color: #ff0000; font-weight: bold; } /* Error */
code span.ex { } /* Extension */
code span.fl { color: #40a070; } /* Float */
code span.fu { color: #06287e; } /* Function */
code span.im { color: #008000; font-weight: bold; } /* Import */
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
code span.kw { color: #007020; font-weight: bold; } /* Keyword */
code span.op { color: #666666; } /* Operator */
code span.ot { color: #007020; } /* Other */
code span.pp { color: #bc7a00; } /* Preprocessor */
code span.sc { color: #4070a0; } /* SpecialChar */
code span.ss { color: #bb6688; } /* SpecialString */
code span.st { color: #4070a0; } /* String */
code span.va { color: #19177c; } /* Variable */
code span.vs { color: #4070a0; } /* VerbatimString */
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
</style>
<script src="What I Learned_files/libs/clipboard/clipboard.min.js"></script>
<script src="What I Learned_files/libs/quarto-html/quarto.js"></script>
<script src="What I Learned_files/libs/quarto-html/popper.min.js"></script>
<script src="What I Learned_files/libs/quarto-html/tippy.umd.min.js"></script>
<script src="What I Learned_files/libs/quarto-html/anchor.min.js"></script>
<link href="What I Learned_files/libs/quarto-html/tippy.css" rel="stylesheet">
<link href="What I Learned_files/libs/quarto-html/quarto-syntax-highlighting.css" rel="stylesheet" id="quarto-text-highlighting-styles">
<script src="What I Learned_files/libs/bootstrap/bootstrap.min.js"></script>
<link href="What I Learned_files/libs/bootstrap/bootstrap-icons.css" rel="stylesheet">
<link href="What I Learned_files/libs/bootstrap/bootstrap.min.css" rel="stylesheet" id="quarto-bootstrap" data-mode="light">
</head>
<body class="fullcontent">
<div id="quarto-content" class="page-columns page-rows-contents page-layout-article">
<main class="content" id="quarto-document-content">
<header id="title-block-header" class="quarto-title-block default">
<div class="quarto-title">
<h1 class="title">What I Learned</h1>
</div>
<div class="quarto-title-meta">
</div>
</header>
<section id="workshop-website" class="level1">
<h1><a href="https://ioos.github.io/bio_mobilization_workshop/">Workshop Website</a></h1>
<hr>
</section>
<section id="intro-to-obis-and-darwin-core" class="level1">
<h1>Intro to OBIS and Darwin Core</h1>
<section id="what-is-obis" class="level2">
<h2 class="anchored" data-anchor-id="what-is-obis">What is OBIS?</h2>
<p>OBIS is a global open-access data and information clearing-house on marine biodiversity for science, conservation and sustainable development.</p>
<p>This workshop focused on mobilizing our data to OBIS by standardizing our data using Darwin Core</p>
</section>
<section id="what-is-darwin-core" class="level2">
<h2 class="anchored" data-anchor-id="what-is-darwin-core">What is Darwin Core?</h2>
<p>Darwin Core is a data standard to mobilize and share biodiversity data</p>
<p>Its a global community of data sharing and integration</p>
</section>
<section id="how-do-they-interact" class="level2">
<h2 class="anchored" data-anchor-id="how-do-they-interact">How do they interact?</h2>
<p>OBIS uses Darwin Core standards and Archives directly to enable standardization of data, as well as exchange and sharing of diverse types of biological observations</p>
<hr>
</section>
</section>
<section id="taikis-work-from-last-years-workshop" class="level1">
<h1>Taiki’s Work From Last Years Workshop</h1>
<section id="our-data-and-darwin-core-mapping" class="level2">
<h2 class="anchored" data-anchor-id="our-data-and-darwin-core-mapping">Our Data and Darwin Core Mapping</h2>
<p>Taiki did A LOT of hard work mapping our data outputs to Darwin Core standards and OBIS requirements</p>
<ul>
<li><p>Using a <a href="https://dwc.tdwg.org/terms/">Darwin Core Quick Reference Guide</a>, Taiki matched up all of our data terms to the DwC terms</p></li>
<li><p>We should consider adding a <code>datasetID</code> (unique identifier) and <code>datasetName</code> columns to our event table once we have published the raw data to NCEI</p></li>
</ul>
</section>
<section id="data-cleaning" class="level2">
<h2 class="anchored" data-anchor-id="data-cleaning">Data Cleaning</h2>
<p>Taiki did all of the data cleaning last year, which included formatting dates to <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a> standards, matching our scientific name abbreviations to <a href="https://www.marinespecies.org/">World Register of Marine Species (WoRMS)</a>, checking coordinates to make sure they are in decimal degrees, and other data prep steps.</p>
<ul>
<li>Here’s a snapshot of our event core table</li>
</ul>
<div class="cell">
<div class="sourceCode cell-code" id="cb1"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a>CCESTest_Event <span class="ot"><-</span> <span class="fu">read.csv</span>(<span class="st">'Taikis code and datasets</span><span class="sc">\\</span><span class="st">CCESTest_Event.csv'</span>)</span>
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a><span class="fu">head</span>(CCESTest_Event)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-stdout">
<pre><code> eventID eventDate
1 CCES_Drift-10_2018-08-22T02:10:04Z 2018-08-22T02:10:04Z/2018-10-21T23:22:59Z
2 CCES_Drift-12_2018-08-30T02:58:47Z 2018-08-30T02:58:47Z/2018-10-06T16:44:19Z
3 CCES_Drift-13_2018-09-11T20:36:35Z 2018-09-11T20:36:35Z/2018-10-23T02:59:48Z
4 CCES_Drift-15_2018-10-08T23:22:00Z 2018-10-08T23:22:00Z/2018-11-01T16:32:00Z
5 CCES_Drift-16_2018-10-30T14:46:38Z 2018-10-30T14:46:38Z/2018-11-21T03:49:20Z
6 CCES_Drift-17_2018-10-31T00:07:02Z 2018-10-31T00:07:02Z/2018-11-24T04:32:07Z
decimalLatitude decimalLongitude countryCode
1 36.17246 -123.4257 US
2 34.25619 -124.3175 US
3 32.65911 -120.8137 US
4 32.01544 -118.2942 US
5 31.52831 -118.1134 US
6 29.08434 -118.7089 US
footprintWKT
1 LINESTRING (-125.0568 36.75908, -125.0327 36.72207, -125.0235 36.63807, -124.9907 36.50332, -124.9197 36.3878, -124.814 36.26883, -124.6408 36.15639, -124.4012 36.09795, -124.1759 36.08572, -123.9543 36.1114, -123.8161 36.15342, -123.7268 36.20549, -123.6695 36.26767, -123.5976 36.3566, -123.5437 36.45452, -123.5024 36.53171, -123.4661 36.57149, -123.4059 36.591, -123.3208 36.60548, -123.1882 36.60412, -123.0354 36.59472, -122.914 36.5619, -122.8167 36.51672, -122.7434 36.43792, -122.6822 36.29587, -122.6615 36.10271, -122.6972 35.95176, -122.7558 35.82729, -122.9869 35.84016, -123.0779 35.93121, -123.0306 36.06974, -122.9313 36.11224, -122.8506 36.07081, -122.8908 35.92934, -123.0348 35.87009, -123.167 35.94397, -123.1896 36.04219, -123.1458 36.13535, -123.0534 36.16471, -122.92 36.14571, -122.8513 36.05424, -122.8621 35.94399, -123.0502 35.85522, -123.0971 35.86445, -123.1954 35.94193, -123.1967 36.02726, -123.1169 36.03993, -123.1175 36.00192, -123.1135 35.96201, -123.1577 35.96478, -123.2084 35.99211, -123.248 36.0447, -123.2689 36.09182, -123.2705 36.12917, -123.2565 36.17556, -123.2135 36.20293, -123.1519 36.19658, -123.0863 36.15676, -123.0518 36.09011, -123.0509 36.03687, -123.0305 36.00715)
2 LINESTRING (-123.8171 34.83067, -124.0067 34.82522, -124.2171 34.74827, -124.3947 34.60096, -124.4128 34.49088, -123.9596 33.98466, -124.4253 34.44766, -124.504 34.42307, -124.5957 34.35142, -124.5411 34.26184, -124.4391 34.23691, -124.374 34.24314, -124.354 34.25634, -124.3567 34.25872, -124.3596 34.25959, -124.3586 34.26606, -124.3628 34.25666, -124.3657 34.26094, -124.3765 34.25249, -124.3943 34.2458, -124.4654 34.23273, -124.6304 34.18176, -124.7673 34.08734, -124.7292 33.97437, -124.5363 33.90072, -124.3382 33.9551, -124.2236 34.02571, -124.1676 34.11496, -124.208 34.17875, -124.3216 34.18872, -124.4047 34.12252, -124.3709 34.05804, -124.2463 34.05564, -124.1511 34.15334, -124.204 34.2597, -124.2338 34.27504, -124.3343 34.21381, -124.3929 34.09378)
3 LINESTRING (-120.9072 33.89781, -120.9438 33.83342, -120.9584 33.77513, -120.9904 33.71516, -121.0486 33.66136, -121.1576 33.59911, -121.2437 33.54762, -121.3021 33.52304, -121.359 33.5192, -121.383 33.52235, -121.4002 33.53473, -121.3911 33.52197, -121.3808 33.48646, -121.3888 33.42396, -121.3943 33.36274, -121.3813 33.29584, -121.3616 33.19751, -121.3316 33.07401, -121.2879 32.93156, -121.2214 32.80515, -121.1638 32.69241, -121.0992 32.59902, -121.0149 32.53772, -120.9513 32.47794, -120.8947 32.41693, -120.8644 32.32911, -120.8008 32.23164, -120.6994 32.18562, -120.5935 32.163, -120.4838 32.15381, -120.4025 32.1473, -120.3437 32.1451, -120.2938 32.12614, -120.2593 32.09995, -120.2323 32.06686, -120.1938 32.00681, -120.1441 31.92804, -120.0926 31.83216, -120.0278 31.71691, -119.9588 31.61806, -119.8824 31.53826, -119.8162 31.48011)
4 LINESTRING (-117.8558 32.32964, -117.7698 32.29253, -117.72 32.23749, -117.6979 32.16525, -117.7136 32.06286, -117.7798 31.96176, -117.9057 31.88226, -118.0608 31.86696, -118.18 31.90607, -118.2553 31.94485, -118.3088 31.97687, -118.3459 32.00887, -118.3628 32.03537, -118.3779 32.05038, -118.4079 32.05697, -118.4418 32.06197, -118.4869 32.06378, -118.5438 32.06826, -118.6123 32.05879, -118.6922 32.04386, -118.8053 32.00875, -118.9603 31.95157, -119.0641 31.93779, -119.1779 31.93987)
5 LINESTRING (-117.4202 31.35193, -117.5154 31.27649, -117.6327 31.21602, -117.7569 31.19053, -117.8666 31.1861, -117.9769 31.21426, -118.0888 31.25159, -118.1952 31.29248, -118.2909 31.34732, -118.365 31.4112, -118.4265 31.49155, -118.4663 31.58283, -118.4748 31.66718, -118.4583 31.75715, -118.4322 31.85415, -118.383 31.93106, -118.3162 31.98967, -118.2507 32.03923, -118.1877 32.0795, -118.1279 32.10498, -118.0895 32.12075, -118.053 32.13052)
6 LINESTRING (-118.6937 30.72285, -118.7397 30.51219, -118.74 30.24084, -118.705 29.9228, -118.6837 29.64204, -118.6903 29.44796, -118.7216 29.28134, -118.7474 29.14767, -118.776 29.02344, -118.7827 28.87188, -118.7706 28.71918, -118.7137 28.55671, -118.6077 28.42531, -118.4762 28.37467, -118.3897 28.44102, -118.3839 28.54234, -118.4769 28.65923, -118.6375 28.75518, -118.8083 28.79415, -118.9606 28.69516, -119.0015 28.5167, -118.9085 28.35555, -118.7772 28.24899, -118.6226 28.21811, -118.4573 28.27345)
footprintSRS geodeticDatum georeferenceProtocol
1 epsg:4326 WGS84 SPOT GPS
2 epsg:4326 WGS84 SPOT GPS
3 epsg:4326 WGS84 SPOT GPS
4 epsg:4326 WGS84 SPOT GPS
5 epsg:4326 WGS84 SPOT GPS
6 epsg:4326 WGS84 SPOT GPS
samplingProtocol
1 https://doi.org/10.6084/m9.figshare.19358036
2 https://doi.org/10.6084/m9.figshare.19358036
3 https://doi.org/10.6084/m9.figshare.19358036
4 https://doi.org/10.6084/m9.figshare.19358036
5 https://doi.org/10.6084/m9.figshare.19358036
6 https://doi.org/10.6084/m9.figshare.19358036</code></pre>
</div>
</div>
<ul>
<li>Here’s a snapshot of our occurrence extension table</li>
</ul>
<div class="cell">
<div class="sourceCode cell-code" id="cb3"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a>CCESTest_Occur <span class="ot"><-</span> <span class="fu">read.csv</span>(<span class="st">'Taikis code and datasets</span><span class="sc">\\</span><span class="st">CCESTest_Occur.csv'</span>)</span>
<span id="cb3-2"><a href="#cb3-2" aria-hidden="true" tabindex="-1"></a><span class="fu">head</span>(CCESTest_Occur)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-stdout">
<pre><code> occurrenceID basisOfRecord
1 CCES_Drift-10_2018-08-23T05:05:12_ZC MachineObservation
2 CCES_Drift-10_2018-08-24T13:25:03_ZC MachineObservation
3 CCES_Drift-10_2018-08-24T19:25:25_ZC MachineObservation
4 CCES_Drift-10_2018-08-24T21:46:01_ZC MachineObservation
5 CCES_Drift-10_2018-08-25T06:05:41_ZC MachineObservation
6 CCES_Drift-10_2018-08-25T08:05:24_ZC MachineObservation
eventDate decimalLatitude decimalLongitude
1 2018-08-23T05:05:12Z/2018-08-23T05:05:16Z 36.72499 -125.0416
2 2018-08-24T13:25:03Z/2018-08-24T13:26:33Z 36.57795 -125.0127
3 2018-08-24T19:25:25Z/2018-08-24T19:25:31Z 36.55189 -125.0141
4 2018-08-24T21:46:01Z/2018-08-24T21:46:43Z 36.53938 -125.0060
5 2018-08-25T06:05:41Z/2018-08-25T06:06:21Z 36.48165 -124.9966
6 2018-08-25T08:05:24Z/2018-08-25T08:05:24Z 36.47364 -124.9965
occurrenceStatus countryCode geodeticDatum institutionCode
1 present US WGS84 SWFSC
2 present US WGS84 SWFSC
3 present US WGS84 SWFSC
4 present US WGS84 SWFSC
5 present US WGS84 SWFSC
6 present US WGS84 SWFSC
georeferenceProtocol samplingProtocol
1 SPOT GPS https://doi.org/10.6084/m9.figshare.19358036
2 SPOT GPS https://doi.org/10.6084/m9.figshare.19358036
3 SPOT GPS https://doi.org/10.6084/m9.figshare.19358036
4 SPOT GPS https://doi.org/10.6084/m9.figshare.19358036
5 SPOT GPS https://doi.org/10.6084/m9.figshare.19358036
6 SPOT GPS https://doi.org/10.6084/m9.figshare.19358036
scientificName scientificNameID kingdom
1 Ziphius cavirostris urn:lsid:marinespecies.org:taxname:137127 Animalia
2 Ziphius cavirostris urn:lsid:marinespecies.org:taxname:137127 Animalia
3 Ziphius cavirostris urn:lsid:marinespecies.org:taxname:137127 Animalia
4 Ziphius cavirostris urn:lsid:marinespecies.org:taxname:137127 Animalia
5 Ziphius cavirostris urn:lsid:marinespecies.org:taxname:137127 Animalia
6 Ziphius cavirostris urn:lsid:marinespecies.org:taxname:137127 Animalia
taxonRank coordinateUncertaintyInMeters parentEventID
1 Species 4000 CCES_Drift-10_2018-08-22T02:10:04Z
2 Species 4000 CCES_Drift-10_2018-08-22T02:10:04Z
3 Species 4000 CCES_Drift-10_2018-08-22T02:10:04Z
4 Species 4000 CCES_Drift-10_2018-08-22T02:10:04Z
5 Species 4000 CCES_Drift-10_2018-08-22T02:10:04Z
6 Species 4000 CCES_Drift-10_2018-08-22T02:10:04Z</code></pre>
</div>
</div>
<hr>
</section>
</section>
<section id="my-work-ideas" class="level1">
<h1>My Work & Ideas</h1>
<section id="cores-and-extension-schema" class="level2">
<h2 class="anchored" data-anchor-id="cores-and-extension-schema">Cores and Extension Schema</h2>
<ul>
<li><p>Our data follows the Event Core with Occurrence Extension format, meaning we have set events (OBIS events = Drifts) and occurrences that link to those events (OBIS occurrences = PAMPal events)</p>
<ul>
<li><p>The data types in these tables are limited by OBIS standards and Darwin Core Terms</p></li>
<li><p>If there isn’t a Darwin Core Term for one of our data columns, we cannot add it to the event or occurrence table</p></li>
</ul></li>
<li><p>Solution^: We can consider adding another extension table (extended measurement of fact - eMoF) with additional data that are unconstrained, and would not be restricted by Darwin Core Terms</p>
<ul>
<li><p>We would need to try to find our terms unique resource identifiers (URI) to populate a <code>measurmentTypeID</code> field, using <a href="http://vocab.nerc.ac.uk/collection/P01/current/SDBIOL02/">NERC Vocab</a> and the <a href="http://vocab.nerc.ac.uk/search_nvs/P01/?searchstr=&options=identifier,preflabel,altlabel,status_accepted&rbaddfilter=inc&searchstr2=">P01 collection</a></p>
<ul>
<li>If we cannot find NERC or P01 term to match ours, we can <a href="https://github.com/nvs-vocabs/P01">request a new URI</a> to be made, then others can use that standardized identifier for their data</li>
</ul></li>
<li><p>The extension tables can be linked to the Event Core table or the Occurrence table through <code>eventID</code> or <code>occurrenceID</code></p></li>
</ul></li>
</ul>
<p><img src="images/paste-159D906F.png" class="img-fluid"></p>
</section>
<section id="qaqc" class="level2">
<h2 class="anchored" data-anchor-id="qaqc">QAQC</h2>
<section id="intro" class="level3">
<h3 class="anchored" data-anchor-id="intro">Intro</h3>
<p>OBIS performs <a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4309024/pdf/bau125.pdf">quality checks</a> on all of the data it receives. The following QAQC will ensure your data is prepared and has met the minimum requirements, to limit publishing errors and identify outliers or “faulty” data. Most of the following steps can be completed using <a href="https://github.com/iobis/obistools">OBIStools functions</a>. Data quality checks need to be completed for each table (event, occurrence, and eMoF), however there may be different steps for each table.</p>
</section>
<section id="install-and-load-packages" class="level3">
<h3 class="anchored" data-anchor-id="install-and-load-packages">Install and load packages</h3>
<div class="cell">
<div class="sourceCode cell-code" id="cb5"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a><span class="co">#devtools::install_github("iobis/obistools")</span></span>
<span id="cb5-2"><a href="#cb5-2" aria-hidden="true" tabindex="-1"></a><span class="co">#install.packages('Hmisc')</span></span>
<span id="cb5-3"><a href="#cb5-3" aria-hidden="true" tabindex="-1"></a><span class="fu">library</span>(devtools)</span>
<span id="cb5-4"><a href="#cb5-4" aria-hidden="true" tabindex="-1"></a><span class="fu">library</span>(readxl)</span>
<span id="cb5-5"><a href="#cb5-5" aria-hidden="true" tabindex="-1"></a><span class="fu">library</span>(obistools)</span>
<span id="cb5-6"><a href="#cb5-6" aria-hidden="true" tabindex="-1"></a><span class="fu">library</span>(Hmisc)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
</section>
<section id="recommended-qaqc-steps-to-consider" class="level3">
<h3 class="anchored" data-anchor-id="recommended-qaqc-steps-to-consider">Recommended QAQC Steps to Consider</h3>
<ol type="1">
<li><p>Check that all the <a href="https://ioos.github.io/bio_mobilization_workshop/01-introduction/index.html#what-are-the-required-darwin-core-terms-for-publishing-to-obis">required Darwin Core terms</a> and OBIS fields are present and contain the correct information</p>
<ol type="1">
<li><p><code>check_fields()</code></p></li>
<li><p><a href="https://dwc.tdwg.org/terms/">Additional Darwin Core Terms</a></p></li>
</ol></li>
<li><p>Make a map from your data to ensure the coordinates are valid and within your expected range</p>
<ol type="1">
<li><p>completed in <a href="https://github.com/iobis/obistools#data-quality-report"><code>report()</code> OBIS function</a></p></li>
<li><p>You can also use <a href="https://github.com/iobis/obistools#plot-points-on-a-map"><code>plot_map()</code> or <code>plot_map_leaflet()</code></a> for occurrence records</p></li>
</ol></li>
<li><p>Run basic statistics on each column of numeric data (min, max, mean, std. dev., etc.) to identify potential issues</p>
<ol type="1">
<li><p>Some summary statistics can be found using <a href="https://github.com/iobis/obistools#data-quality-report"><code>report()</code> OBIS function</a></p></li>
<li><p>You can also use the Hmisc package with the <a href="https://rdrr.io/cran/Hmisc/man/describe.html"><code>describe()</code> function</a></p></li>
<li><p>If we have a lot of quantitative data, we can use other summary statistic functions to quality check those</p></li>
</ol></li>
<li><p>Look at unique values of columns containing string entries to identify potential issues (eg. spelling)</p></li>
<li><p>Check for uniqueness of <code>occurrenceID</code> field</p></li>
<li><p>Check for uniqueness of <code>eventID</code> for each event, if applicable</p>
<ol type="1">
<li><a href="https://github.com/iobis/obistools#check-eventid-and-parenteventid"><code>eventid <- obistools::check_eventids()</code></a></li>
</ol></li>
<li><p>Check that dates are following <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO-8601</a></p></li>
<li><p>Check that the scientific names are valid</p>
<ol type="1">
<li><p>OBIS uses the <a href="https://www.marinespecies.org/">World Register of Marine Species (WoRMS)</a> as the taxonomic backbone. We need to match our species abbreviations to WoRMS naming</p></li>
<li><p><a href="https://github.com/iobis/obistools#taxon-matching"><code>obistools::match_taxa()</code></a> performs interactive taxon matching with WoRMS</p></li>
</ol></li>
</ol>
</section>
<section id="event-table-qaqc-steps" class="level3">
<h3 class="anchored" data-anchor-id="event-table-qaqc-steps">Event Table QAQC Steps</h3>
<hr>
<section id="step-1-run-a-diagnosticssummary-report-for-the-data-quality" class="level4">
<h4 class="anchored" data-anchor-id="step-1-run-a-diagnosticssummary-report-for-the-data-quality">Step 1: Run a diagnostics/summary report for the data quality</h4>
<div class="cell">
<div class="sourceCode cell-code" id="cb6"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true" tabindex="-1"></a><span class="co">#This will return a diagonistic report including a map of the events and general errors & warnings </span></span>
<span id="cb6-2"><a href="#cb6-2" aria-hidden="true" tabindex="-1"></a>EventReport <span class="ot"><-</span> <span class="fu">report</span>(eventTable) </span>
<span id="cb6-3"><a href="#cb6-3" aria-hidden="true" tabindex="-1"></a>EventReport</span>
<span id="cb6-4"><a href="#cb6-4" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb6-5"><a href="#cb6-5" aria-hidden="true" tabindex="-1"></a><span class="co">#You can also run the Hmisc describe() function for a summary of the data</span></span>
<span id="cb6-6"><a href="#cb6-6" aria-hidden="true" tabindex="-1"></a><span class="fu">describe</span>(eventTable)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
</section>
<section id="step-2-check-to-make-sure-eventid-are-unique" class="level4">
<h4 class="anchored" data-anchor-id="step-2-check-to-make-sure-eventid-are-unique">Step 2: Check to make sure <code>eventID</code> are unique</h4>
<div class="cell">
<div class="sourceCode cell-code" id="cb7"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true" tabindex="-1"></a>eventid <span class="ot"><-</span> <span class="fu">check_eventids</span>(eventTable)</span>
<span id="cb7-2"><a href="#cb7-2" aria-hidden="true" tabindex="-1"></a><span class="fu">head</span>(eventid)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
</section>
<section id="step-3-check-for-proper-eventdate-to-ensure-they-follow-iso-8601-standards" class="level4">
<h4 class="anchored" data-anchor-id="step-3-check-for-proper-eventdate-to-ensure-they-follow-iso-8601-standards">Step 3: Check for proper <code>eventDate</code> to ensure they follow ISO 8601 standards</h4>
<div class="cell">
<div class="sourceCode cell-code" id="cb8"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a><span class="fu">check_eventdate</span>(eventTable)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
</section>
</section>
<section id="occurrence-table-qaqc-steps" class="level3">
<h3 class="anchored" data-anchor-id="occurrence-table-qaqc-steps">Occurrence Table QAQC Steps</h3>
<hr>
<section id="step-1-run-a-diagnosticssummary-report-for-the-data-quality-1" class="level4">
<h4 class="anchored" data-anchor-id="step-1-run-a-diagnosticssummary-report-for-the-data-quality-1">Step 1: Run a diagnostics/summary report for the data quality</h4>
<div class="cell">
<div class="sourceCode cell-code" id="cb9"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true" tabindex="-1"></a><span class="co">#This will check if all OBIS required fields are present in the occurence table</span></span>
<span id="cb9-2"><a href="#cb9-2" aria-hidden="true" tabindex="-1"></a><span class="fu">check_fields</span>(occurrenceTable)</span>
<span id="cb9-3"><a href="#cb9-3" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb9-4"><a href="#cb9-4" aria-hidden="true" tabindex="-1"></a><span class="co">#This will return a diagonistic report including a map of the occurrences and general errors & warnings</span></span>
<span id="cb9-5"><a href="#cb9-5" aria-hidden="true" tabindex="-1"></a>OccurReport <span class="ot"><-</span> <span class="fu">report</span>(occurrenceTable) </span>
<span id="cb9-6"><a href="#cb9-6" aria-hidden="true" tabindex="-1"></a>OccurReport</span>
<span id="cb9-7"><a href="#cb9-7" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb9-8"><a href="#cb9-8" aria-hidden="true" tabindex="-1"></a><span class="co">#You can also run the Hmisc describe() function for a summary of the data</span></span>
<span id="cb9-9"><a href="#cb9-9" aria-hidden="true" tabindex="-1"></a><span class="fu">describe</span>(occurrenceTable)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
</section>
<section id="step-2-check-to-make-sure-occurrenceid-are-unique" class="level4">
<h4 class="anchored" data-anchor-id="step-2-check-to-make-sure-occurrenceid-are-unique">Step 2: Check to make sure <code>occurrenceID</code> are unique</h4>
<div class="cell">
<div class="sourceCode cell-code" id="cb10"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true" tabindex="-1"></a><span class="co">#I think this can be completed using describe() function as well. It returns n, missing, and distinct for each column but I imagine we can select one column using $</span></span>
<span id="cb10-2"><a href="#cb10-2" aria-hidden="true" tabindex="-1"></a><span class="fu">describe</span>(occurrenceTable<span class="sc">$</span>occurrenceID)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
</section>
<section id="step-3-check-for-proper-eventdate-to-ensure-they-follow-iso-8601-standards-1" class="level4">
<h4 class="anchored" data-anchor-id="step-3-check-for-proper-eventdate-to-ensure-they-follow-iso-8601-standards-1">Step 3: Check for proper <code>eventDate</code> to ensure they follow ISO 8601 standards</h4>
<div class="cell">
<div class="sourceCode cell-code" id="cb11"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb11-1"><a href="#cb11-1" aria-hidden="true" tabindex="-1"></a><span class="fu">check_eventdate</span>(occurrenceTable)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
</section>
<section id="step-4-check-that-the-scientificnameid-are-valid" class="level4">
<h4 class="anchored" data-anchor-id="step-4-check-that-the-scientificnameid-are-valid">Step 4: Check that the <code>scientificNameID</code> are valid</h4>
<div class="cell">
<div class="sourceCode cell-code" id="cb12"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb12-1"><a href="#cb12-1" aria-hidden="true" tabindex="-1"></a><span class="co">#OBIS uses </span></span>
<span id="cb12-2"><a href="#cb12-2" aria-hidden="true" tabindex="-1"></a><span class="co">#Not 100% sure on the best way to do this but heres my idea</span></span>
<span id="cb12-3"><a href="#cb12-3" aria-hidden="true" tabindex="-1"></a><span class="co">#names <- some function to pull out all of the scientificNameID from our occurrence table</span></span>
<span id="cb12-4"><a href="#cb12-4" aria-hidden="true" tabindex="-1"></a><span class="fu">match_taxa</span>(names)</span>
<span id="cb12-5"><a href="#cb12-5" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb12-6"><a href="#cb12-6" aria-hidden="true" tabindex="-1"></a><span class="co">#this should return n names, n without matches, n with multiple matches</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
</section>
</section>
<section id="emof-table-qaqc-steps" class="level3">
<h3 class="anchored" data-anchor-id="emof-table-qaqc-steps">eMoF Table QAQC Steps</h3>
<hr>
<p>fill in steps here if we move forward with creating eMoF table (extended measurement or fact extension table)</p>
</section>
<section id="obis-workshop-example-code" class="level3">
<h3 class="anchored" data-anchor-id="obis-workshop-example-code">OBIS Workshop Example Code</h3>
<hr>
<section id="hmiscdescribe-function" class="level4">
<h4 class="anchored" data-anchor-id="hmiscdescribe-function"><code>Hmisc::describe()</code> Function</h4>
<div class="cell">
<div class="sourceCode cell-code" id="cb13"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb13-1"><a href="#cb13-1" aria-hidden="true" tabindex="-1"></a><span class="co"># pull in the occurrence file from https://www.sciencebase.gov/catalog/item/53a887f4e4b075096c60cfdd</span></span>
<span id="cb13-2"><a href="#cb13-2" aria-hidden="true" tabindex="-1"></a><span class="co">#url not working</span></span>
<span id="cb13-3"><a href="#cb13-3" aria-hidden="true" tabindex="-1"></a><span class="co">#url <- "https://www.sciencebase.gov/catalog/file/get/53a887f4e4b075096c60cfdd?f=__disk__32%2F24%2F80%2F322480c9bcbad19030e29c9ec5e2caeb54cb4a08&allowOpen=true"</span></span>
<span id="cb13-4"><a href="#cb13-4" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb13-5"><a href="#cb13-5" aria-hidden="true" tabindex="-1"></a>occurrence <span class="ot"><-</span> <span class="fu">read.csv</span>(<span class="st">'53a887f4e4b075096c60cfdd.csv'</span>)</span>
<span id="cb13-6"><a href="#cb13-6" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb13-7"><a href="#cb13-7" aria-hidden="true" tabindex="-1"></a><span class="fu">head</span>(occurrence,<span class="at">n=</span><span class="dv">1</span>)</span>
<span id="cb13-8"><a href="#cb13-8" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb13-9"><a href="#cb13-9" aria-hidden="true" tabindex="-1"></a>Hmisc<span class="sc">::</span><span class="fu">describe</span>(occurrence)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
</section>
<section id="workshop-exercise" class="level4">
<h4 class="anchored" data-anchor-id="workshop-exercise">Workshop Exercise</h4>
<hr>
<p>Code not working, <a href="https://ioos.github.io/bio_mobilization_workshop/06-qa-qc/index.html">link to workshop example</a></p>
<ol type="1">
<li><p>Run a diagnostics report for the data quality</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb14"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb14-1"><a href="#cb14-1" aria-hidden="true" tabindex="-1"></a>trawl_fish <span class="ot"><-</span> readxl<span class="sc">::</span><span class="fu">read_excel</span>(<span class="st">'trawl_fish.xlsx'</span>)</span>
<span id="cb14-2"><a href="#cb14-2" aria-hidden="true" tabindex="-1"></a>report <span class="ot"><-</span> obistools<span class="sc">::</span><span class="fu">report</span>(trawl_fish)</span>
<span id="cb14-3"><a href="#cb14-3" aria-hidden="true" tabindex="-1"></a>report</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div></li>
<li><p>Check to make sure <code>eventID</code> are unique</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb15"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb15-1"><a href="#cb15-1" aria-hidden="true" tabindex="-1"></a>eventid <span class="ot"><-</span> obistools<span class="sc">::</span><span class="fu">check_eventids</span>(trawl_fish)</span>
<span id="cb15-2"><a href="#cb15-2" aria-hidden="true" tabindex="-1"></a><span class="fu">head</span>(eventid)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div></li>
<li><p>Check for proper <code>eventDate</code> to ensure they follow ISO 8601 standards</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb16"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb16-1"><a href="#cb16-1" aria-hidden="true" tabindex="-1"></a>eventDate <span class="ot"><-</span> obistools<span class="sc">::</span><span class="fu">check_eventdate</span>(trawl_fish)</span>
<span id="cb16-2"><a href="#cb16-2" aria-hidden="true" tabindex="-1"></a><span class="fu">print</span>(eventDate)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div></li>
<li><p>From the report generated under exercise 1, you can already see that there’s measurements made on land. This information can also be gathered by plotting the map separately or using the <code>check_onland()</code> or <code>check_depth()</code> functions in the <a href="https://iobis.github.io/obistools/">obistools</a> package.</p>
<div class="cell">
<div class="sourceCode cell-code" id="cb17"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb17-1"><a href="#cb17-1" aria-hidden="true" tabindex="-1"></a>depth <span class="ot"><-</span> obistools<span class="sc">::</span><span class="fu">check_depth</span>(trawl_fish)</span>
<span id="cb17-2"><a href="#cb17-2" aria-hidden="true" tabindex="-1"></a>onland <span class="ot"><-</span> obistools<span class="sc">::</span><span class="fu">check_onland</span>(trawl_fish) <span class="co"># Gives the same output. </span></span>
<span id="cb17-3"><a href="#cb17-3" aria-hidden="true" tabindex="-1"></a><span class="fu">print</span>(depth) </span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div></li>
</ol>
</section>
</section>
</section>
<section id="metadata-and-publishing" class="level2">
<h2 class="anchored" data-anchor-id="metadata-and-publishing">Metadata and Publishing</h2>
<section id="data-publishing-pipeline" class="level3">
<h3 class="anchored" data-anchor-id="data-publishing-pipeline">Data Publishing Pipeline</h3>
<p><img src="https://ioos.github.io/bio_mobilization_workshop/fig/DwC_workflow.jpg" class="img-fluid"></p>
<ol type="1">
<li><p>Align our data table with OBIS Requirements and Darwin Core Standards</p></li>
<li><p>Upload dataset to an <a href="https://www.gbif.org/ipt">Integrated Publishing Toolkit (IPT)</a></p>
<ol type="i">
<li>These are developed and maintained by GBIF and its recommended we work with an <a href="https://obis.org/contact/">OBIS node</a> to publish through their IPT</li>
</ol></li>
<li><p>Develop and add metadata as an Ecological Metadata Language (EML - standardized format)</p></li>
<li><p>Publish dataset as a Darwin Core Archive (DwC-A)</p></li>
<li><p>Data are pushed to OBIS and GBIF (if wanted) through OBIS IPT</p></li>
</ol>
</section>
<section id="requirements-for-publishing-through-obis-node" class="level3">
<h3 class="anchored" data-anchor-id="requirements-for-publishing-through-obis-node">Requirements for Publishing through OBIS Node</h3>
<ol type="1">
<li><p>Contact node to ensure our data is a good fit</p>
<ol type="i">
<li><p>There are regional and thematic nodes</p></li>
<li><p>I believe we would work with <a href="https://obis.org/node/573654c1-4ce7-4ea2-b2f1-e4d42f8f9c31">OBIS-SEAMAP Node</a> (Marine Megavertebrates)</p></li>
</ol></li>
<li><p>Ensure data follows Darwin Core (DwC) and Ecological Metadata Language (EML) and includes all <a href="https://manual.obis.org/eml">required elements</a></p>
<ol type="i">
<li><p>The OBIS Node will help us develop the EML as part of Darwin Core Archive</p></li>
<li><p>We should collect the following information for the EML before sending the data to the node</p>
<ol type="1">
<li><p>Dataset Title</p></li>
<li><p>Abstract</p></li>
<li><p>Data License</p></li>
<li><p>Resource contact(s)</p></li>
<li><p>Resource Creator(s)</p></li>
<li><p>Metadata providers</p></li>
<li><p>Citation</p></li>
<li><p>Not required but highly recommended to link to NCEI data as well</p></li>
<li><p>Additional fields recommended for ease of searchability</p></li>
</ol></li>
</ol></li>
</ol>
</section>
</section>
<section id="our-data-hurdles-next-steps-questions" class="level2">
<h2 class="anchored" data-anchor-id="our-data-hurdles-next-steps-questions">Our Data Hurdles, Next Steps, & Questions</h2>
<section id="determining-range-of-uncertainty" class="level3">
<h3 class="anchored" data-anchor-id="determining-range-of-uncertainty">Determining Range of Uncertainty</h3>
<ul>
<li><p>No clear solution found in workshop</p></li>
<li><p>Presenters said do what works best for us, but include documentation of how we determined the value</p></li>
<li><p>Liz Ferguson is using estimates from literature for each species/group</p></li>
<li><p>SanctSound is planning to calculate values based on frequency ranges</p></li>
</ul>
</section>
<section id="important-pam-specific-fields-to-include" class="level3">
<h3 class="anchored" data-anchor-id="important-pam-specific-fields-to-include">Important PAM Specific Fields to Include</h3>
<ul>
<li><p>eMoF extension tables</p></li>
<li><p>Consider including call type, recording method, sampling rate, and other quantitative and qualitative data relating to OBIS events and occurrences</p></li>
<li><p>If any of this information is consistent for an entire project (i.e. we only upload drifting recorder data) we can include that in the metadata/dataset description</p></li>
</ul>
</section>
<section id="what-is-an-event-obis-occurrence-for-baleen-whales" class="level3">
<h3 class="anchored" data-anchor-id="what-is-an-event-obis-occurrence-for-baleen-whales">What Is An Event (OBIS Occurrence) For Baleen Whales</h3>
<ul>
<li><p>No clear consensus from workshop presenters</p></li>
<li><p>Hourly bins do fit in the OBIS model but they said using wav files would be appropriate as well</p></li>
<li><p>Again, we can choose what works best for us and then document our methods using the <code>identificationRemarks</code> field</p></li>
<li><p>We can also use different event types in the same dataset (ex. hourly bins for Blue whales and wav files for Minkes)</p>
<ul>
<li>Specify occurrence type using <code>occurrenceRemarks</code> field</li>
</ul></li>
<li><p>We can also link to specific wav files if we have those stored somewhere using the <code>associatedMedia</code> field</p></li>
</ul>
</section>
<section id="next-steps" class="level3">
<h3 class="anchored" data-anchor-id="next-steps">Next Steps</h3>
<ul>
<li><p>adding call type for beaked whale types</p></li>
<li><p>changing BW37V to Hubb’s beaked whale (aphiaID 254990)</p></li>
</ul>
</section>
<section id="questions" class="level3">
<h3 class="anchored" data-anchor-id="questions">Questions?</h3>
<ul>
<li></li>
</ul>
</section>
</section>
</section>
</main>
<!-- /main column -->
<script id="quarto-html-after-body" type="application/javascript">
window.document.addEventListener("DOMContentLoaded", function (event) {
const toggleBodyColorMode = (bsSheetEl) => {
const mode = bsSheetEl.getAttribute("data-mode");
const bodyEl = window.document.querySelector("body");
if (mode === "dark") {
bodyEl.classList.add("quarto-dark");
bodyEl.classList.remove("quarto-light");
} else {
bodyEl.classList.add("quarto-light");
bodyEl.classList.remove("quarto-dark");
}
}
const toggleBodyColorPrimary = () => {
const bsSheetEl = window.document.querySelector("link#quarto-bootstrap");
if (bsSheetEl) {
toggleBodyColorMode(bsSheetEl);
}
}
toggleBodyColorPrimary();
const icon = "";
const anchorJS = new window.AnchorJS();
anchorJS.options = {
placement: 'right',
icon: icon
};
anchorJS.add('.anchored');
const clipboard = new window.ClipboardJS('.code-copy-button', {
target: function(trigger) {
return trigger.previousElementSibling;
}
});
clipboard.on('success', function(e) {
// button target
const button = e.trigger;
// don't keep focus
button.blur();
// flash "checked"
button.classList.add('code-copy-button-checked');
var currentTitle = button.getAttribute("title");
button.setAttribute("title", "Copied!");
let tooltip;
if (window.bootstrap) {
button.setAttribute("data-bs-toggle", "tooltip");
button.setAttribute("data-bs-placement", "left");
button.setAttribute("data-bs-title", "Copied!");
tooltip = new bootstrap.Tooltip(button,
{ trigger: "manual",
customClass: "code-copy-button-tooltip",
offset: [0, -8]});
tooltip.show();
}
setTimeout(function() {
if (tooltip) {
tooltip.hide();
button.removeAttribute("data-bs-title");
button.removeAttribute("data-bs-toggle");
button.removeAttribute("data-bs-placement");
}
button.setAttribute("title", currentTitle);
button.classList.remove('code-copy-button-checked');
}, 1000);
// clear code selection
e.clearSelection();
});
function tippyHover(el, contentFn) {
const config = {
allowHTML: true,
content: contentFn,
maxWidth: 500,
delay: 100,
arrow: false,
appendTo: function(el) {
return el.parentElement;
},
interactive: true,
interactiveBorder: 10,
theme: 'quarto',
placement: 'bottom-start'
};
window.tippy(el, config);
}
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
for (var i=0; i<noterefs.length; i++) {
const ref = noterefs[i];
tippyHover(ref, function() {
// use id or data attribute instead here
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
try { href = new URL(href).hash; } catch {}
const id = href.replace(/^#\/?/, "");
const note = window.document.getElementById(id);
return note.innerHTML;
});
}
const findCites = (el) => {
const parentEl = el.parentElement;
if (parentEl) {
const cites = parentEl.dataset.cites;
if (cites) {
return {
el,
cites: cites.split(' ')
};
} else {
return findCites(el.parentElement)
}
} else {
return undefined;
}
};
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
for (var i=0; i<bibliorefs.length; i++) {
const ref = bibliorefs[i];
const citeInfo = findCites(ref);
if (citeInfo) {
tippyHover(citeInfo.el, function() {
var popup = window.document.createElement('div');
citeInfo.cites.forEach(function(cite) {
var citeDiv = window.document.createElement('div');
citeDiv.classList.add('hanging-indent');
citeDiv.classList.add('csl-entry');
var biblioDiv = window.document.getElementById('ref-' + cite);
if (biblioDiv) {
citeDiv.innerHTML = biblioDiv.innerHTML;
}
popup.appendChild(citeDiv);
});
return popup.innerHTML;
});
}
}
});
</script>
</div> <!-- /content -->
</body></html>