23andme-node 中文文档教程
23andme-node
欢迎提出请求和建议!
Index
Installation
npm install 23andme-node
Usage
var g23 = require('23andme-node');
g23.getProfiles({token: 'fdab6a6892b198e40c2484bf2121f761'}, function (err, data) {
console.log(utils.inspect(err || data, false, null));
});
Documentation
所有方法都返回带有签名的回调 callback(error, data)
。
data
和 error
是 JavaScript 对象。
所有方法都需要一个至少具有用户身份验证 token
的 params
对象。
无论 HTTP 谓词如何,所有方法都返回相同的 data
对象。
可能的错误消息:
invalid_request
- 请求缺少必需的参数,或者包含不受支持或不正确的参数。
invalid_client
- 客户端身份验证失败(例如未知客户端、未包含客户端凭据、包含多个客户端凭据或不支持的凭据类型)。
unauthorized_client
- 客户端无权使用此方法请求授权代码。
access_denied
- 资源所有者或授权服务器拒绝了请求。
invalid_scope
- 请求的范围无效、未知或格式错误。
unsupported_response_type
- 授权服务器不支持使用此方法获取授权代码。
官方 API 文档。
getProfiles(params, callback(error, data))
params
- None!
data
```javascript { 名字:“格雷戈尔”, 姓氏:“孟德尔”, 编号:“a42e94634e3f7683”, 简介:[ { 名字:“约翰”, 姓氏:“孟德尔”, 编号:c4480ba411939067 }, ... ] }
## getProfileNames(params, callback(error, data))
### params
* `profileId` - Optional. Filters names to just one profile.
### data
javascript { 编号:“c4480ba411939067”, urlsize4040: "https://…cfff05bbbT.00299299.jpg", urlsize6060: "https://…cfff05bbbS.00299299.jpg", url大小200200:“https://…ff05bbbM.00299_299.jpg” }
## getProfilePictures(params, callback(error, data))
### params
* `profileId`
### data
javascript { 编号:“c4480ba411939067”, urlsize4040: "https://…cfff05bbbT.00299299.jpg", urlsize6060: "https://…cfff05bbbS.00299299.jpg", url大小200200:“https://…ff05bbbM.00299_299.jpg” }
## getPublished(params, callback(error, data))
### params
* `profileId`
* `featureId` - Values are `'music'`, `'neanderthal'`, `'maternal'`, `'paternal'`, `'composition'`
* `linkId` - Optional. Filters results to just one link.
### data
javascript { 编号:“c4480ba411939067”, 网址:“https://www.23andme.com/published/…/”, 链接id:“925v3n92424g4”, 特征id:“尼安德特人”, 状态:“未发布” }
## getIntroduction(params, callback(error, data))
### params
* `profileId`
* `matchId`
### data
javascript { 介绍: { 状态:“收到”, 可见性:“基因组”, 消息文本:“嗨!想探索吗?” }, 可以发送:false }
## getGenotypes(params, callback(error, data))
### params
* `profileId`
* `locations` - An array of SNP strings.
* `unfiltered` - Optional. Possible values are `true` or `false`
### data
javascript { i3000001:“二”, rs3094315:“AA” 编号:“c4480ba411939067” }
## getGenomes(params, callback(error, data))
### params
* `profileID`
* `unfiltered` - Optional. Possible values are `true` or `false`
### data
javascript { 编号:“c4480ba411939067”, 基因组:“ACTAGTAG__TTGADDAAIICCTT”// …(2MB 字符串!) }
## getHaplogroups(params, callback(error, data))
### params
* `profileId`
### data
javascript { 母体终端snps:[ { rsid: "i3001424", rcrs位置:“15874” }, { rsid: "i5050411", rcrs位置:“15874” } ], 父亲终端snps:[ { "rsid": "i3000015", “snp”:“M125” } ], 产妇:“D4e2”, 父亲:“D2a1”, 编号:“c4480ba411939067” }
## getAncestry(params, callback(error, data))
### params
* `profileId`
* `threshold` - A number in the interval (0.5, 1.0) exclusive. Default is 0.75.
### data
javascript { ID:“7ad467ea509080fb” 祖先:{ 标签:“总计”, 比例:1.0, 未分配:0.0, 子人群:[ { 标签:“撒哈拉以南非洲”, 比例:0.8227 }, { 标签: "欧洲" 比例:0.1773, 未分配:0.0193, 子人群:[ { 标签:“北欧”, 比例:0.1579, 未分配:0.0725, 亚种群:[ { 标签:“法语和德语”, 比例:0.0676 }, ... ], }, ... ] }, ... ] } }
## getNeanderthal(params, callback(error, data))
### params
* `profileId`
### data
javascript { ID:“7ad467ea509080fb” 尼安德特人:{ 比例:0.0310, } }
## getRelatives(params, callback(error, data))
### params
* `profileId`
* `filters` - An object with properties `limit`, `offset`, `since`, `share_status`, `intro_status`.
`share_status` can have the following values: `'Owned Profile'`, `'Sharing Genomes'`, `'Public Match'`
`intro_status` can have the following values: `'Introduction Sent'`, `'Introduction Received'`, `'Introduction Accepted'`, `'Introduction Declined'`, `'Introduction Cancelled'`
### data
脚本 { 编号:“18974891hh1f3h”, 计数:10, 亲戚们: [ { 匹配id: "48f2489h294hf", 名字:“Aodh”, 姓氏:“O'Donnell”, 性别男”, 出生年份:1977 年, 出生地:“美国”, 血统:“北欧”, 家庭地点:[ "弗吉尼亚州阿灵顿", "爱尔兰劳斯郡" ], 家庭姓氏:[ “林德尔”, “迪林厄姆”, “凯莉” ], 共享片段:23, 关系:“三表哥”, 预测的关系代码:32, 用户关系代码:空, 范围:[“三表哥”,“六表哥”], 相似度:0.24, 母体单倍群:“K1b1a1”, 父本单倍群:“G2a5”, 母方:假的, 父亲方面:是的, 注释:“我们有相同熟悉的姓氏”, 补充:1348699925, 更新:1348699975, 居住地:“北卡罗来纳州”, 介绍状态:“介绍已接受”, 共享状态:“共享基因组”, 个人资料图片网址:{ urlsize4040: "https://…cfff05bbbT.00299299.jpg", …… } }, ... ] }
## getRisks(params, callback(error, data))
### params
* `profileId`
### data
javascript { 编号:“c4480ba411939067”, 风险:[ { 描述:“心房颤动”, 报告id:“atrialfib”, 人群风险:0.2715, 风险:0.4164 }, { 描述:“前列腺癌”, 报告id:“前列腺”, 人群风险:0.1783, 风险:0.2585 }, ... ] }
## getCarriers(params, callback(error, data))
### params
* `profileId`
### data
javascript { 编号:“c4480ba411939067”, 药物反应:[ { 描述:“饮酒、吸烟和食道癌风险”, 报告id: "alcoholesophagealpgx", 状态:“典型” }, { 描述:“对丙型肝炎治疗的反应”, 报告id:“hepcpeginf_ribavirin”, 状态:“减少” }, ... ] }
## getTraits(params, callback(error, data))
### params
* `profileId`
### data
javascript { 我"d:"c4480ba411939067", 特征:[ { 描述:“肌肉表现”, 报告id:“肌肉表现”, 可能的特征:[ “可能的短跑运动员”, “不太可能的短跑运动员” ], 特征:“不太可能的短跑运动员” }, { 描述:“抵抗艾滋病毒/艾滋病”, 报告id: "hiv", 可能的特征:[ “不抗拒”, “部分抵抗” ], 特性:“不抵抗” }, ... ], } ```
postProfilePicture(params, callback(error, data))
params
profileId
image
- A buffer.
postPublish(params, callback(error, data))
params
profileId
featureId
- Values are'music'
,'neanderthal'
,'maternal'
,'paternal'
,'composition'
putPublish(params, callback(error, data))
params
profileId
featureId
- Values are'music'
,'neanderthal'
,'maternal'
,'paternal'
,'composition'
linkId
status
- Values are'published'
or'unpublished'
patchIntroduction(params, callback(error, data))
params
profileId
matchId
status
- Possible values are'accepted'
,'rejected'
,'read'
,'cancelled'
.visibility
- Possible values are'anonymous'
,'profile'
,'genome'
必须至少提供 status
和 visibility
之一作为参数。
patchRelatives(params, callback(error, data))
params
profileId
matchId
notes
- A string.relationshipCode
relationshipCode
的可能值:
0
你
1
同卵双胞胎
2
父亲
3
母亲
< code>4 儿子
5
女儿
6
兄弟
7
姐姐
8
同父异母兄弟
9< /code> 半姐妹
10
祖父
11
祖母
12
孙子
13
孙女
14
叔叔
15
阿姨
16
侄子
17
侄女
18
曾祖父
19
曾孙
20
曾祖母
21
曾孙女
22
曾祖父
23
曾祖母 < code>24 曾侄
25
侄孙女
26
第一个堂兄弟
27
第一个堂兄弟,一次被移除
28
第一个堂兄弟,两次被移除
29
第二代表亲
30
第二代表亲,一次移除
31
第二代堂兄弟,两次移除
32
三代表亲
33
第三代 表亲,一次被移除
34
第三个堂兄弟,两次被移除
35
第四个堂兄弟
38
第五个堂兄弟
41
第六个堂兄弟
44
远亲
TODO
- Tests
23andme-node
Pull requests and suggestions welcome!
Index
Installation
npm install 23andme-node
Usage
var g23 = require('23andme-node');
g23.getProfiles({token: 'fdab6a6892b198e40c2484bf2121f761'}, function (err, data) {
console.log(utils.inspect(err || data, false, null));
});
Documentation
All methods return a callback with the signature callback(error, data)
.
data
and error
are JavaScript objects.
All methods expect a params
object with at least the user's authentication token
.
All methods return the same data
object regardless of HTTP verb.
Possible error messages:
invalid_request
- The request is missing a required parameter, or includes an unsupported or incorrect parameter.
invalid_client
- Client authentication failed (e.g. unknown client, no client credentials included, multiple client credentials included, or unsupported credentials type).
unauthorized_client
- The client is not authorized to request an authorization code using this method.
access_denied
- The resource owner or authorization server denied the request.
invalid_scope
- The requested scope is invalid, unknown, or malformed.
unsupported_response_type
- The authorization server does not support obtaining an authorization code using this method.
Official API documentation.
getProfiles(params, callback(error, data))
params
- None!
data
```javascript { firstname: "Gregor", lastname: "Mendel", id: "a42e94634e3f7683", profiles: [ { firstname: "Johann", lastname: "Mendel", id: c4480ba411939067 }, … ] }
## getProfileNames(params, callback(error, data))
### params
* `profileId` - Optional. Filters names to just one profile.
### data
javascript { id: "c4480ba411939067", urlsize4040: "https://…cfff05bbbT.00299299.jpg", urlsize6060: "https://…cfff05bbbS.00299299.jpg", urlsize200200: "https://…ff05bbbM.00299_299.jpg" }
## getProfilePictures(params, callback(error, data))
### params
* `profileId`
### data
javascript { id: "c4480ba411939067", urlsize4040: "https://…cfff05bbbT.00299299.jpg", urlsize6060: "https://…cfff05bbbS.00299299.jpg", urlsize200200: "https://…ff05bbbM.00299_299.jpg" }
## getPublished(params, callback(error, data))
### params
* `profileId`
* `featureId` - Values are `'music'`, `'neanderthal'`, `'maternal'`, `'paternal'`, `'composition'`
* `linkId` - Optional. Filters results to just one link.
### data
javascript { id: "c4480ba411939067", url: "https://www.23andme.com/published/…/", linkid: "925v3n92424g4", featureid: "neanderthal", status: "unpublished" }
## getIntroduction(params, callback(error, data))
### params
* `profileId`
* `matchId`
### data
javascript { introduction: { status: "received", visibility: "genome", messagetext: "Hi! Want to explore?" }, cansend: false }
## getGenotypes(params, callback(error, data))
### params
* `profileId`
* `locations` - An array of SNP strings.
* `unfiltered` - Optional. Possible values are `true` or `false`
### data
javascript { i3000001: "II", rs3094315: "AA" id: "c4480ba411939067" }
## getGenomes(params, callback(error, data))
### params
* `profileID`
* `unfiltered` - Optional. Possible values are `true` or `false`
### data
javascript { id: "c4480ba411939067", genome: "ACTAGTAG__TTGADDAAIICCTT" // … (2MB string!) }
## getHaplogroups(params, callback(error, data))
### params
* `profileId`
### data
javascript { maternalterminalsnps: [ { rsid: "i3001424", rcrsposition: "15874" }, { rsid: "i5050411", rcrsposition: "15874" } ], paternalterminalsnps: [ { "rsid": "i3000015", "snp": "M125" } ], maternal: "D4e2", paternal: "D2a1", id: "c4480ba411939067" }
## getAncestry(params, callback(error, data))
### params
* `profileId`
* `threshold` - A number in the interval (0.5, 1.0) exclusive. Default is 0.75.
### data
javascript { id: "7ad467ea509080fb" ancestry: { label: "Total", proportion: 1.0, unassigned: 0.0, subpopulations: [ { label: "Sub-Saharan African", proportion: 0.8227 }, { label: "European" proportion: 0.1773, unassigned: 0.0193, subpopulations: [ { label: "Northern European", proportion: 0.1579, unassigned: 0.0725, sub_populations: [ { label: "French and German", proportion: 0.0676 }, … ], }, … ] }, … ] } }
## getNeanderthal(params, callback(error, data))
### params
* `profileId`
### data
javascript { id: "7ad467ea509080fb" neanderthal: { proportion: 0.0310, } }
## getRelatives(params, callback(error, data))
### params
* `profileId`
* `filters` - An object with properties `limit`, `offset`, `since`, `share_status`, `intro_status`.
`share_status` can have the following values: `'Owned Profile'`, `'Sharing Genomes'`, `'Public Match'`
`intro_status` can have the following values: `'Introduction Sent'`, `'Introduction Received'`, `'Introduction Accepted'`, `'Introduction Declined'`, `'Introduction Cancelled'`
### data
javacsript { id: "18974891hh1f3h", count: 10, relatives: [ { matchid: "48f2489h294hf", firstname: "Aodh", lastname: "O'Donnell", sex: "Male", birthyear: 1977, birthplace: "United States", ancestry: "Northern Europe", familylocations: [ "Arlington, VA", "County Louth, Ireland" ], familysurnames: [ "Lindell", "Dillingham", "Kelly" ], sharedsegments: 23, relationship: "3rd Cousin", predictedrelationshipcode: 32, userrelationshipcode: null, range: ["3rd Cousin", "6th Cousin"], similarity: 0.24, maternalhaplogroup: "K1b1a1", paternalhaplogroup: "G2a5", maternalside: false, paternalside: true, notes: "we have the same familiar surnames", added: 1348699925, updated: 1348699975, residence: "North Carolina", introstatus: "Introduction Accepted", sharestatus: "Sharing Genomes", profilepictureurls: { urlsize4040: "https://…cfff05bbbT.00299299.jpg", … } }, … ] }
## getRisks(params, callback(error, data))
### params
* `profileId`
### data
javascript { id: "c4480ba411939067", risks: [ { description: "Atrial Fibrillation", reportid: "atrialfib", populationrisk: 0.2715, risk: 0.4164 }, { description: "Prostate Cancer", reportid: "prostate", populationrisk: 0.1783, risk: 0.2585 }, … ] }
## getCarriers(params, callback(error, data))
### params
* `profileId`
### data
javascript { id: "c4480ba411939067", drugresponses: [ { description: "Alcohol Consumption, Smoking and Risk of Esophageal Cancer", reportid: "alcoholesophagealpgx", status: "typical" }, { description: "Response to Hepatitis C Treatment", reportid: "hepcpeginf_ribavirin", status: "reduced" }, … ] }
## getTraits(params, callback(error, data))
### params
* `profileId`
### data
javascript { i"d: "c4480ba411939067", traits: [ { description: "Muscle Performance", reportid: "muscleperformance", possibletraits: [ "Likely Sprinter", "Unlikely Sprinter" ], trait: "Unlikely Sprinter" }, { description: "Resistance to HIV/AIDS", reportid: "hiv", possibletraits: [ "Not Resistant", "Partially Resistant" ], trait: "Not Resistant" }, … ], } ```
postProfilePicture(params, callback(error, data))
params
profileId
image
- A buffer.
postPublish(params, callback(error, data))
params
profileId
featureId
- Values are'music'
,'neanderthal'
,'maternal'
,'paternal'
,'composition'
putPublish(params, callback(error, data))
params
profileId
featureId
- Values are'music'
,'neanderthal'
,'maternal'
,'paternal'
,'composition'
linkId
status
- Values are'published'
or'unpublished'
patchIntroduction(params, callback(error, data))
params
profileId
matchId
status
- Possible values are'accepted'
,'rejected'
,'read'
,'cancelled'
.visibility
- Possible values are'anonymous'
,'profile'
,'genome'
At least one of status
and visibility
has to be provided as parameters.
patchRelatives(params, callback(error, data))
params
profileId
matchId
notes
- A string.relationshipCode
Possible values for relationshipCode
:
0
You
1
Identical Twin
2
Father
3
Mother
4
Son
5
Daughter
6
Brother
7
Sister
8
Half Brother
9
Half Sister
10
Grandfather
11
Grandmother
12
Grandson
13
Granddaughter
14
Uncle
15
Aunt
16
Nephew
17
Niece
18
Great Grandfather
19
Great Grandson
20
Great Grandmother
21
Great Granddaughter
22
Great Uncle
23
Great Aunt
24
Great Nephew
25
Great Niece
26
1st Cousin
27
1st Cousin, Once Removed
28
1st Cousin, Twice Removed
29
2nd Cousin
30
2nd Cousin, Once Removed
31
2nd Cousin, Twice Removed
32
3rd Cousin
33
3rd Cousin, Once Removed
34
3rd Cousin, Twice Removed
35
4th Cousin
38
5th Cousin
41
6th Cousin
44
Distant Cousin
TODO
- Tests