xref: /aosp_15_r20/external/googleapis/google/genomics/v1/annotations.proto (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
1// Copyright 2016 Google Inc.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15syntax = "proto3";
16
17package google.genomics.v1;
18
19import "google/api/annotations.proto";
20import "google/protobuf/empty.proto";
21import "google/protobuf/field_mask.proto";
22import "google/protobuf/struct.proto";
23import "google/protobuf/wrappers.proto";
24import "google/rpc/status.proto";
25
26option cc_enable_arenas = true;
27option go_package = "google.golang.org/genproto/googleapis/genomics/v1;genomics";
28option java_multiple_files = true;
29option java_outer_classname = "AnnotationsProto";
30option java_package = "com.google.genomics.v1";
31
32// This service provides storage and positional retrieval of genomic
33// reference annotations, including variant annotations.
34service AnnotationServiceV1 {
35  // Creates a new annotation set. Caller must have WRITE permission for the
36  // associated dataset.
37  //
38  // The following fields are required:
39  //
40  //   * [datasetId][google.genomics.v1.AnnotationSet.dataset_id]
41  //   * [referenceSetId][google.genomics.v1.AnnotationSet.reference_set_id]
42  //
43  // All other fields may be optionally specified, unless documented as being
44  // server-generated (for example, the `id` field).
45  rpc CreateAnnotationSet(CreateAnnotationSetRequest) returns (AnnotationSet) {
46    option (google.api.http) = {
47      post: "/v1/annotationsets"
48      body: "annotation_set"
49    };
50  }
51
52  // Gets an annotation set. Caller must have READ permission for
53  // the associated dataset.
54  rpc GetAnnotationSet(GetAnnotationSetRequest) returns (AnnotationSet) {
55    option (google.api.http) = {
56      get: "/v1/annotationsets/{annotation_set_id}"
57    };
58  }
59
60  // Updates an annotation set. The update must respect all mutability
61  // restrictions and other invariants described on the annotation set resource.
62  // Caller must have WRITE permission for the associated dataset.
63  rpc UpdateAnnotationSet(UpdateAnnotationSetRequest) returns (AnnotationSet) {
64    option (google.api.http) = {
65      put: "/v1/annotationsets/{annotation_set_id}"
66      body: "annotation_set"
67    };
68  }
69
70  // Deletes an annotation set. Caller must have WRITE permission
71  // for the associated annotation set.
72  rpc DeleteAnnotationSet(DeleteAnnotationSetRequest)
73      returns (google.protobuf.Empty) {
74    option (google.api.http) = {
75      delete: "/v1/annotationsets/{annotation_set_id}"
76    };
77  }
78
79  // Searches for annotation sets that match the given criteria. Annotation sets
80  // are returned in an unspecified order. This order is consistent, such that
81  // two queries for the same content (regardless of page size) yield annotation
82  // sets in the same order across their respective streams of paginated
83  // responses. Caller must have READ permission for the queried datasets.
84  rpc SearchAnnotationSets(SearchAnnotationSetsRequest)
85      returns (SearchAnnotationSetsResponse) {
86    option (google.api.http) = {
87      post: "/v1/annotationsets/search"
88      body: "*"
89    };
90  }
91
92  // Creates a new annotation. Caller must have WRITE permission
93  // for the associated annotation set.
94  //
95  // The following fields are required:
96  //
97  // * [annotationSetId][google.genomics.v1.Annotation.annotation_set_id]
98  // * [referenceName][google.genomics.v1.Annotation.reference_name] or
99  //   [referenceId][google.genomics.v1.Annotation.reference_id]
100  //
101  // ### Transcripts
102  //
103  // For annotations of type TRANSCRIPT, the following fields of
104  // [transcript][google.genomics.v1.Annotation.transcript] must be provided:
105  //
106  // * [exons.start][google.genomics.v1.Transcript.Exon.start]
107  // * [exons.end][google.genomics.v1.Transcript.Exon.end]
108  //
109  // All other fields may be optionally specified, unless documented as being
110  // server-generated (for example, the `id` field). The annotated
111  // range must be no longer than 100Mbp (mega base pairs). See the
112  // [Annotation resource][google.genomics.v1.Annotation]
113  // for additional restrictions on each field.
114  rpc CreateAnnotation(CreateAnnotationRequest) returns (Annotation) {
115    option (google.api.http) = {
116      post: "/v1/annotations"
117      body: "annotation"
118    };
119  }
120
121  // Creates one or more new annotations atomically. All annotations must
122  // belong to the same annotation set. Caller must have WRITE
123  // permission for this annotation set. For optimal performance, batch
124  // positionally adjacent annotations together.
125  //
126  // If the request has a systemic issue, such as an attempt to write to
127  // an inaccessible annotation set, the entire RPC will fail accordingly. For
128  // lesser data issues, when possible an error will be isolated to the
129  // corresponding batch entry in the response; the remaining well formed
130  // annotations will be created normally.
131  //
132  // For details on the requirements for each individual annotation resource,
133  // see
134  // [CreateAnnotation][google.genomics.v1.AnnotationServiceV1.CreateAnnotation].
135  rpc BatchCreateAnnotations(BatchCreateAnnotationsRequest)
136      returns (BatchCreateAnnotationsResponse) {
137    option (google.api.http) = {
138      post: "/v1/annotations:batchCreate"
139      body: "*"
140    };
141  }
142
143  // Gets an annotation. Caller must have READ permission
144  // for the associated annotation set.
145  rpc GetAnnotation(GetAnnotationRequest) returns (Annotation) {
146    option (google.api.http) = {
147      get: "/v1/annotations/{annotation_id}"
148    };
149  }
150
151  // Updates an annotation. Caller must have
152  // WRITE permission for the associated dataset.
153  rpc UpdateAnnotation(UpdateAnnotationRequest) returns (Annotation) {
154    option (google.api.http) = {
155      put: "/v1/annotations/{annotation_id}"
156      body: "annotation"
157    };
158  }
159
160  // Deletes an annotation. Caller must have WRITE permission for
161  // the associated annotation set.
162  rpc DeleteAnnotation(DeleteAnnotationRequest)
163      returns (google.protobuf.Empty) {
164    option (google.api.http) = {
165      delete: "/v1/annotations/{annotation_id}"
166    };
167  }
168
169  // Searches for annotations that match the given criteria. Results are
170  // ordered by genomic coordinate (by reference sequence, then position).
171  // Annotations with equivalent genomic coordinates are returned in an
172  // unspecified order. This order is consistent, such that two queries for the
173  // same content (regardless of page size) yield annotations in the same order
174  // across their respective streams of paginated responses. Caller must have
175  // READ permission for the queried annotation sets.
176  rpc SearchAnnotations(SearchAnnotationsRequest)
177      returns (SearchAnnotationsResponse) {
178    option (google.api.http) = {
179      post: "/v1/annotations/search"
180      body: "*"
181    };
182  }
183}
184
185// An annotation set is a logical grouping of annotations that share consistent
186// type information and provenance. Examples of annotation sets include 'all
187// genes from refseq', and 'all variant annotations from ClinVar'.
188message AnnotationSet {
189  // The server-generated annotation set ID, unique across all annotation sets.
190  string id = 1;
191
192  // The dataset to which this annotation set belongs.
193  string dataset_id = 2;
194
195  // The ID of the reference set that defines the coordinate space for this
196  // set's annotations.
197  string reference_set_id = 3;
198
199  // The display name for this annotation set.
200  string name = 4;
201
202  // The source URI describing the file from which this annotation set was
203  // generated, if any.
204  string source_uri = 5;
205
206  // The type of annotations contained within this set.
207  AnnotationType type = 6;
208
209  // A map of additional read alignment information. This must be of the form
210  // map<string, string[]> (string key mapping to a list of string values).
211  map<string, google.protobuf.ListValue> info = 17;
212}
213
214// An annotation describes a region of reference genome. The value of an
215// annotation may be one of several canonical types, supplemented by arbitrary
216// info tags. An annotation is not inherently associated with a specific
217// sample or individual (though a client could choose to use annotations in
218// this way). Example canonical annotation types are `GENE` and
219// `VARIANT`.
220message Annotation {
221  // The server-generated annotation ID, unique across all annotations.
222  string id = 1;
223
224  // The annotation set to which this annotation belongs.
225  string annotation_set_id = 2;
226
227  // The display name of this annotation.
228  string name = 3;
229
230  // The ID of the Google Genomics reference associated with this range.
231  string reference_id = 4;
232
233  // The display name corresponding to the reference specified by
234  // `referenceId`, for example `chr1`, `1`, or `chrX`.
235  string reference_name = 5;
236
237  // The start position of the range on the reference, 0-based inclusive.
238  int64 start = 6;
239
240  // The end position of the range on the reference, 0-based exclusive.
241  int64 end = 7;
242
243  // Whether this range refers to the reverse strand, as opposed to the forward
244  // strand. Note that regardless of this field, the start/end position of the
245  // range always refer to the forward strand.
246  bool reverse_strand = 8;
247
248  // The data type for this annotation. Must match the containing annotation
249  // set's type.
250  AnnotationType type = 9;
251
252  oneof value {
253    // A variant annotation, which describes the effect of a variant on the
254    // genome, the coding sequence, and/or higher level consequences at the
255    // organism level e.g. pathogenicity. This field is only set for annotations
256    // of type `VARIANT`.
257    VariantAnnotation variant = 10;
258
259    // A transcript value represents the assertion that a particular region of
260    // the reference genome may be transcribed as RNA. An alternative splicing
261    // pattern would be represented as a separate transcript object. This field
262    // is only set for annotations of type `TRANSCRIPT`.
263    Transcript transcript = 11;
264  }
265
266  // A map of additional read alignment information. This must be of the form
267  // map<string, string[]> (string key mapping to a list of string values).
268  map<string, google.protobuf.ListValue> info = 12;
269}
270
271message VariantAnnotation {
272  message ClinicalCondition {
273    // A set of names for the condition.
274    repeated string names = 1;
275
276    // The set of external IDs for this condition.
277    repeated ExternalId external_ids = 2;
278
279    // The MedGen concept id associated with this gene.
280    // Search for these IDs at http://www.ncbi.nlm.nih.gov/medgen/
281    string concept_id = 3;
282
283    // The OMIM id for this condition.
284    // Search for these IDs at http://omim.org/
285    string omim_id = 4;
286  }
287
288  enum Type {
289    TYPE_UNSPECIFIED = 0;
290
291    // `TYPE_OTHER` should be used when no other Type will suffice.
292    // Further explanation of the variant type may be included in the
293    // [info][google.genomics.v1.Annotation.info] field.
294    TYPE_OTHER = 1;
295
296    // `INSERTION` indicates an insertion.
297    INSERTION = 2;
298
299    // `DELETION` indicates a deletion.
300    DELETION = 3;
301
302    // `SUBSTITUTION` indicates a block substitution of
303    // two or more nucleotides.
304    SUBSTITUTION = 4;
305
306    // `SNP` indicates a single nucleotide polymorphism.
307    SNP = 5;
308
309    // `STRUCTURAL` indicates a large structural variant,
310    // including chromosomal fusions, inversions, etc.
311    STRUCTURAL = 6;
312
313    // `CNV` indicates a variation in copy number.
314    CNV = 7;
315  }
316
317  enum Effect {
318    EFFECT_UNSPECIFIED = 0;
319
320    // `EFFECT_OTHER` should be used when no other Effect
321    // will suffice.
322    EFFECT_OTHER = 1;
323
324    // `FRAMESHIFT` indicates a mutation in which the insertion or
325    // deletion of nucleotides resulted in a frameshift change.
326    FRAMESHIFT = 2;
327
328    // `FRAME_PRESERVING_INDEL` indicates a mutation in which a
329    // multiple of three nucleotides has been inserted or deleted, resulting
330    // in no change to the reading frame of the coding sequence.
331    FRAME_PRESERVING_INDEL = 3;
332
333    // `SYNONYMOUS_SNP` indicates a single nucleotide polymorphism
334    // mutation that results in no amino acid change.
335    SYNONYMOUS_SNP = 4;
336
337    // `NONSYNONYMOUS_SNP` indicates a single nucleotide
338    // polymorphism mutation that results in an amino acid change.
339    NONSYNONYMOUS_SNP = 5;
340
341    // `STOP_GAIN` indicates a mutation that leads to the creation
342    // of a stop codon at the variant site. Frameshift mutations creating
343    // downstream stop codons do not count as `STOP_GAIN`.
344    STOP_GAIN = 6;
345
346    // `STOP_LOSS` indicates a mutation that eliminates a
347    // stop codon at the variant site.
348    STOP_LOSS = 7;
349
350    // `SPLICE_SITE_DISRUPTION` indicates that this variant is
351    // found in a splice site for the associated transcript, and alters the
352    // normal splicing pattern.
353    SPLICE_SITE_DISRUPTION = 8;
354  }
355
356  enum ClinicalSignificance {
357    CLINICAL_SIGNIFICANCE_UNSPECIFIED = 0;
358
359    // `OTHER` should be used when no other clinical significance
360    // value will suffice.
361    CLINICAL_SIGNIFICANCE_OTHER = 1;
362
363    UNCERTAIN = 2;
364
365    BENIGN = 3;
366
367    LIKELY_BENIGN = 4;
368
369    LIKELY_PATHOGENIC = 5;
370
371    PATHOGENIC = 6;
372
373    DRUG_RESPONSE = 7;
374
375    HISTOCOMPATIBILITY = 8;
376
377    CONFERS_SENSITIVITY = 9;
378
379    RISK_FACTOR = 10;
380
381    ASSOCIATION = 11;
382
383    PROTECTIVE = 12;
384
385    // `MULTIPLE_REPORTED` should be used when multiple clinical
386    // signficances are reported for a variant. The original clinical
387    // significance values may be provided in the `info` field.
388    MULTIPLE_REPORTED = 13;
389  }
390
391  // Type has been adapted from ClinVar's list of variant types.
392  Type type = 1;
393
394  // Effect of the variant on the coding sequence.
395  Effect effect = 2;
396
397  // The alternate allele for this variant. If multiple alternate alleles
398  // exist at this location, create a separate variant for each one, as they
399  // may represent distinct conditions.
400  string alternate_bases = 3;
401
402  // Google annotation ID of the gene affected by this variant. This should
403  // be provided when the variant is created.
404  string gene_id = 4;
405
406  // Google annotation IDs of the transcripts affected by this variant. These
407  // should be provided when the variant is created.
408  repeated string transcript_ids = 5;
409
410  // The set of conditions associated with this variant.
411  // A condition describes the way a variant influences human health.
412  repeated ClinicalCondition conditions = 6;
413
414  // Describes the clinical significance of a variant.
415  // It is adapted from the ClinVar controlled vocabulary for clinical
416  // significance described at:
417  // http://www.ncbi.nlm.nih.gov/clinvar/docs/clinsig/
418  ClinicalSignificance clinical_significance = 7;
419}
420
421// A transcript represents the assertion that a particular region of the
422// reference genome may be transcribed as RNA.
423message Transcript {
424  message Exon {
425    // The start position of the exon on this annotation's reference sequence,
426    // 0-based inclusive. Note that this is relative to the reference start, and
427    // **not** the containing annotation start.
428    int64 start = 1;
429
430    // The end position of the exon on this annotation's reference sequence,
431    // 0-based exclusive. Note that this is relative to the reference start, and
432    // *not* the containing annotation start.
433    int64 end = 2;
434
435    // The frame of this exon. Contains a value of 0, 1, or 2, which indicates
436    // the offset of the first coding base of the exon within the reading frame
437    // of the coding DNA sequence, if any. This field is dependent on the
438    // strandedness of this annotation (see
439    // [Annotation.reverse_strand][google.genomics.v1.Annotation.reverse_strand]).
440    // For forward stranded annotations, this offset is relative to the
441    // [exon.start][google.genomics.v1.Transcript.Exon.start]. For reverse
442    // strand annotations, this offset is relative to the
443    // [exon.end][google.genomics.v1.Transcript.Exon.end] `- 1`.
444    //
445    // Unset if this exon does not intersect the coding sequence. Upon creation
446    // of a transcript, the frame must be populated for all or none of the
447    // coding exons.
448    google.protobuf.Int32Value frame = 3;
449  }
450
451  message CodingSequence {
452    // The start of the coding sequence on this annotation's reference sequence,
453    // 0-based inclusive. Note that this position is relative to the reference
454    // start, and *not* the containing annotation start.
455    int64 start = 1;
456
457    // The end of the coding sequence on this annotation's reference sequence,
458    // 0-based exclusive. Note that this position is relative to the reference
459    // start, and *not* the containing annotation start.
460    int64 end = 2;
461  }
462
463  // The annotation ID of the gene from which this transcript is transcribed.
464  string gene_id = 1;
465
466  // The <a href="http://en.wikipedia.org/wiki/Exon">exons</a> that compose
467  // this transcript. This field should be unset for genomes where transcript
468  // splicing does not occur, for example prokaryotes.
469  //
470  // Introns are regions of the transcript that are not included in the
471  // spliced RNA product. Though not explicitly modeled here, intron ranges can
472  // be deduced; all regions of this transcript that are not exons are introns.
473  //
474  // Exonic sequences do not necessarily code for a translational product
475  // (amino acids). Only the regions of exons bounded by the
476  // [codingSequence][google.genomics.v1.Transcript.coding_sequence] correspond
477  // to coding DNA sequence.
478  //
479  // Exons are ordered by start position and may not overlap.
480  repeated Exon exons = 2;
481
482  // The range of the coding sequence for this transcript, if any. To determine
483  // the exact ranges of coding sequence, intersect this range with those of the
484  // [exons][google.genomics.v1.Transcript.exons], if any. If there are any
485  // [exons][google.genomics.v1.Transcript.exons], the
486  // [codingSequence][google.genomics.v1.Transcript.coding_sequence] must start
487  // and end within them.
488  //
489  // Note that in some cases, the reference genome will not exactly match the
490  // observed mRNA transcript e.g. due to variance in the source genome from
491  // reference. In these cases,
492  // [exon.frame][google.genomics.v1.Transcript.Exon.frame] will not necessarily
493  // match the expected reference reading frame and coding exon reference bases
494  // cannot necessarily be concatenated to produce the original transcript mRNA.
495  CodingSequence coding_sequence = 3;
496}
497
498message ExternalId {
499  // The name of the source of this data.
500  string source_name = 1;
501
502  // The id used by the source of this data.
503  string id = 2;
504}
505
506message CreateAnnotationSetRequest {
507  // The annotation set to create.
508  AnnotationSet annotation_set = 1;
509}
510
511message GetAnnotationSetRequest {
512  // The ID of the annotation set to be retrieved.
513  string annotation_set_id = 1;
514}
515
516message UpdateAnnotationSetRequest {
517  // The ID of the annotation set to be updated.
518  string annotation_set_id = 1;
519
520  // The new annotation set.
521  AnnotationSet annotation_set = 2;
522
523  // An optional mask specifying which fields to update. Mutable fields are
524  // [name][google.genomics.v1.AnnotationSet.name],
525  // [source_uri][google.genomics.v1.AnnotationSet.source_uri], and
526  // [info][google.genomics.v1.AnnotationSet.info]. If unspecified, all
527  // mutable fields will be updated.
528  google.protobuf.FieldMask update_mask = 3;
529}
530
531message DeleteAnnotationSetRequest {
532  // The ID of the annotation set to be deleted.
533  string annotation_set_id = 1;
534}
535
536message SearchAnnotationSetsRequest {
537  // Required. The dataset IDs to search within. Caller must have `READ` access
538  // to these datasets.
539  repeated string dataset_ids = 1;
540
541  // If specified, only annotation sets associated with the given reference set
542  // are returned.
543  string reference_set_id = 2;
544
545  // Only return annotations sets for which a substring of the name matches this
546  // string (case insensitive).
547  string name = 3;
548
549  // If specified, only annotation sets that have any of these types are
550  // returned.
551  repeated AnnotationType types = 4;
552
553  // The continuation token, which is used to page through large result sets.
554  // To get the next page of results, set this parameter to the value of
555  // `nextPageToken` from the previous response.
556  string page_token = 5;
557
558  // The maximum number of results to return in a single page. If unspecified,
559  // defaults to 128. The maximum value is 1024.
560  int32 page_size = 6;
561}
562
563message SearchAnnotationSetsResponse {
564  // The matching annotation sets.
565  repeated AnnotationSet annotation_sets = 1;
566
567  // The continuation token, which is used to page through large result sets.
568  // Provide this value in a subsequent request to return the next page of
569  // results. This field will be empty if there aren't any additional results.
570  string next_page_token = 2;
571}
572
573message CreateAnnotationRequest {
574  // The annotation to be created.
575  Annotation annotation = 1;
576}
577
578message BatchCreateAnnotationsRequest {
579  // The annotations to be created. At most 4096 can be specified in a single
580  // request.
581  repeated Annotation annotations = 1;
582
583  // A unique request ID which enables the server to detect duplicated requests.
584  // If provided, duplicated requests will result in the same response; if not
585  // provided, duplicated requests may result in duplicated data. For a given
586  // annotation set, callers should not reuse `request_id`s when writing
587  // different batches of annotations - behavior in this case is undefined.
588  // A common approach is to use a UUID. For batch jobs where worker crashes are
589  // a possibility, consider using some unique variant of a worker or run ID.
590  string request_id = 2;
591}
592
593message BatchCreateAnnotationsResponse {
594  message Entry {
595    // The creation status.
596    google.rpc.Status status = 1;
597
598    // The created annotation, if creation was successful.
599    Annotation annotation = 2;
600  }
601
602  // The resulting per-annotation entries, ordered consistently with the
603  // original request.
604  repeated Entry entries = 1;
605}
606
607message GetAnnotationRequest {
608  // The ID of the annotation to be retrieved.
609  string annotation_id = 1;
610}
611
612message UpdateAnnotationRequest {
613  // The ID of the annotation to be updated.
614  string annotation_id = 1;
615
616  // The new annotation.
617  Annotation annotation = 2;
618
619  // An optional mask specifying which fields to update. Mutable fields are
620  // [name][google.genomics.v1.Annotation.name],
621  // [variant][google.genomics.v1.Annotation.variant],
622  // [transcript][google.genomics.v1.Annotation.transcript], and
623  // [info][google.genomics.v1.Annotation.info]. If unspecified, all mutable
624  // fields will be updated.
625  google.protobuf.FieldMask update_mask = 3;
626}
627
628message DeleteAnnotationRequest {
629  // The ID of the annotation to be deleted.
630  string annotation_id = 1;
631}
632
633message SearchAnnotationsRequest {
634  // Required. The annotation sets to search within. The caller must have
635  // `READ` access to these annotation sets.
636  // All queried annotation sets must have the same type.
637  repeated string annotation_set_ids = 1;
638
639  // Required. `reference_id` or `reference_name` must be set.
640  oneof reference {
641    // The ID of the reference to query.
642    string reference_id = 2;
643
644    // The name of the reference to query, within the reference set associated
645    // with this query.
646    string reference_name = 3;
647  }
648
649  // The start position of the range on the reference, 0-based inclusive. If
650  // specified,
651  // [referenceId][google.genomics.v1.SearchAnnotationsRequest.reference_id] or
652  // [referenceName][google.genomics.v1.SearchAnnotationsRequest.reference_name]
653  // must be specified. Defaults to 0.
654  int64 start = 4;
655
656  // The end position of the range on the reference, 0-based exclusive. If
657  // [referenceId][google.genomics.v1.SearchAnnotationsRequest.reference_id] or
658  // [referenceName][google.genomics.v1.SearchAnnotationsRequest.reference_name]
659  // must be specified, Defaults to the length of the reference.
660  int64 end = 5;
661
662  // The continuation token, which is used to page through large result sets.
663  // To get the next page of results, set this parameter to the value of
664  // `nextPageToken` from the previous response.
665  string page_token = 6;
666
667  // The maximum number of results to return in a single page. If unspecified,
668  // defaults to 256. The maximum value is 2048.
669  int32 page_size = 7;
670}
671
672message SearchAnnotationsResponse {
673  // The matching annotations.
674  repeated Annotation annotations = 1;
675
676  // The continuation token, which is used to page through large result sets.
677  // Provide this value in a subsequent request to return the next page of
678  // results. This field will be empty if there aren't any additional results.
679  string next_page_token = 2;
680}
681
682// When an [Annotation][google.genomics.v1.Annotation] or
683// [AnnotationSet][google.genomics.v1.AnnotationSet] is created, if `type` is
684// not specified it will be set to `GENERIC`.
685enum AnnotationType {
686  ANNOTATION_TYPE_UNSPECIFIED = 0;
687
688  // A `GENERIC` annotation type should be used when no other annotation
689  // type will suffice. This represents an untyped annotation of the reference
690  // genome.
691  GENERIC = 1;
692
693  // A `VARIANT` annotation type.
694  VARIANT = 2;
695
696  // A `GENE` annotation type represents the existence of a gene at the
697  // associated reference coordinates. The start coordinate is typically the
698  // gene's transcription start site and the end is typically the end of the
699  // gene's last exon.
700  GENE = 3;
701
702  // A `TRANSCRIPT` annotation type represents the assertion that a
703  // particular region of the reference genome may be transcribed as RNA.
704  TRANSCRIPT = 4;
705}
706