<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="genomics_v1beta2.html">Genomics API</a> . <a href="genomics_v1beta2.referencesets.html">referencesets</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#get">get(referenceSetId)</a></code></p>
<p class="firstline">Gets a reference set.</p>
<p class="toc_element">
  <code><a href="#search">search(body)</a></code></p>
<p class="firstline">Searches for reference sets which match the given criteria.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="get">get(referenceSetId)</code>
  <pre>Gets a reference set.

Implements GlobalAllianceApi.getReferenceSet.

Args:
  referenceSetId: string, The ID of the reference set. (required)

Returns:
  An object of the form:

    { # A reference set is a set of references which typically comprise a reference assembly for a species, such as GRCh38 which is representative of the human genome. A reference set defines a common coordinate space for comparing reference-aligned experimental data. A reference set contains 1 or more references.
    "description": "A String", # Free text description of this reference set.
    "sourceURI": "A String", # The URI from which the references were obtained.
    "referenceIds": [ # The IDs of the reference objects that are part of this set. Reference.md5checksum must be unique within this set.
      "A String",
    ],
    "assemblyId": "A String", # Public id of this reference set, such as GRCh37.
    "sourceAccessions": [ # All known corresponding accession IDs in INSDC (GenBank/ENA/DDBJ) ideally with a version number, for example NC_000001.11.
      "A String",
    ],
    "md5checksum": "A String", # Order-independent MD5 checksum which identifies this reference set. The checksum is computed by sorting all lower case hexidecimal string reference.md5checksum (for all reference in this set) in ascending lexicographic order, concatenating, and taking the MD5 of that value. The resulting value is represented in lower case hexadecimal format.
    "id": "A String", # The Google generated immutable ID of the reference set.
    "ncbiTaxonId": 42, # ID from http://www.ncbi.nlm.nih.gov/taxonomy (for example, 9606 for human) indicating the species which this reference set is intended to model. Note that contained references may specify a different ncbiTaxonId, as assemblies may contain reference sequences which do not belong to the modeled species, for example EBV in a human reference genome.
  }</pre>
</div>

<div class="method">
    <code class="details" id="search">search(body)</code>
  <pre>Searches for reference sets which match the given criteria.

Implements GlobalAllianceApi.searchReferenceSets.

Args:
  body: object, The request body. (required)
    The object takes the form of:

{
    "md5checksums": [ # If present, return references for which the md5checksum matches. See ReferenceSet.md5checksum for details.
      "A String",
    ],
    "assemblyId": "A String", # If present, return reference sets for which a substring of their assemblyId matches this string (case insensitive).
    "accessions": [ # If present, return references for which the accession matches any of these strings. Best to give a version number, for example GCF_000001405.26. If only the main accession number is given then all records with that main accession will be returned, whichever version. Note that different versions will have different sequences.
      "A String",
    ],
    "pageSize": 42, # The maximum number of results to return in a single page. If unspecified, defaults to 1024. The maximum value is 4096.
    "pageToken": "A String", # The continuation token, which is used to page through large result sets. To get the next page of results, set this parameter to the value of nextPageToken from the previous response.
  }


Returns:
  An object of the form:

    {
    "nextPageToken": "A String", # The continuation token, which is used to page through large result sets. Provide this value in a subsequent request to return the next page of results. This field will be empty if there aren't any additional results.
    "referenceSets": [ # The matching references sets.
      { # A reference set is a set of references which typically comprise a reference assembly for a species, such as GRCh38 which is representative of the human genome. A reference set defines a common coordinate space for comparing reference-aligned experimental data. A reference set contains 1 or more references.
        "description": "A String", # Free text description of this reference set.
        "sourceURI": "A String", # The URI from which the references were obtained.
        "referenceIds": [ # The IDs of the reference objects that are part of this set. Reference.md5checksum must be unique within this set.
          "A String",
        ],
        "assemblyId": "A String", # Public id of this reference set, such as GRCh37.
        "sourceAccessions": [ # All known corresponding accession IDs in INSDC (GenBank/ENA/DDBJ) ideally with a version number, for example NC_000001.11.
          "A String",
        ],
        "md5checksum": "A String", # Order-independent MD5 checksum which identifies this reference set. The checksum is computed by sorting all lower case hexidecimal string reference.md5checksum (for all reference in this set) in ascending lexicographic order, concatenating, and taking the MD5 of that value. The resulting value is represented in lower case hexadecimal format.
        "id": "A String", # The Google generated immutable ID of the reference set.
        "ncbiTaxonId": 42, # ID from http://www.ncbi.nlm.nih.gov/taxonomy (for example, 9606 for human) indicating the species which this reference set is intended to model. Note that contained references may specify a different ncbiTaxonId, as assemblies may contain reference sequences which do not belong to the modeled species, for example EBV in a human reference genome.
      },
    ],
  }</pre>
</div>

</body></html>