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

<p class="toc_element">
  <code><a href="#delete">delete(readGroupSetId)</a></code></p>
<p class="firstline">Deletes a read group set.</p>
<p class="toc_element">
  <code><a href="#export">export(body)</a></code></p>
<p class="firstline">Exports read group sets to a BAM file in Google Cloud Storage.</p>
<p class="toc_element">
  <code><a href="#get">get(readGroupSetId)</a></code></p>
<p class="firstline">Gets a read group set by ID.</p>
<p class="toc_element">
  <code><a href="#import_">import_(body)</a></code></p>
<p class="firstline">Creates read group sets by asynchronously importing the provided information. The caller must have WRITE permissions to the dataset.</p>
<p class="toc_element">
  <code><a href="#patch">patch(readGroupSetId, body)</a></code></p>
<p class="firstline">Updates a read group set. This method supports patch semantics.</p>
<p class="toc_element">
  <code><a href="#search">search(body)</a></code></p>
<p class="firstline">Searches for read group sets matching the criteria.</p>
<p class="toc_element">
  <code><a href="#update">update(readGroupSetId, body)</a></code></p>
<p class="firstline">Updates a read group set.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="delete">delete(readGroupSetId)</code>
  <pre>Deletes a read group set.

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

<div class="method">
    <code class="details" id="export">export(body)</code>
  <pre>Exports read group sets 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. See ImportReadGroupSets for details.

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

{ # The read group set export request.
    "exportUri": "A String", # Required. A Google Cloud Storage URI for the exported BAM file. The currently authenticated user must have write access to the new file. 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",
    ],
    "readGroupSetIds": [ # Required. The IDs of the read group sets to export. The caller must have READ access to these read group sets.
      "A String",
    ],
    "projectNumber": "A String", # Required. The Google Developers Console project number that owns this export. The caller must have WRITE access to this project.
  }


