<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_v1beta.html">Genomics API</a> . <a href="genomics_v1beta.readsets.html">readsets</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="genomics_v1beta.readsets.coveragebuckets.html">coveragebuckets()</a></code>
</p>
<p class="firstline">Returns the coveragebuckets Resource.</p>

<p class="toc_element">
  <code><a href="#delete">delete(readsetId)</a></code></p>
<p class="firstline">Deletes a readset.</p>
<p class="toc_element">
  <code><a href="#export">export(body)</a></code></p>
<p class="firstline">Exports readsets to a BAM file in Google Cloud Storage. Note that currently there may be some differences between exported BAM files and the original BAM file at the time of import. In particular, comments in the input file header will not be preserved, and some custom tags will be converted to strings.</p>
<p class="toc_element">
  <code><a href="#get">get(readsetId)</a></code></p>
<p class="firstline">Gets a readset by ID.</p>
<p class="toc_element">
  <code><a href="#import_">import_(body)</a></code></p>
<p class="firstline">Creates readsets by asynchronously importing the provided information. Note that currently comments in the input file header are not imported and some custom tags will be converted to strings, rather than preserving tag types. The caller must have WRITE permissions to the dataset.</p>
<p class="toc_element">
  <code><a href="#patch">patch(readsetId, body)</a></code></p>
<p class="firstline">Updates a readset. This method supports patch semantics.</p>
<p class="toc_element">
  <code><a href="#search">search(body)</a></code></p>
<p class="firstline">Gets a list of readsets matching the criteria.</p>
<p class="toc_element">
  <code><a href="#update">update(readsetId, body)</a></code></p>
<p class="firstline">Updates a readset.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="delete">delete(readsetId)</code>
  <pre>Deletes a readset.

Args:
  readsetId: string, The ID of the readset to be deleted. The caller must have WRITE permissions to the dataset associated with this readset. (required)
</pre>
</div>

<div class="method">
    <code class="details" id="export">export(body)</code>
  <pre>Exports readsets to a BAM file in Google Cloud Storage. Note that currently there may be some differences between exported BAM files and the original BAM file at the time of import. In particular, comments in the input file header will not be preserved, and some custom tags will be converted to strings.

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

{ # The readset export request.
    "readsetIds": [ # The IDs of the readsets to export.
      "A String",
    ],
    "exportUri": "A String", # A Google Cloud Storage URI where the exported BAM file will be created. The currently authenticated user must have write access to the new file location. An error will be returned if the URI already contains data.
    "referenceNames": [ # The reference names to export. If this is not specified, all reference sequences, including unmapped reads, are exported. Use * to export only unmapped reads.
      "A String",
    ],
    "projectId": "A String", # The Google Developers Console project number that owns this export.
  }


Returns:
  An object of the form:

    { # The readset export response.
    "jobId": "A String", # A job ID that can be used to get status information.
  }</pre>
</div>

<div class="method">
    <code class="details" id="get">get(readsetId)</code>
  <pre>Gets a readset by ID.

Args:
  readsetId: string, The ID of the readset. (required)

