anss-formats 0.1.1__tar.gz → 0.1.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,698 @@
1
+ Metadata-Version: 2.4
2
+ Name: anss-formats
3
+ Version: 0.1.2
4
+ Summary: Python implementation of the library used to communicate seismic event detection information between systems
5
+ License: CC0-1.0
6
+ Keywords: anss,earthquakes,formats,detection
7
+ Author: John Patton
8
+ Author-email: jpatton@usgs.gov
9
+ Requires-Python: >3.9.1,<3.12
10
+ Classifier: License :: CC0 1.0 Universal (CC0 1.0) Public Domain Dedication
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.10
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Provides-Extra: pycurl
15
+ Requires-Dist: certifi (>=2024.07.04,<2025.0.0)
16
+ Requires-Dist: cryptography (>=42.0.5)
17
+ Requires-Dist: docutils (!=0.21.post1)
18
+ Requires-Dist: dparse (>=0.6.2,<0.7.0)
19
+ Requires-Dist: pydantic (>=2.6.0,<3.0.0)
20
+ Requires-Dist: requests (>=2.32.2,<3.0.0)
21
+ Requires-Dist: twine (>=5.1.1,<6.0.0)
22
+ Requires-Dist: urllib3 (>=2.6.0,<3.0.0)
23
+ Project-URL: Homepage, https://gitlab.com/anss-netops/anss-data-formats
24
+ Project-URL: Repository, https://gitlab.com/anss-netops/anss-data-formats
25
+ Description-Content-Type: text/markdown
26
+
27
+ # Python 3 ANSS Formats Library
28
+
29
+ This is the Python implementation of the library used to generate and parse the
30
+ ANSS Formats.
31
+
32
+ Dependencies
33
+ ------
34
+ * ANSS Formats utilizes [JSON](www.json.org) for formatting.
35
+ * ANSS Formats was written in Python 3.6
36
+ * ANSS Formats uses [poetry](https://python-poetry.org/) for
37
+ Package, dependency and environment management.
38
+
39
+ Building
40
+ ------
41
+ The steps to get and use the python ANSS-formats are as follows:
42
+
43
+ 1. Clone ANSS-formats.
44
+ 2. Open a command window and change directories to /python/
45
+ 3. To run unit tests, run the command `poetry run pytest --cov=anssformats --junitxml junit.xml`
46
+
47
+ Using
48
+ -----S
49
+ Once you have the python distribution, simply import anssformats
50
+
51
+ # ANSS Data Formats
52
+ The US Geological Survey (USGS) Advanced National Seismic System (ANSS) defines a number of data exchange formats to communicate seismic event detection information between processing systems. These formats are defined using objects as defined in the [JSON standard](http://www.json.org).
53
+
54
+ The purpose of this project is to:
55
+
56
+ 1. Define formats to hold data representing the estimates of various types of
57
+ seismic event detections.
58
+ 2. Store the format definitions in a source controlled manner.
59
+ 3. Host libraries used to generate, parse, and validate the formats
60
+
61
+ ## Defined formats:
62
+
63
+ * [Pick](format-docs/Pick.md) Format - A format for unassociated picks from a waveform arrival time picking algorithm.
64
+ * [Detection](format-docs/Detection.md) Format - A format for an earthquake detection picks from a seismic detection algorithm.
65
+
66
+
67
+ ## Supporting format objects:
68
+
69
+ * [Amplitude](format-docs/Amplitude.md) Object - An object that contains information about an amplitude as part of a pick.
70
+ * [Analytics](format-docs/Analytics.md) Object - An object that holds extensible information from model outputs or other processing tags.
71
+ * [Association](format-docs/Association.md) Object - An object that contains associated information if a pick is included in a detection.
72
+ * [Channel](format-docs/Channel.md) Object - A geoJSON object that contains channel/location information as part of a pick.
73
+ * [EventType](format-docs/EventType.md) Object - An object that defines the event type for a detection.
74
+ * [Filter](format-docs/Filter.md) Object - An object that contains filter information as part of a pick.
75
+ * [Hypocenter](format-docs/Hypocenter.md) Object - A geoJSON object that contains the hypocentral location, arrival time, and error information as part of a detection.
76
+ * [Magnitude](format-docs/Magnitude.md) Object - An object that defines an earthquake magnitude estimation for a detection.
77
+ * [Source](format-docs/Source.md) Object - An object that defines the creator/source of a pick.
78
+
79
+
80
+ # Amplitude Object Specification
81
+
82
+ ## Description
83
+
84
+ The Amplitude object is an object designed to encode the amplitude information
85
+ that may or may not be part of the [Pick](Pick.md) Format. Amplitude uses the
86
+ [JSON standard](http://www.json.org).
87
+
88
+ ## Usage
89
+
90
+ The Amplitude object is intended for use as part of the [Pick](Pick.md) Format
91
+ in seismic data messaging between seismic applications and organizations.
92
+
93
+ ## Output
94
+
95
+ ```json
96
+ {
97
+ "amplitude" : Number,
98
+ "period" : Number,
99
+ "snr" : Number
100
+ }
101
+ ```
102
+
103
+ ## Glossary
104
+
105
+ **Optional Values:**
106
+
107
+ The following are values that **may or may not** be provided as part of an
108
+ amplitude.
109
+
110
+ * amplitude - A decimal number containing the amplitude.
111
+ * period - A decimal number containing the amplitude period.
112
+ * snr - A decimal number containing the signal to noise ratio, capped at 1E9.
113
+
114
+
115
+ # Analytics Object Specification
116
+
117
+ ## Description
118
+
119
+ The Analytics object is an extensible format to encode model outputs for a [Pick](Pick.md).
120
+ Model outputs are stored as a list of [Predictions](#Prediction-Object).
121
+ Suitable for retaining output of pickers, analytical models, AI/ML predictors, etc.
122
+ Analytics uses the [JSON standard](http://www.json.org).
123
+
124
+ ## Usage
125
+
126
+ Analytics is intended for use as part of the [Pick](Pick.md) format in
127
+ seismic data messaging between seismic applications and organizations.
128
+
129
+ ## Output
130
+
131
+ ```json
132
+ {
133
+ "predictions": [
134
+ {
135
+ "label": String,
136
+ "value": String | Number | Array | Object,
137
+ "probability": Number,
138
+ "metrics": {
139
+ // Flexible structure for uncertainty quantification
140
+ },
141
+ "modelID": String,
142
+ "modelVersion": String,
143
+ "source": {
144
+ "agencyID": String,
145
+ "author": String
146
+ }
147
+ }
148
+ ],
149
+ "extensions": {
150
+ // Custom key-value pairs for experimental data
151
+ }
152
+ }
153
+ ```
154
+
155
+ ## Glossary
156
+
157
+ **Optional Values:**
158
+
159
+ * `predictions` - An optional array of Prediction objects. Each prediction represents output from an analytical model.
160
+ * `extensions` - An optional object containing custom key-value pairs for experimental or debug data.
161
+
162
+ ## Prediction Object
163
+
164
+ * `label` (required) - A string identifying what is being predicted.
165
+ * Standard seismological labels: "phase", "magnitude", "eventType", "distance", "depth", "backAzimuth"
166
+ * Custom labels: any string (e.g., "pick_quality", "noise_level", "voorwerp_level")
167
+
168
+ * `value` (required) - The predicted value. Can be:
169
+ * String (e.g., "P", "Earthquake")
170
+ * Number (e.g., 2.5, 0.94)
171
+ * Array (e.g., `[0.1, 0.3, 0.8]`)
172
+ * Object (e.g., `{"type": "Mb", "value": 2.5}`)
173
+
174
+ * `probability` - A decimal number [0.0-1.0] containing the probability of this prediction
175
+
176
+ * `metrics` - An object containing other model/pick information. Structure is flexible and can include things like:
177
+ * `std` - Standard deviation
178
+ * `range` - Array of [min, max] values
179
+ * `halfWidth` - Half-width of uncertainty range
180
+ * `sigma` - Sigma value for probability distribution
181
+ * Any other model-specific quantification metrics
182
+
183
+ * `modelID` - A string identifying which model made this prediction
184
+ * `modelVersion` - A string containing the version of the model
185
+ * `source` - An object containing the source/author of the model, see [Source](Source.md)
186
+
187
+
188
+ # Association Object Specification
189
+
190
+ ## Description
191
+
192
+ The Association object is an object designed to encode information provided when a group of [Pick](Pick.md) are associated for an event.
193
+ Association uses the [JSON standard](http://www.json.org).
194
+
195
+ ## Usage
196
+
197
+ Association is intended for use as part of the [Pick](Pick.md) Format in seismic data messaging between seismic applications and organizations.
198
+
199
+ ## Output
200
+
201
+ ```json
202
+ {
203
+ "phase" : String,
204
+ "distance" : Number,
205
+ "azimuth" : Number,
206
+ "residual" : Number,
207
+ "sigma" : Number
208
+ }
209
+ ```
210
+
211
+ ## Glossary
212
+
213
+ **Optional Values:**
214
+
215
+ The following are values that **may or may not** be provided as part of
216
+ association.
217
+
218
+ * phase - A string that identifies the seismic phase for this data if Association.
219
+ * distance - A decimal number containing the distance in degrees between the detection's and data's locations if Association.
220
+ * azimuth - A decimal number containing the azimuth in degrees between the detection's and data's locations if Association.
221
+ * residual - A decimal number containing residual in seconds of the data if Association.
222
+ * sigma - A decimal number reflecting the number of standard deviations of the data from the calculated value if Association.
223
+
224
+ # Channel Object Specification
225
+
226
+ ## Description
227
+
228
+ The Channel object is an object designed to define the seismic station used to produce a [Pick](Pick.md) message.
229
+ Channel uses the [JSON](https://www.json.org) and [GeoJSON](https://geojson.org/) standards.
230
+
231
+ ## Usage
232
+
233
+ Channel is intended for use as part of the [Pick](Pick.md) Format in seismic data messaging between seismic applications and organizations.
234
+
235
+ ## Output
236
+
237
+ ```json
238
+ {
239
+ "type": "Feature",
240
+ "geometry": {
241
+ "type": "Point",
242
+ "coordinates": [125.6, 10.1]
243
+ },
244
+ "properties": {
245
+ "station" : String,
246
+ "channel" : String,
247
+ "network" : String,
248
+ "location" : String
249
+ }
250
+ }
251
+ ```
252
+
253
+ ## Glossary
254
+
255
+ **Required Values:**
256
+
257
+ These are the properties **required** to define a Site.
258
+
259
+ * type - A string indicating the geojson feature type
260
+ * geometry - A geojson point containing the station coordinates in the form [Latitude, Longitude, Elevation (in meters)]
261
+ * properties - The associated properties for this geojson feature
262
+
263
+ **Required Properties:**
264
+
265
+ These geojson feature properties are **required** to define a Site.
266
+ * station - A string the station code.
267
+ * network - A string containing network code.
268
+
269
+ **Optional Properties:**
270
+
271
+ The following are supplementary geojson feature properties that **may or may not** be provided by
272
+ various algorithms.
273
+
274
+ * channel - A string containing the channel code.
275
+ * location - A string containing the location code.
276
+
277
+ # Detection Format Specification
278
+
279
+ ## Description
280
+
281
+ Detection is a format designed to encode the basic information of an earthquake
282
+ event Detection. Detection uses the [JSON standard](http://www.json.org).
283
+
284
+ ## Usage
285
+
286
+ Detection is intended for use in seismic data messaging between seismic
287
+ applications.
288
+
289
+ ## Output
290
+
291
+ ```json
292
+ {
293
+ "type" : "Detection",
294
+ "id" : String,
295
+ "source" :
296
+ {
297
+ "agencyID" : String,
298
+ "author" : String
299
+ },
300
+ "hypocenter" :
301
+ {
302
+ "type": "Feature",
303
+ "geometry": {
304
+ "type": "Point",
305
+ "coordinates": [125.6, 10.1, 1589.0]
306
+ },
307
+ "properties": {
308
+ "originTime" : ISO8601,
309
+ "latitudeError" : Number,
310
+ "longitudeError" : Number,
311
+ "depthError" : Number,
312
+ "originTimeError" : Number
313
+ }
314
+ },
315
+ "detectionType" : String,
316
+ "detectionTime" : ISO8601,
317
+ "eventType" :
318
+ {
319
+ "type" : String,
320
+ "certainty" : String
321
+ },
322
+ "minimumDistance" : Number,
323
+ "rms" : Number,
324
+ "maximumGap" : Number,
325
+ "detector" : String,
326
+ "pickData" : [Pick Objects],
327
+ "magnitudeData" :
328
+ [
329
+ {
330
+ "type" : String,
331
+ "id" : String,
332
+ "value" : Number,
333
+ "source" :
334
+ {
335
+ "agencyID" : String,
336
+ "author" : String
337
+ },
338
+ "error" : Number,
339
+ "probability" : Number
340
+ }, ...
341
+ ],
342
+ "analyticsInfo" :
343
+ {
344
+ "predictions" : [ {
345
+ "label" : String,
346
+ "value" : String | Number | Object | Array,
347
+ "probability" : Number,
348
+ "metrics" : Object,
349
+ "modelID" : String,
350
+ "modelVersion" : String,
351
+ "source" : {
352
+ "agencyID" : String,
353
+ "author" : String
354
+ }
355
+ }, ...],
356
+ "extensions" : Object
357
+ }
358
+ }
359
+ ```
360
+
361
+ ## Glossary
362
+
363
+ **Required Values:**
364
+
365
+ These are the values **required** to define a detection.
366
+
367
+ * type - A string that identifies this message as a detection.
368
+ * id - A string containing an unique identifier for this Detection.
369
+ * source - An object containing the source of the Detection, see [Source](Source.md).
370
+ * hypocenter - An object containing the hypocenter of the Detection, see [Hypocenter](Hypocenter.md).
371
+
372
+ **Optional Values:**
373
+
374
+ The following are supplementary values that **may or may not** be provided as part of a detection.
375
+
376
+ * detectionType - A string that identifies whether the Detection is `New`, `Update`, or `Final`.
377
+ * detectionTime - A string containing the UTC time this detection was made, i.e. how quickly after origin time was this detection created, in the ISO8601 format `YYYY-MM-DDTHH:MM:SS.SSSZ`.
378
+ * eventType - An object containing the event type of the correlation, see [EventType](EventType.md).
379
+ * rms - A decimal number containing the rms estimate for the detction
380
+ * minimumDistance - A decimal number representing the minimum distance to the closest supporting station.
381
+ * maximumGap - A decimal number representing the maximum gap in degrees between supporting stations.
382
+ * detector - A string identifying the detection grid, algorithm, or other information.
383
+ * pickData - An array of [Pick](Pick.md) objects used to generate this Detection.
384
+ * magnitudeData - An array of [Magnitude](Magnitude.md) objects for this Detection.
385
+ * analyticsInfo - An object containing analytical information from one or more models/algorithms, see [Analytics](Analytics.md).
386
+
387
+ # EventType Object Specification
388
+
389
+ ## Description
390
+
391
+ The EventType object is an object designed to define the phenomena causing a seismic detection.
392
+ EventType uses the [JSON standard](http://www.json.org).
393
+
394
+ ## Usage
395
+
396
+ EventType is intended for use as part of the [Detection](Detection.md) object in seismic data
397
+ messaging between seismic applications and organizations.
398
+
399
+ ## Output
400
+
401
+ ```json
402
+ {
403
+ "type" : String,
404
+ "certainty" : String
405
+ }
406
+ ```
407
+
408
+ ## Glossary
409
+
410
+ **Required Values:**
411
+
412
+ These are the values **required** to define a EventType
413
+
414
+ * type - A string containing the event type, allowed type strings are: "Earthquake", "MineCollapse", "NuclearExplosion", "QuarryBlast", "InducedOrTriggered", "RockBurst", "FluidInjection", "IceQuake", and "VolcanicEruption"
415
+
416
+ **Optional Values:**
417
+
418
+ The following are values that **may or may not** be provided as part of EventType.
419
+
420
+ * certainty - A string containing the certainty of the event type; allowed strings are "Suspected" and "Confirmed"
421
+
422
+ # Filter Object Specification
423
+
424
+ ## Description
425
+
426
+ The Filter object is an object designed to encode a single set of filter
427
+ frequencies that may or may not be part of the filter list in the [Pick](Pick.md)
428
+ Format. Filter uses the [JSON standard](http://www.json.org) .
429
+
430
+ ## Usage
431
+
432
+ The Filter object is intended for use as part of the [Pick](Pick.md) Format
433
+ in seismic data messaging between seismic applications and organizations.
434
+
435
+ ## Output
436
+
437
+ ```json
438
+ {
439
+ "type" : String,
440
+ "highPass" : Number,
441
+ "lowPass" : Number,
442
+ "units" : String
443
+ }
444
+ ```
445
+
446
+ ## Glossary
447
+
448
+ **Optional Values:**
449
+
450
+ The following are values that **may or may not** be provided as part of a filter.
451
+
452
+ * type - A string containing the type of filter
453
+ * highPass - A decimal number containing the high pass frequency in Hz.
454
+ * lowPass - A decimal number containing the low pass frequency in Hz.
455
+ * units - A string containing the filter frequency units.
456
+
457
+ Note: The Type of filter is assumed to be "BandPass", and the Units are assumed
458
+ to be "Hertz"
459
+
460
+ # Hypocenter Object Specification
461
+
462
+ ## Description
463
+
464
+ The Hypocenter object is an object designed to define a Hypocenter as part of a [Detection](Detection.md) message. Hypocenter uses the [JSON standard](http://www.json.org) and [GeoJSON](https://geojson.org/) standards.
465
+
466
+
467
+ ## Usage
468
+
469
+ Hypocenter is intended for use as part of the [Detection](Detection.md) Format in seismic data messaging between seismic applications and organizations.
470
+
471
+ ## Output
472
+
473
+ ```json
474
+ {
475
+ "type": "Feature",
476
+ "geometry": {
477
+ "type": "Point",
478
+ "coordinates": [125.6, 10.1, 1589.0]
479
+ },
480
+ "properties": {
481
+ "originTime" : ISO8601,
482
+ "latitudeError" : Number,
483
+ "longitudeError" : Number,
484
+ "depthError" : Number,
485
+ "originTimeError" : Number
486
+ }
487
+ }
488
+ ```
489
+
490
+ ## Glossary
491
+
492
+ **Required Values:**
493
+
494
+ These are the values **required** to define a hypocenter.
495
+ * type - A string indicating the geojson feature type, always a point
496
+ * geometry - A geojson point containing the station coordinates in the form [Latitude, Longitude, Depth (in meters)]
497
+ * properties - The associated properties for this geojson feature
498
+
499
+ **Required Properties:**
500
+
501
+ These geojson feature properties are **required** to define a hypocenter.
502
+ * originTime - A string containing the UTC origin time of this hypocenter, in the ISO8601 format `YYYY-MM-DDTHH:MM:SS.SSSZ`.
503
+
504
+ **Optional Properties:**
505
+
506
+ The following are supplementary geojson feature properties that **may or may not** be provided by
507
+ various algorithms.
508
+
509
+ * latitudeError - A decimal number that identifies the error of the latitude of this hypocenter in kilometers.
510
+ * longitudeError - A decimal number that identifies the error of the longitude of this hypocenter in kilometers.
511
+ * depthError - A decimal number that identifies the depth error of this hypocenter in kilometers.
512
+ * originTimeError - A decimal number that identifies the error of the origin time in seconds.
513
+
514
+ # Magnitude Object Specification
515
+
516
+ ## Description
517
+
518
+ The Magnitude object is an object designed to hold information about a magnitude assigned to a [Detection](Detection.md).
519
+ Magnitude uses the [JSON standard](http://www.json.org).
520
+
521
+ ## Usage
522
+
523
+ Magnitude is intended for use as part of the [Detection](Detection.md) Format in seismic data
524
+ messaging between seismic applications and organizations.
525
+
526
+ ## Output
527
+
528
+ ```json
529
+ {
530
+ "type" : String,
531
+ "id" : String,
532
+ "value" : Number,
533
+ "source" :
534
+ {
535
+ "agencyID" : String,
536
+ "author" : String
537
+ },
538
+ "error" : Number,
539
+ "probability" : Number
540
+ }
541
+ ```
542
+
543
+ ## Glossary
544
+
545
+ **Required Values:**
546
+
547
+ These are the values **required** to define a Magnitude
548
+
549
+ * type - A string containing the name of the magnitude type.
550
+ * value - A decimal number containing numarical value of the magnitude.
551
+
552
+ **Optional Values:**
553
+
554
+ The following are supplementary values that **may or may not** be provided as part of a Magnitude.
555
+
556
+ * id - A string containing an unique identifier for this Magnitude.
557
+ * source - An object containing the source of the Magnitude, see [Source](Source.md).
558
+ * error - A decimal number containing numarical error estimate of the magnitude.
559
+ * probability - A decimal number containing the probability of the magnitude
560
+
561
+ # Pick Format Specification
562
+
563
+ ## Description
564
+
565
+ Pick is a format designed to encode the basic information of an unassociated
566
+ waveform arrival time pick. Pick uses the
567
+ [JSON standard](http://www.json.org).
568
+
569
+ ## Usage
570
+ Pick is intended for use in seismic data messaging between seismic
571
+ applications and organizations.
572
+
573
+ ## Output
574
+
575
+ ```json
576
+ {
577
+ "type" : "Pick",
578
+ "id" : String,
579
+ "channel" :
580
+ {
581
+ "type": "Feature",
582
+ "geometry": {
583
+ "type": "Point",
584
+ "coordinates": [125.6, 10.1, 1589.0]
585
+ },
586
+ "properties": {
587
+ "station" : String,
588
+ "channel" : String,
589
+ "network" : String,
590
+ "location" : String
591
+ }
592
+ },
593
+ "time" : ISO8601,
594
+ "source" :
595
+ {
596
+ "agencyID" : String,
597
+ "author" : String
598
+ },
599
+ "phase" : String,
600
+ "polarity" : ("up" | "down"),
601
+ "onset" : ("impulsive" | "emergent" | "questionable"),
602
+ "pickerType" : ("manual" | "raypicker" | "filterpicker" | "earthworm" | "other"),
603
+ "filterInfo" : [ {
604
+ "type" : String,
605
+ "highPass" : Number,
606
+ "lowPass" : Number,
607
+ "units" : String
608
+ }, ...],
609
+ "amplitudeInfo" :
610
+ {
611
+ "value" : Number,
612
+ "period" : Number,
613
+ "snr" : Number
614
+ },
615
+ "associationInfo" :
616
+ {
617
+ "phase" : String,
618
+ "distance" : Number,
619
+ "azimuth" : Number,
620
+ "residual" : Number,
621
+ "sigma" : Number
622
+ },
623
+ "analyticsInfo" :
624
+ {
625
+ "predictions" : [ {
626
+ "label" : String,
627
+ "value" : String | Number | Object | Array,
628
+ "probability" : Number,
629
+ "metrics" : Object,
630
+ "modelID" : String,
631
+ "modelVersion" : String,
632
+ "source" : {
633
+ "agencyID" : String,
634
+ "author" : String
635
+ }
636
+ }, ...],
637
+ "extensions" : Object,
638
+ }
639
+ }
640
+ ```
641
+
642
+ ## Glossary
643
+
644
+ **Required Values:**
645
+
646
+ These are the values **required** to define a pick.
647
+
648
+ * type - A string that identifies this message as a pick.
649
+ * id - A string containing an unique identifier for this pick.
650
+ * channel - A GeoJSON object containing the channel the pick was made at, see [Channel](Channel.md).
651
+ * source - An object containing the source of the pick, see [Source](Source.md).
652
+ * time - A string containing the UTC arrival time of the phase that was picked, in the ISO8601 format `YYYY-MM-DDTHH:MM:SS.SSSZ`.
653
+
654
+ **Optional Values:**
655
+
656
+ The following are supplementary values that **may or may not** be provided by
657
+ various picking algorithms.
658
+
659
+ * phase - A string that identifies the seismic phase that was picked.
660
+ * polarity - A string containing the phase polarity; "up" or "down".
661
+ * onset - A string containing the phase onset; "impulsive", "emergent", or "questionable" .
662
+ * pickerType - A string describing the type of picker; "manual", "raypicker", "filterpicker", "earthworm", or "other".
663
+ * filter - An array of objects containing the filter frequencies when the pick was made, see [Filter](Filter.md).
664
+ * amplitude - An object containing the amplitude associated with the pick, see [Amplitude](Amplitude.md).
665
+ * associationInfo - An object containing the association information if this pick is used as data in a Detection, see [Association](Association.md).
666
+ * analyticsInfo - An object containing analytical information from one or more models/algorithms, see [Analytics](Analytics.md).
667
+
668
+ # Source Object Specification
669
+
670
+ ## Description
671
+
672
+ The Source object is an object designed to define the originating seismic
673
+ organization that produced a [Pick](Pick.md) message.
674
+ Source uses the [JSON standard](http://www.json.org).
675
+
676
+ ## Usage
677
+
678
+ Source is intended for use as part of the [Pick](Pick.md) Format in seismic data
679
+ messaging between seismic applications and organizations.
680
+
681
+ ## Output
682
+
683
+ ```json
684
+ {
685
+ "agencyID" : String,
686
+ "author" : String
687
+ }
688
+ ```
689
+
690
+ ## Glossary
691
+
692
+ **Required Values:**
693
+
694
+ These are the values **required** to define a Source
695
+
696
+ * agencyID - A string containing the originating agency FDSN ID.
697
+ * author - A string containing the source author.
698
+