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