Returns:
  An object of the form:

    { # A Readset is a collection of Reads.
    "fileData": [ # File information from the original BAM import. See the BAM format specification for additional information on each field.
      { # The header section of the BAM/SAM file.
        "programs": [ # (@PG) Programs.
          {
            "commandLine": "A String", # (CL) Command line.
            "prevProgramId": "A String", # (PP) Previous program ID.
            "id": "A String", # (ID) Program record identifier.
            "version": "A String", # (VN) Program version.
            "name": "A String", # (PN) Program name.
          },
        ],
        "readGroups": [ # (@RG) Read group.
          {
            "sequencingTechnology": "A String", # (PL) Platform/technology used to produce the reads.
            "predictedInsertSize": 42, # (PI) Predicted median insert size.
            "sequencingCenterName": "A String", # (CN) Name of sequencing center producing the read.
            "description": "A String", # (DS) Description.
            "processingProgram": "A String", # (PG) Programs used for processing the read group.
            "platformUnit": "A String", # (PU) Platform unit.
            "flowOrder": "A String", # (FO) Flow order. The array of nucleotide bases that correspond to the nucleotides used for each flow of each read.
            "library": "A String", # (LS) Library.
            "sample": "A String", # (SM) Sample.
            "date": "A String", # (DT) Date the run was produced (ISO8601 date or date/time).
            "keySequence": "A String", # (KS) The array of nucleotide bases that correspond to the key sequence of each read.
            "id": "A String", # (ID) Read group identifier.
          },
        ],
        "filename": "A String", # The name of the file from which this data was imported.
        "headers": [ # (@HD) The header line.
          {
            "sortingOrder": "A String", # (SO) Sorting order of alignments.
            "version": "A String", # (VN) BAM format version.
          },
        ],
        "comments": [ # (@CO) One-line text comments.
          "A String",
        ],
        "refSequences": [ # (@SQ) Reference sequence dictionary.
          {
            "name": "A String", # (SN) Reference sequence name.
            "assemblyId": "A String", # (AS) Genome assembly identifier.
            "uri": "A String", # (UR) URI of the sequence.
            "length": 42, # (LN) Reference sequence length.
            "species": "A String", # (SP) Species.
            "md5Checksum": "A String", # (M5) MD5 checksum of the sequence in the uppercase, excluding spaces but including pads as *.
          },
        ],
        "fileUri": "A String", # [Deprecated] This field is deprecated and will no longer be populated. Please use filename instead.
      },
    ],
    "id": "A String", # The Google generated ID of the readset, immutable.
    "datasetId": "A String", # The ID of the dataset this readset belongs to.
    "name": "A String", # The readset name, typically this is the sample name.
  }</pre>
</div>

<div class="method">
    <code class="details" id="import_">import_(body)</code>
  <pre>Creates readsets by asynchronously importing the provided information. Note that currently comments in the input file header are not imported and some custom tags will be converted to strings, rather than preserving tag types. The caller must have WRITE permissions to the dataset.

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

{ # The readset import request.
    "sourceUris": [ # A list of URIs pointing at BAM files in Google Cloud Storage.
      "A String",
    ],
    "datasetId": "A String", # Required. The ID of the dataset these readsets will belong to. The caller must have WRITE permissions to this dataset.
  }


Returns:
  An object of the form:

    { # The readset import response.
    "jobId": "A String", # A job ID that can be used to get status information.
  }</pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(readsetId, body)</code>
  <pre>Updates a readset. This method supports patch semantics.

Args:
  readsetId: string, The ID of the readset to be updated. The caller must have WRITE permissions to the dataset associated with this readset. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # A Readset is a collection of Reads.
  "fileData": [ # File information from the original BAM import. See the BAM format specification for additional information on each field.
    { # The header section of the BAM/SAM file.
      "programs": [ # (@PG) Programs.
        {
          "commandLine": "A String", # (CL) Command line.
          "prevProgramId": "A String", # (PP) Previous program ID.
          "id": "A String", # (ID) Program record identifier.
          "version": "A String", # (VN) Program version.
          "name": "A String", # (PN) Program name.
        },
      ],
      "readGroups": [ # (@RG) Read group.
        {
          "sequencingTechnology": "A String", # (PL) Platform/technology used to produce the reads.
          "predictedInsertSize": 42, # (PI) Predicted median insert size.
          "sequencingCenterName": "A String", # (CN) Name of sequencing center producing the read.
          "description": "A String", # (DS) Description.
          "processingProgram": "A String", # (PG) Programs used for processing the read group.
          "platformUnit": "A String", # (PU) Platform unit.
          "flowOrder": "A String", # (FO) Flow order. The array of nucleotide bases that correspond to the nucleotides used for each flow of each read.
          "library": "A String", # (LS) Library.
          "sample": "A String", # (SM) Sample.
          "date": "A String", # (DT) Date the run was produced (ISO8601 date or date/time).
          "keySequence": "A String", # (KS) The array of nucleotide bases that correspond to the key sequence of each read.
          "id": "A String", # (ID) Read group identifier.
        },
      ],
      "filename": "A String", # The name of the file from which this data was imported.
      "headers": [ # (@HD) The header line.
        {
          "sortingOrder": "A String", # (SO) Sorting order of alignments.
          "version": "A String", # (VN) BAM format version.
        },
      ],
      "comments": [ # (@CO) One-line text comments.
        "A String",
      ],
      "refSequences": [ # (@SQ) Reference sequence dictionary.
        {
          "name": "A String", # (SN) Reference sequence name.
          "assemblyId": "A String", # (AS) Genome assembly identifier.
          "uri": "A String", # (UR) URI of the sequence.
          "length": 42, # (LN) Reference sequence length.
          "species": "A String", # (SP) Species.
          "md5Checksum": "A String", # (M5) MD5 checksum of the sequence in the uppercase, excluding spaces but including pads as *.
        },
      ],
      "fileUri": "A String", # [Deprecated] This field is deprecated and will no longer be populated. Please use filename instead.
    },
  ],
  "id": "A String", # The Google generated ID of the readset, immutable.
  "datasetId": "A String", # The ID of the dataset this readset belongs to.
  "name": "A String", # The readset name, typically this is the sample name.
}


