2016-06-08 36 views
0

我對Google基因組學API很新穎。我正在嘗試創建一個註釋。我用兩個web version和Python API調用:Google Genomics API - 內部服務器錯誤+參考ID

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" 
} 
} 

什麼建議嗎?

再一次觀察。

我們可以添加一個變體只提交資料集設置;不需要指定referenceId,但是我們不能創建註釋集合 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" 
} 
} 

順便說一句,我該如何設置調用者的WRITE權限?

調用者必須具有關聯註釋集的WRITE權限。

預先感謝您!

回答

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

讓我知道這是否爲你工作,如果有其他任何東西,我可以幫你。

感謝,

保羅

+0

感謝保羅。根據你的回答,問題是身份驗證,而不是關於referenceId。我是所有者並創建了數據集,所以我應該擁有所有的訪問權限,但是我遵循@Melissa的回覆,並且還將自己添加爲管理員。我創建了API密鑰,並提交了我的請求。我得到「代碼:401 - >未認證」。 – AmirCS

+0

您是否可以使用Web方法確認並添加批註集?{ 「datasetId」:「YOUR_DATASET_ID」, 「referenceSetId」:「1213」, 「name」:「Ann1」 }這是否適合您?我得到「」code「:404, 」message「:」無法與referenceSetId關聯\「1213 \」:Reference set \「1213 \」找不到「 – AmirCS

+0

關聯錯誤很可能是因爲1213不是在後端有一個有效的ReferenceSetID,例如,一個EJjur6DxjIa6KQ是一個有效的ID,你可以通過https://developers.google.com/apis-explorer/#p/genomics/v1/genomics.referencesets .search?_h = 1&resource =%257B%250A%257D& –

0

添加到保羅的回答是:

annotationSetId必須將ID真正的註解集。我們將致力於改進錯誤信息。

我們希望爲我們所有的API提供referenceId。我們不適合我們的Variant API,因爲我們創建Variant API時Reference API不存在。

要給用戶寫入權限,請將該用戶添加爲項目編輯器。請參閱https://cloud.google.com/iam/docs/quickstart-roles-members#add_a_project_member_and_grant_them_an_iam_role

+0

添加到我的評論中,當我嘗試添加{ 「datasetId」:「MYDEATASET ID」, 「name」:「VSet5」, 「referenceSetId」:「VSet50121」 };我得到{ 「錯誤」:{ 「代碼」:404, 「消息」: 「請求的實體沒有被發現。」 「狀態」: 「NOT_FOUND」 }} ,但如果我刪除referenceId ,那麼它正確執行。 – AmirCS

+0

更正:所提及的ReferenceID不存在,所以這就是我得到錯誤的原因。感謝保羅! – AmirCS

0

我之前的評論沒有得到正確的格式,所以我將其寫爲答案。對於這個特定的測試,我將需要啓用付費帳戶,所以我的指導是通過發現服務華大基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"

既然你得到一個驗證錯誤,這將是很好的是與您的API(服務器)鍵控制檯(https://console.cloud.google.com)爲您的項目在第一次檢查你用過,如果它啓用了e基因組學和雲API?

〜p

+0

是的,我啓用了API。問題是關於您解決它的ReferenceIDs!謝謝! – AmirCS

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

+0

感謝Paul提供的信息! – AmirCS

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