0

我对 Google 基因组学 API 很陌生。我正在尝试创建注释。我同时使用了网络版本和 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 权限。

先感谢您!

4

6 回答 6

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

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

谢谢,

保罗

于 2016-06-09T19:12:23.600 回答
0

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

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

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

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

于 2016-06-10T21:00:39.460 回答
0

补充保罗的回答:

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

于 2016-06-09T19:33:58.027 回答
0

这是公共参考: https ://console.cloud.google.com/storage/browser/genomics-public-data/references/

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

于 2016-06-10T17:34:41.280 回答
0

我之前的评论没有正确格式化,所以我把它写成答案。对于这个特定的测试,我需要为我的帐户启用计费,因此我的指南是通过 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

于 2016-06-10T05:41:24.413 回答
0

要使用 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 
于 2016-06-14T23:03:12.120 回答