Returns:
  An object of the form:

    { # A Readset is a collection of Reads.
    "fileData": [ # File information from the original BAM import. See the BAM format specification for additional information on each field.
      { # The header section of the BAM/SAM file.
        "programs": [ # (@PG) Programs.
          {
            "commandLine": "A String", # (CL) Command line.
            "prevProgramId": "A String", # (PP) Previous program ID.
            "id": "A String", # (ID) Program record identifier.
            "version": "A String", # (VN) Program version.
            "name": "A String", # (PN) Program name.
          },
        ],
        "readGroups": [ # (@RG) Read group.
          {
            "sequencingTechnology": "A String", # (PL) Platform/technology used to produce the reads.
            "predictedInsertSize": 42, # (PI) Predicted median insert size.
            "sequencingCenterName": "A String", # (CN) Name of sequencing center producing the read.
            "description": "A String", # (DS) Description.
            "processingProgram": "A String", # (PG) Programs used for processing the read group.
            "platformUnit": "A String", # (PU) Platform unit.
            "flowOrder": "A String", # (FO) Flow order. The array of nucleotide bases that correspond to the nucleotides used for each flow of each read.
            "library": "A String", # (LS) Library.
            "sample": "A String", # (SM) Sample.
            "date": "A String", # (DT) Date the run was produced (ISO8601 date or date/time).
            "keySequence": "A String", # (KS) The array of nucleotide bases that correspond to the key sequence of each read.
            "id": "A String", # (ID) Read group identifier.
          },
        ],
        "filename": "A String", # The name of the file from which this data was imported.
        "headers": [ # (@HD) The header line.
          {
            "sortingOrder": "A String", # (SO) Sorting order of alignments.
            "version": "A String", # (VN) BAM format version.
          },
        ],
        "comments": [ # (@CO) One-line text comments.
          "A String",
        ],
        "refSequences": [ # (@SQ) Reference sequence dictionary.
          {
            "name": "A String", # (SN) Reference sequence name.
            "assemblyId": "A String", # (AS) Genome assembly identifier.
            "uri": "A String", # (UR) URI of the sequence.
            "length": 42, # (LN) Reference sequence length.
            "species": "A String", # (SP) Species.
            "md5Checksum": "A String", # (M5) MD5 checksum of the sequence in the uppercase, excluding spaces but including pads as *.
          },
        ],
        "fileUri": "A String", # [Deprecated] This field is deprecated and will no longer be populated. Please use filename instead.
      },
    ],
    "id": "A String", # The Google generated ID of the readset, immutable.
    "datasetId": "A String", # The ID of the dataset this readset belongs to.
    "name": "A String", # The readset name, typically this is the sample name.
  }</pre>
</div>

<div class="method">
    <code class="details" id="search">search(body)</code>
  <pre>Gets a list of readsets matching the criteria.

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

{ # The readset search request.
    "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.
    "datasetIds": [ # Restricts this query to readsets within the given datasets. At least one ID must be provided.
      "A String",
    ],
    "name": "A String", # Only return readsets for which a substring of the name matches this string.
    "maxResults": "A String", # Specifies number of results to return in a single page. If unspecified, it will default to 128. The maximum value is 1024.
  }


