Google 基因组学 API - 内部服务器错误 + ReferenceIDs

Google Genomics API - Internal Server Error + ReferenceIDs

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

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,但我们无法创建 annotation set w/o 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"
 }
}

顺便说一下,如何为调用者设置写入权限?

Caller must have WRITE permission for the associated annotation set.

提前致谢!

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

现在假设您创建了一个数据集,那么您可以直接通过 curl 创建一个 AnnotationSet - 您需要使用控制台中的 API 键(请不要 post 你的 API 密钥 public 就在这里 )。以下是命令和您要填写的内容:

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

如果这对你有用,请告诉我,如果还有什么我可以帮助你的。

谢谢,

保罗

添加到 Paul 的回答中:

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

我们希望所有 API 都需要 referenceId。我们不为我们的变体 API 因为当我们创建变体 API.

时参考 API 不存在

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

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

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

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

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

由于您收到身份验证错误,最好先在控制台 (https://console.cloud.google.com) 上检查与您使用的 API(服务器)密钥绑定的项目, 如果为 Genomics 和 Cloud APIs?

启用

~p

这里是 public 参考资料: https://console.cloud.google.com/storage/browser/genomics-public-data/references/

在这里我们可以获得 ReferenceIDs: https://developers.google.com/apis-explorer/#p/genomics/v1/genomics.referencesets.search

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

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

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

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

要使用 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