Returns:
  An object of the form:

    { # The read group set 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(readGroupSetId)</code>
  <pre>Gets a read group set by ID.

Args:
  readGroupSetId: string, The ID of the read group set. (required)

Returns:
  An object of the form:

    { # A read group set is a logical collection of read groups, which are collections of reads produced by a sequencer. A read group set typically models reads corresponding to one sample, sequenced one way, and aligned one way.
      # - A read group set belongs to one dataset.
      # - A read group belongs to one read group set.
      # - A read belongs to one read group.
    "info": { # A string which maps to an array of values.
      "a_key": [ # A string which maps to an array of values.
        "A String",
      ],
    },
    "name": "A String", # The read group set name. By default this will be initialized to the sample name of the sequenced data contained in this set.
    "readGroups": [ # The read groups in this set. There are typically 1-10 read groups in a read group set.
      { # A read group is all the data that's processed the same way by the sequencer.
        "info": { # A string which maps to an array of values.
          "a_key": [ # A string which maps to an array of values.
            "A String",
          ],
        },
        "predictedInsertSize": 42, # The predicted insert size of this read group. The insert size is the length the sequenced DNA fragment from end-to-end, not including the adapters.
        "name": "A String", # The read group name. This corresponds to the @RG ID field in the SAM spec.
        "programs": [ # The programs used to generate this read group. Programs are always identical for all read groups within a read group set. For this reason, only the first read group in a returned set will have this field populated.
          {
            "commandLine": "A String", # The command line used to run this program.
            "prevProgramId": "A String", # The ID of the program run before this one.
            "id": "A String", # The user specified locally unique ID of the program. Used along with prevProgramId to define an ordering between programs.
            "version": "A String", # The version of the program run.
            "name": "A String", # The display name of the program. This is typically the colloquial name of the tool used, for example 'bwa' or 'picard'.
          },
        ],
        "sampleId": "A String", # The sample this read group's data was generated from. Note: This is not an actual ID within this repository, but rather an identifier for a sample which may be meaningful to some external system.
        "experiment": { # The experiment used to generate this read group.
          "sequencingCenter": "A String", # The sequencing center used as part of this experiment.
          "libraryId": "A String", # The library used as part of this experiment. Note: This is not an actual ID within this repository, but rather an identifier for a library which may be meaningful to some external system.
          "instrumentModel": "A String", # The instrument model used as part of this experiment. This maps to sequencing technology in BAM.
          "platformUnit": "A String", # The platform unit used as part of this experiment e.g. flowcell-barcode.lane for Illumina or slide for SOLiD. Corresponds to the
        },
        "referenceSetId": "A String", # The reference set to which the reads in this read group are aligned.
        "id": "A String", # The generated unique read group ID. Note: This is different than the @RG ID field in the SAM spec. For that value, see the name field.
        "datasetId": "A String", # The ID of the dataset this read group belongs to.
        "description": "A String", # A free-form text description of this read group.
      },
    ],
    "filename": "A String", # The filename of the original source file for this read group set, if any.
    "referenceSetId": "A String", # The reference set the reads in this read group set are aligned to.
    "id": "A String", # The read group set ID.
    "datasetId": "A String", # The dataset ID.
  }</pre>
</div>

<div class="method">
    <code class="details" id="import_">import_(body)</code>
  <pre>Creates read group sets by asynchronously importing the provided information. The caller must have WRITE permissions to the dataset.

Notes on BAM import:  
- Tags will be converted to strings - tag types are not preserved
- Comments (@CO) in the input file header are not imported
- Original order of reference headers is not preserved
- Any reverse stranded unmapped reads will be reverse complemented, and their qualities (also the "BQ" and "OQ" tags, if any) will be reversed
- Unmapped reads will be stripped of positional information (referenceName and position)

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

{ # The read group set import request.
    "referenceSetId": "A String", # The reference set to which the imported read group sets are aligned to, if any. The reference names of this reference set must be a superset of those found in the imported file headers. If no reference set id is provided, a best effort is made to associate with a matching reference set.
    "sourceUris": [ # A list of URIs pointing at BAM files in Google Cloud Storage.
      "A String",
    ],
    "partitionStrategy": "A String", # The partition strategy describes how read groups are partitioned into read group sets.
    "datasetId": "A String", # Required. The ID of the dataset these read group sets will belong to. The caller must have WRITE permissions to this dataset.
  }


Returns:
  An object of the form:

    { # The read group set 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(readGroupSetId, body)</code>
  <pre>Updates a read group set. This method supports patch semantics.

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

{ # A read group set is a logical collection of read groups, which are collections of reads produced by a sequencer. A read group set typically models reads corresponding to one sample, sequenced one way, and aligned one way.
    # - A read group set belongs to one dataset.
    # - A read group belongs to one read group set.
    # - A read belongs to one read group.
  "info": { # A string which maps to an array of values.
    "a_key": [ # A string which maps to an array of values.
      "A String",
    ],
  },
  "name": "A String", # The read group set name. By default this will be initialized to the sample name of the sequenced data contained in this set.
  "readGroups": [ # The read groups in this set. There are typically 1-10 read groups in a read group set.
    { # A read group is all the data that's processed the same way by the sequencer.
      "info": { # A string which maps to an array of values.
        "a_key": [ # A string which maps to an array of values.
          "A String",
        ],
      },
      "predictedInsertSize": 42, # The predicted insert size of this read group. The insert size is the length the sequenced DNA fragment from end-to-end, not including the adapters.
      "name": "A String", # The read group name. This corresponds to the @RG ID field in the SAM spec.
      "programs": [ # The programs used to generate this read group. Programs are always identical for all read groups within a read group set. For this reason, only the first read group in a returned set will have this field populated.
        {
          "commandLine": "A String", # The command line used to run this program.
          "prevProgramId": "A String", # The ID of the program run before this one.
          "id": "A String", # The user specified locally unique ID of the program. Used along with prevProgramId to define an ordering between programs.
          "version": "A String", # The version of the program run.
          "name": "A String", # The display name of the program. This is typically the colloquial name of the tool used, for example 'bwa' or 'picard'.
        },
      ],
      "sampleId": "A String", # The sample this read group's data was generated from. Note: This is not an actual ID within this repository, but rather an identifier for a sample which may be meaningful to some external system.
      "experiment": { # The experiment used to generate this read group.
        "sequencingCenter": "A String", # The sequencing center used as part of this experiment.
        "libraryId": "A String", # The library used as part of this experiment. Note: This is not an actual ID within this repository, but rather an identifier for a library which may be meaningful to some external system.
        "instrumentModel": "A String", # The instrument model used as part of this experiment. This maps to sequencing technology in BAM.
        "platformUnit": "A String", # The platform unit used as part of this experiment e.g. flowcell-barcode.lane for Illumina or slide for SOLiD. Corresponds to the
      },
      "referenceSetId": "A String", # The reference set to which the reads in this read group are aligned.
      "id": "A String", # The generated unique read group ID. Note: This is different than the @RG ID field in the SAM spec. For that value, see the name field.
      "datasetId": "A String", # The ID of the dataset this read group belongs to.
      "description": "A String", # A free-form text description of this read group.
    },
  ],
  "filename": "A String", # The filename of the original source file for this read group set, if any.
  "referenceSetId": "A String", # The reference set the reads in this read group set are aligned to.
  "id": "A String", # The read group set ID.
  "datasetId": "A String", # The dataset ID.
}


Returns:
  An object of the form:

    { # A read group set is a logical collection of read groups, which are collections of reads produced by a sequencer. A read group set typically models reads corresponding to one sample, sequenced one way, and aligned one way.
      # - A read group set belongs to one dataset.
      # - A read group belongs to one read group set.
      # - A read belongs to one read group.
    "info": { # A string which maps to an array of values.
      "a_key": [ # A string which maps to an array of values.
        "A String",
      ],
    },
    "name": "A String", # The read group set name. By default this will be initialized to the sample name of the sequenced data contained in this set.
    "readGroups": [ # The read groups in this set. There are typically 1-10 read groups in a read group set.
      { # A read group is all the data that's processed the same way by the sequencer.
        "info": { # A string which maps to an array of values.
          "a_key": [ # A string which maps to an array of values.
            "A String",
          ],
        },
        "predictedInsertSize": 42, # The predicted insert size of this read group. The insert size is the length the sequenced DNA fragment from end-to-end, not including the adapters.
        "name": "A String", # The read group name. This corresponds to the @RG ID field in the SAM spec.
        "programs": [ # The programs used to generate this read group. Programs are always identical for all read groups within a read group set. For this reason, only the first read group in a returned set will have this field populated.
          {
            "commandLine": "A String", # The command line used to run this program.
            "prevProgramId": "A String", # The ID of the program run before this one.
            "id": "A String", # The user specified locally unique ID of the program. Used along with prevProgramId to define an ordering between programs.
            "version": "A String", # The version of the program run.
            "name": "A String", # The display name of the program. This is typically the colloquial name of the tool used, for example 'bwa' or 'picard'.
          },
        ],
        "sampleId": "A String", # The sample this read group's data was generated from. Note: This is not an actual ID within this repository, but rather an identifier for a sample which may be meaningful to some external system.
        "experiment": { # The experiment used to generate this read group.
          "sequencingCenter": "A String", # The sequencing center used as part of this experiment.
          "libraryId": "A String", # The library used as part of this experiment. Note: This is not an actual ID within this repository, but rather an identifier for a library which may be meaningful to some external system.
          "instrumentModel": "A String", # The instrument model used as part of this experiment. This maps to sequencing technology in BAM.
          "platformUnit": "A String", # The platform unit used as part of this experiment e.g. flowcell-barcode.lane for Illumina or slide for SOLiD. Corresponds to the
        },
        "referenceSetId": "A String", # The reference set to which the reads in this read group are aligned.
        "id": "A String", # The generated unique read group ID. Note: This is different than the @RG ID field in the SAM spec. For that value, see the name field.
        "datasetId": "A String", # The ID of the dataset this read group belongs to.
        "description": "A String", # A free-form text description of this read group.
      },
    ],
    "filename": "A String", # The filename of the original source file for this read group set, if any.
    "referenceSetId": "A String", # The reference set the reads in this read group set are aligned to.
    "id": "A String", # The read group set ID.
    "datasetId": "A String", # The dataset ID.
  }</pre>
</div>

<div class="method">
    <code class="details" id="search">search(body)</code>
  <pre>Searches for read group sets matching the criteria.

Implements GlobalAllianceApi.searchReadGroupSets.

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

{ # The read group set 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 read group sets within the given datasets. At least one ID must be provided.
      "A String",
    ],
    "name": "A String", # Only return read group sets for which a substring of the name matches this string.
    "pageSize": 42, # The maximum number of results to return in a single page. If unspecified, defaults to 256. The maximum value is 1024.
  }


Returns:
  An object of the form:

    { # The read group set 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.
    "readGroupSets": [ # The list of matching read group sets.
      { # A read group set is a logical collection of read groups, which are collections of reads produced by a sequencer. A read group set typically models reads corresponding to one sample, sequenced one way, and aligned one way.
          # - A read group set belongs to one dataset.
          # - A read group belongs to one read group set.
          # - A read belongs to one read group.
        "info": { # A string which maps to an array of values.
          "a_key": [ # A string which maps to an array of values.
            "A String",
          ],
        },
        "name": "A String", # The read group set name. By default this will be initialized to the sample name of the sequenced data contained in this set.
        "readGroups": [ # The read groups in this set. There are typically 1-10 read groups in a read group set.
          { # A read group is all the data that's processed the same way by the sequencer.
            "info": { # A string which maps to an array of values.
              "a_key": [ # A string which maps to an array of values.
                "A String",
              ],
            },
            "predictedInsertSize": 42, # The predicted insert size of this read group. The insert size is the length the sequenced DNA fragment from end-to-end, not including the adapters.
            "name": "A String", # The read group name. This corresponds to the @RG ID field in the SAM spec.
            "programs": [ # The programs used to generate this read group. Programs are always identical for all read groups within a read group set. For this reason, only the first read group in a returned set will have this field populated.
              {
                "commandLine": "A String", # The command line used to run this program.
                "prevProgramId": "A String", # The ID of the program run before this one.
                "id": "A String", # The user specified locally unique ID of the program. Used along with prevProgramId to define an ordering between programs.
                "version": "A String", # The version of the program run.
                "name": "A String", # The display name of the program. This is typically the colloquial name of the tool used, for example 'bwa' or 'picard'.
              },
            ],
            "sampleId": "A String", # The sample this read group's data was generated from. Note: This is not an actual ID within this repository, but rather an identifier for a sample which may be meaningful to some external system.
            "experiment": { # The experiment used to generate this read group.
              "sequencingCenter": "A String", # The sequencing center used as part of this experiment.
              "libraryId": "A String", # The library used as part of this experiment. Note: This is not an actual ID within this repository, but rather an identifier for a library which may be meaningful to some external system.
              "instrumentModel": "A String", # The instrument model used as part of this experiment. This maps to sequencing technology in BAM.
              "platformUnit": "A String", # The platform unit used as part of this experiment e.g. flowcell-barcode.lane for Illumina or slide for SOLiD. Corresponds to the
            },
            "referenceSetId": "A String", # The reference set to which the reads in this read group are aligned.
            "id": "A String", # The generated unique read group ID. Note: This is different than the @RG ID field in the SAM spec. For that value, see the name field.
            "datasetId": "A String", # The ID of the dataset this read group belongs to.
            "description": "A String", # A free-form text description of this read group.
          },
        ],
        "filename": "A String", # The filename of the original source file for this read group set, if any.
        "referenceSetId": "A String", # The reference set the reads in this read group set are aligned to.
        "id": "A String", # The read group set ID.
        "datasetId": "A String", # The dataset ID.
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(readGroupSetId, body)</code>
  <pre>Updates a read group set.

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

{ # A read group set is a logical collection of read groups, which are collections of reads produced by a sequencer. A read group set typically models reads corresponding to one sample, sequenced one way, and aligned one way.
    # - A read group set belongs to one dataset.
    # - A read group belongs to one read group set.
    # - A read belongs to one read group.
  "info": { # A string which maps to an array of values.
    "a_key": [ # A string which maps to an array of values.
      "A String",
    ],
  },
  "name": "A String", # The read group set name. By default this will be initialized to the sample name of the sequenced data contained in this set.
  "readGroups": [ # The read groups in this set. There are typically 1-10 read groups in a read group set.
    { # A read group is all the data that's processed the same way by the sequencer.
      "info": { # A string which maps to an array of values.
        "a_key": [ # A string which maps to an array of values.
          "A String",
        ],
      },
      "predictedInsertSize": 42, # The predicted insert size of this read group. The insert size is the length the sequenced DNA fragment from end-to-end, not including the adapters.
      "name": "A String", # The read group name. This corresponds to the @RG ID field in the SAM spec.
      "programs": [ # The programs used to generate this read group. Programs are always identical for all read groups within a read group set. For this reason, only the first read group in a returned set will have this field populated.
        {
          "commandLine": "A String", # The command line used to run this program.
          "prevProgramId": "A String", # The ID of the program run before this one.
          "id": "A String", # The user specified locally unique ID of the program. Used along with prevProgramId to define an ordering between programs.
          "version": "A String", # The version of the program run.
          "name": "A String", # The display name of the program. This is typically the colloquial name of the tool used, for example 'bwa' or 'picard'.
        },
      ],
      "sampleId": "A String", # The sample this read group's data was generated from. Note: This is not an actual ID within this repository, but rather an identifier for a sample which may be meaningful to some external system.
      "experiment": { # The experiment used to generate this read group.
        "sequencingCenter": "A String", # The sequencing center used as part of this experiment.
        "libraryId": "A String", # The library used as part of this experiment. Note: This is not an actual ID within this repository, but rather an identifier for a library which may be meaningful to some external system.
        "instrumentModel": "A String", # The instrument model used as part of this experiment. This maps to sequencing technology in BAM.
        "platformUnit": "A String", # The platform unit used as part of this experiment e.g. flowcell-barcode.lane for Illumina or slide for SOLiD. Corresponds to the
      },
      "referenceSetId": "A String", # The reference set to which the reads in this read group are aligned.
      "id": "A String", # The generated unique read group ID. Note: This is different than the @RG ID field in the SAM spec. For that value, see the name field.
      "datasetId": "A String", # The ID of the dataset this read group belongs to.
      "description": "A String", # A free-form text description of this read group.
    },
  ],
  "filename": "A String", # The filename of the original source file for this read group set, if any.
  "referenceSetId": "A String", # The reference set the reads in this read group set are aligned to.
  "id": "A String", # The read group set ID.
  "datasetId": "A String", # The dataset ID.
}


Returns:
  An object of the form:

    { # A read group set is a logical collection of read groups, which are collections of reads produced by a sequencer. A read group set typically models reads corresponding to one sample, sequenced one way, and aligned one way.
      # - A read group set belongs to one dataset.
      # - A read group belongs to one read group set.
      # - A read belongs to one read group.
    "info": { # A string which maps to an array of values.
      "a_key": [ # A string which maps to an array of values.
        "A String",
      ],
    },
    "name": "A String", # The read group set name. By default this will be initialized to the sample name of the sequenced data contained in this set.
    "readGroups": [ # The read groups in this set. There are typically 1-10 read groups in a read group set.
      { # A read group is all the data that's processed the same way by the sequencer.
        "info": { # A string which maps to an array of values.
          "a_key": [ # A string which maps to an array of values.
            "A String",
          ],
        },
        "predictedInsertSize": 42, # The predicted insert size of this read group. The insert size is the length the sequenced DNA fragment from end-to-end, not including the adapters.
        "name": "A String", # The read group name. This corresponds to the @RG ID field in the SAM spec.
        "programs": [ # The programs used to generate this read group. Programs are always identical for all read groups within a read group set. For this reason, only the first read group in a returned set will have this field populated.
          {
            "commandLine": "A String", # The command line used to run this program.
            "prevProgramId": "A String", # The ID of the program run before this one.
            "id": "A String", # The user specified locally unique ID of the program. Used along with prevProgramId to define an ordering between programs.
            "version": "A String", # The version of the program run.
            "name": "A String", # The display name of the program. This is typically the colloquial name of the tool used, for example 'bwa' or 'picard'.
          },
        ],
        "sampleId": "A String", # The sample this read group's data was generated from. Note: This is not an actual ID within this repository, but rather an identifier for a sample which may be meaningful to some external system.
        "experiment": { # The experiment used to generate this read group.
          "sequencingCenter": "A String", # The sequencing center used as part of this experiment.
          "libraryId": "A String", # The library used as part of this experiment. Note: This is not an actual ID within this repository, but rather an identifier for a library which may be meaningful to some external system.
          "instrumentModel": "A String", # The instrument model used as part of this experiment. This maps to sequencing technology in BAM.
          "platformUnit": "A String", # The platform unit used as part of this experiment e.g. flowcell-barcode.lane for Illumina or slide for SOLiD. Corresponds to the
        },
        "referenceSetId": "A String", # The reference set to which the reads in this read group are aligned.
        "id": "A String", # The generated unique read group ID. Note: This is different than the @RG ID field in the SAM spec. For that value, see the name field.
        "datasetId": "A String", # The ID of the dataset this read group belongs to.
        "description": "A String", # A free-form text description of this read group.
      },
    ],
    "filename": "A String", # The filename of the original source file for this read group set, if any.
    "referenceSetId": "A String", # The reference set the reads in this read group set are aligned to.
    "id": "A String", # The read group set ID.
    "datasetId": "A String", # The dataset ID.
  }</pre>
</div>

</body></html>