Returns:
  An object of the form:

    { # The readset search response.
    "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.
    "readsets": [ # The list of matching Readsets.
      { # A Readset is a collection of Reads.
        "fileData": [ # File information from the original BAM import. See the BAM format specification for additional information on each field.
          { # The header section of the BAM/SAM file.
            "programs": [ # (@PG) Programs.
              {
                "commandLine": "A String", # (CL) Command line.
                "prevProgramId": "A String", # (PP) Previous program ID.
                "id": "A String", # (ID) Program record identifier.
                "version": "A String", # (VN) Program version.
                "name": "A String", # (PN) Program name.
              },
            ],
            "readGroups": [ # (@RG) Read group.
              {
                "sequencingTechnology": "A String", # (PL) Platform/technology used to produce the reads.
                "predictedInsertSize": 42, # (PI) Predicted median insert size.
                "sequencingCenterName": "A String", # (CN) Name of sequencing center producing the read.
                "description": "A String", # (DS) Description.
                "processingProgram": "A String", # (PG) Programs used for processing the read group.
                "platformUnit": "A String", # (PU) Platform unit.
                "flowOrder": "A String", # (FO) Flow order. The array of nucleotide bases that correspond to the nucleotides used for each flow of each read.
                "library": "A String", # (LS) Library.
                "sample": "A String", # (SM) Sample.
                "date": "A String", # (DT) Date the run was produced (ISO8601 date or date/time).
                "keySequence": "A String", # (KS) The array of nucleotide bases that correspond to the key sequence of each read.
                "id": "A String", # (ID) Read group identifier.
              },
            ],
            "filename": "A String", # The name of the file from which this data was imported.
            "headers": [ # (@HD) The header line.
              {
                "sortingOrder": "A String", # (SO) Sorting order of alignments.
                "version": "A String", # (VN) BAM format version.
              },
            ],
            "comments": [ # (@CO) One-line text comments.
              "A String",
            ],
            "refSequences": [ # (@SQ) Reference sequence dictionary.
              {
                "name": "A String", # (SN) Reference sequence name.
                "assemblyId": "A String", # (AS) Genome assembly identifier.
                "uri": "A String", # (UR) URI of the sequence.
                "length": 42, # (LN) Reference sequence length.
                "species": "A String", # (SP) Species.
                "md5Checksum": "A String", # (M5) MD5 checksum of the sequence in the uppercase, excluding spaces but including pads as *.
              },
            ],
            "fileUri": "A String", # [Deprecated] This field is deprecated and will no longer be populated. Please use filename instead.
          },
        ],
        "id": "A String", # The Google generated ID of the readset, immutable.
        "datasetId": "A String", # The ID of the dataset this readset belongs to.
        "name": "A String", # The readset name, typically this is the sample name.
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(readsetId, body)</code>
  <pre>Updates a readset.

Args:
  readsetId: string, The ID of the readset to be updated. The caller must have WRITE permissions to the dataset associated with this readset. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # A Readset is a collection of Reads.
  "fileData": [ # File information from the original BAM import. See the BAM format specification for additional information on each field.
    { # The header section of the BAM/SAM file.
      "programs": [ # (@PG) Programs.
        {
          "commandLine": "A String", # (CL) Command line.
          "prevProgramId": "A String", # (PP) Previous program ID.
          "id": "A String", # (ID) Program record identifier.
          "version": "A String", # (VN) Program version.
          "name": "A String", # (PN) Program name.
        },
      ],
      "readGroups": [ # (@RG) Read group.
        {
          "sequencingTechnology": "A String", # (PL) Platform/technology used to produce the reads.
          "predictedInsertSize": 42, # (PI) Predicted median insert size.
          "sequencingCenterName": "A String", # (CN) Name of sequencing center producing the read.
          "description": "A String", # (DS) Description.
          "processingProgram": "A String", # (PG) Programs used for processing the read group.
          "platformUnit": "A String", # (PU) Platform unit.
          "flowOrder": "A String", # (FO) Flow order. The array of nucleotide bases that correspond to the nucleotides used for each flow of each read.
          "library": "A String", # (LS) Library.
          "sample": "A String", # (SM) Sample.
          "date": "A String", # (DT) Date the run was produced (ISO8601 date or date/time).
          "keySequence": "A String", # (KS) The array of nucleotide bases that correspond to the key sequence of each read.
          "id": "A String", # (ID) Read group identifier.
        },
      ],
      "filename": "A String", # The name of the file from which this data was imported.
      "headers": [ # (@HD) The header line.
        {
          "sortingOrder": "A String", # (SO) Sorting order of alignments.
          "version": "A String", # (VN) BAM format version.
        },
      ],
      "comments": [ # (@CO) One-line text comments.
        "A String",
      ],
      "refSequences": [ # (@SQ) Reference sequence dictionary.
        {
          "name": "A String", # (SN) Reference sequence name.
          "assemblyId": "A String", # (AS) Genome assembly identifier.
          "uri": "A String", # (UR) URI of the sequence.
          "length": 42, # (LN) Reference sequence length.
          "species": "A String", # (SP) Species.
          "md5Checksum": "A String", # (M5) MD5 checksum of the sequence in the uppercase, excluding spaces but including pads as *.
        },
      ],
      "fileUri": "A String", # [Deprecated] This field is deprecated and will no longer be populated. Please use filename instead.
    },
  ],
  "id": "A String", # The Google generated ID of the readset, immutable.
  "datasetId": "A String", # The ID of the dataset this readset belongs to.
  "name": "A String", # The readset name, typically this is the sample name.
}


Returns:
  An object of the form:

    { # A Readset is a collection of Reads.
    "fileData": [ # File information from the original BAM import. See the BAM format specification for additional information on each field.
      { # The header section of the BAM/SAM file.
        "programs": [ # (@PG) Programs.
          {
            "commandLine": "A String", # (CL) Command line.
            "prevProgramId": "A String", # (PP) Previous program ID.
            "id": "A String", # (ID) Program record identifier.
            "version": "A String", # (VN) Program version.
            "name": "A String", # (PN) Program name.
          },
        ],
        "readGroups": [ # (@RG) Read group.
          {
            "sequencingTechnology": "A String", # (PL) Platform/technology used to produce the reads.
            "predictedInsertSize": 42, # (PI) Predicted median insert size.
            "sequencingCenterName": "A String", # (CN) Name of sequencing center producing the read.
            "description": "A String", # (DS) Description.
            "processingProgram": "A String", # (PG) Programs used for processing the read group.
            "platformUnit": "A String", # (PU) Platform unit.
            "flowOrder": "A String", # (FO) Flow order. The array of nucleotide bases that correspond to the nucleotides used for each flow of each read.
            "library": "A String", # (LS) Library.
            "sample": "A String", # (SM) Sample.
            "date": "A String", # (DT) Date the run was produced (ISO8601 date or date/time).
            "keySequence": "A String", # (KS) The array of nucleotide bases that correspond to the key sequence of each read.
            "id": "A String", # (ID) Read group identifier.
          },
        ],
        "filename": "A String", # The name of the file from which this data was imported.
        "headers": [ # (@HD) The header line.
          {
            "sortingOrder": "A String", # (SO) Sorting order of alignments.
            "version": "A String", # (VN) BAM format version.
          },
        ],
        "comments": [ # (@CO) One-line text comments.
          "A String",
        ],
        "refSequences": [ # (@SQ) Reference sequence dictionary.
          {
            "name": "A String", # (SN) Reference sequence name.
            "assemblyId": "A String", # (AS) Genome assembly identifier.
            "uri": "A String", # (UR) URI of the sequence.
            "length": 42, # (LN) Reference sequence length.
            "species": "A String", # (SP) Species.
            "md5Checksum": "A String", # (M5) MD5 checksum of the sequence in the uppercase, excluding spaces but including pads as *.
          },
        ],
        "fileUri": "A String", # [Deprecated] This field is deprecated and will no longer be populated. Please use filename instead.
      },
    ],
    "id": "A String", # The Google generated ID of the readset, immutable.
    "datasetId": "A String", # The ID of the dataset this readset belongs to.
    "name": "A String", # The readset name, typically this is the sample name.
  }</pre>
</div>

</body></html>