Google Genomics API - Внутренняя ошибка сервера + ReferenceIDs
Я довольно новичок в API геномики Google. Я пытаюсь создать аннотацию. Я использовал как веб-версию, так и вызов 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"
}
}
Любое предложение?
Еще одно наблюдение.
Мы можем добавить набор вариантов, только отправив datasetId и name; нет необходимости указывать 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 для соответствующего набора аннотаций.
Заранее спасибо!
6 ответов
Таким образом, чтобы иметь набор аннотаций, связанный с набором данных, вам потребуется разрешение на запись в этот набор данных. Если вы создали набор данных, у вас будет разрешение на запись, которое будет связано с вашей учетной записью. Если это общедоступный набор данных, вам может потребоваться разрешение у человека, который загрузил этот набор данных, чтобы добавить вас с правами на запись в него, или вы можете перезагрузить его под своей учетной записью.
Теперь, предполагая, что вы создали набор данных, вы можете создать AnnotationSet напрямую через curl - вам нужно будет использовать свой ключ 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
Дайте мне знать, если это сработало для вас, и если есть что-то еще, с чем я могу вам помочь.
Спасибо,
Павел
Добавить к ответу Павла:
annotationSetId должен быть идентификатором реального набора аннотаций. Мы будем работать над улучшением сообщения об ошибке.
Мы хотели бы требовать referenceId для всех наших API. Мы не для нашего Variant API, потому что Ссылочный API не существовал, когда мы создавали Variant API.
Чтобы дать пользователю разрешение на ЗАПИСЬ, добавьте его в качестве редактора проекта. См. https://cloud.google.com/iam/docs/quickstart-roles-members
Вот публичные ссылки: https://console.cloud.google.com/storage/browser/genomics-public-data/references/
И здесь мы можем получить ReferenceID: https://developers.google.com/apis-explorer/
Чтобы использовать 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
Рад слышать, что у тебя есть все, чтобы работать, Амир! Это было веселое командное усилие со стороны нас троих, и я всегда рад помочь, поскольку использовал и видел развитие API за последние два года:)
Что касается ReferenceIds, я вижу, вы уже нашли некоторые из тех же ссылок, которые я публикую здесь. Это в основном идентификатор, который указывает на ссылку, которая представляет собой последовательность, такую как хромосома. Коллекция идентификаторов ссылок принадлежит ReferenceSet, который представляет собой сборку ссылок, а reference.bases принадлежат Reference ID. Я не видел в 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
https://cloud.google.com/genomics/v1/reference-sets
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
Каждый из вышеперечисленных API-интерфейсов REST будет иметь свои собственные специальные методы для поиска и привязки к данным.
Надеюсь, поможет,
~ р
Мой предыдущий комментарий не был правильно отформатирован, поэтому я пишу его как ответ. Для этого конкретного теста мне нужно было бы включить выставление счетов для моей учетной записи, поэтому мое руководство - это необработанная информация в API REST Genomics через службу Discovery:
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 Genomics и Cloud?
~ р