【问题标题】:Google Genomics API - Internal Server Error + ReferenceIDsGoogle Genomics API - 内部服务器错误 + ReferenceID
【发布时间】:2016-06-08 21:02:46
【问题描述】:

我对 Google 基因组 API 还是很陌生。我正在尝试创建注释。我同时使用了web version 和 Python API 调用:

service.annotations().create(body={ 'annotationSetId': '101', 'name': 'TestAnnotation', 'referenceName': 'chrM', 'start': '1', 'end': '1'}, fields='id') 

这是一个示例注释:

{
  "annotationSetId": "101",
  "name": "TestAnnotation",
  "referenceName": "chrM",
  "start": "1",
  "end": "1",
}

这两种情况我都收到以下错误:

500 Internal Server Error
{
 "error": {
  "code": 500,
  "message": "Unknown Error.",
  "status": "UNKNOWN"
 }
} 

有什么建议吗?

再观察一次。

我们可以通过只提交datasetIdname来添加变体集;无需指定 referenceId,但我们无法创建没有 referenceId注释集。为什么?

400 HTTP/2.0 400
- SHOW HEADERS -
{
 "error": {
  "code": 400,
  "message": "Invalid value for field \"annotationSet.referenceSetId\": empty or not specified",
  "status": "INVALID_ARGUMENT"
 }
}

顺便说一句,我如何设置调用者的 WRITE 权限?

调用者必须拥有关联注释集的 WRITE 权限。

提前谢谢你!

【问题讨论】:

    标签: google-api google-cloud-platform google-genomics


    【解决方案1】:

    因此,要将注释集关联到数据集,您需要对该数据集的写入权限。如果您创建了数据集,那么您将拥有与您的帐户相关联的写入权限。如果它是一个公共数据集,那么您可能需要征求加载该数据集的人的许可才能为您添加对它的写入权限,或者您可以在您的帐户下重新加载它。

    现在假设您创建了一个数据集,那么您可以直接通过 curl 创建一个 AnnotationSet - 您需要从控制台使用您的 API 密钥(请不要在此处公开发布您的 API 密钥) .下面是命令和你要填写的内容:

    curl -v -X POST -H "Content-Type: application/json" -d '{"datasetId":"YourActualDatasetID", "referenceSetId":"YourActualReferencesetID"}' https://genomics.googleapis.com/v1/annotationsets?fields=asdf&key=YOUR_API_KEY

    让我知道这是否对你有用,如果还有什么我可以帮助你的。

    谢谢,

    保罗

    【讨论】:

    • 谢谢保罗。根据您的回答,问题出在身份验证上,与referenceId 无关。我是所有者并创建了数据集,因此我应该拥有所有访问权限,但我遵循了@Melissa 的回复,并将自己添加为管理员。我创建了 API 密钥,并提交了我的请求。我收到“代码:401 -> 未经身份验证。”
    • 你能用web方法确认并添加annotationSet吗?{ "datasetId": "YOUR_DATASET_ID", "referenceSetId": "1213", "name": "Ann1" } 这对你有用吗?我得到 ""code": 404, "message": "couldn't associate with referenceSetId \"1213\": Reference set \"1213\" not found"。
    • 关联错误很可能是由于 1213 在后端不是有效的 ReferenceSetID。例如,EJjur6DxjIa6KQ 是一个有效的 ID。您可以通过 API Explorer 在developers.google.com/apis-explorer/#p/genomics/v1/… 找到它们
    • 谢谢保罗!正确的! ReferenceSetID 是问题所在。我不知道如何生成 ReferenceID。你有任何关于 ReferenceID 的文件吗?
    【解决方案2】:

    补充保罗的回答:

    annotationSetId 必须是真实注释集的 id。我们将努力改进错误消息。

    我们希望所有 API 都需要 referenceId。我们不针对我们的 Variant API,因为在我们创建 Variant API 时参考 API 不存在。

    要授予用户 WRITE 权限,请将用户添加为项目编辑器。见https://cloud.google.com/iam/docs/quickstart-roles-members#add_a_project_member_and_grant_them_an_iam_role

    【讨论】:

    • 添加到我的评论中,当我尝试添加 { "datasetId": "MYDEATASET ID", "name": "VSet5", "referenceSetId": "VSet50121" };我得到{“错误”:{“代码”:404,“消息”:“未找到请求的实体。”,“状态”:“NOT_FOUND”}},但是如果我删除referenceId,那么它会正确执行.
    • 更正:提到的 ReferenceID 不存在,所以这就是我收到错误的原因。感谢保罗!
    【解决方案3】:

    我之前的评论格式不正确,所以我将其写为答案。对于这个特定的测试,我需要为我的帐户启用计费,因此我的指南是通过 Discovery 服务提供的 Genomics REST API 中的原始信息:

    https://www.googleapis.com/discovery/v1/apis/genomics/v1/rest

    基于 REST API,创建 AnnotationSet 的范围如下:

    "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/genomics"

    由于您遇到身份验证错误,最好先在控制台 (https://console.cloud.google.com) 上检查与您使用的 API(服务器)密钥相关联的项目(如果已启用基因组学)和云 API?

    ~p

    【讨论】:

    • 是的,我启用了 API。问题在于您解决了它的 ReferenceID!谢谢!
    【解决方案4】:
    【解决方案5】:

    很高兴听到您一切顺利,阿米尔!这是我们三个人的一次有趣的团队合作,我总是很乐意提供帮助,因为我在过去两年中使用并看到了 API 的发展:)

    关于 ReferenceIds,我看到您已经找到了我在此处发布的一些相同链接。这些基本上是指向参考的 id,参考是一个序列,例如染色体。引用 ID 的集合属于表示引用程序集的 ReferenceSet,references.bases 属于 ReferenceID。我没有在REST API 中看到创建加载新参考基因组的方法——这些可能是由谷歌通过后端手动填充和提供的。也许梅丽莎可能有更多关于这方面的信息。

    以下是可能对参考资料有所帮助的链接集合 - 您还发现了其中一些 - 并将它们列为一个集合,以防其他人在未来发现它们有用:

    http://googlegenomics.readthedocs.io/en/latest/use_cases/discover_public_data/reference_genomes.html

    https://cloud.google.com/genomics/v1/users-guide#references

    https://cloud.google.com/genomics/v1/reference-sets#finding-references

    https://cloud.google.com/genomics/reference/rest/v1/referencesets

    https://cloud.google.com/genomics/reference/rest/v1/references

    https://cloud.google.com/genomics/reference/rest/v1/references.bases

    上述每个 REST API 都有自己特定的搜索和关联数据的方法。

    希望对你有帮助,

    ~p

    【讨论】:

      【解决方案6】:

      使用 REST API 进行注释:

      gcloud auth login
      TOKEN=$(gcloud auth print-access-token)
      curl -v -X POST -H "Authorization: Bearer $TOKEN" -d '{"datasetId": "YOUR_DATA_SET" ,  "referenceSetId": "EMWV_ZfLxrDY-wE" }'  --header "Content-Type: application/json" https://genomics.googleapis.com/v1/annotationsets 
      

      【讨论】:

        猜你喜欢
        • 2022-08-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多