# Copyright (c) 2021. yoshida-lab. All rights reserved.
# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file.
import pandas as pd
from xenonpy.mdl.base import BaseQuery
[docs]class QueryModelDetailsWith(BaseQuery):
common = [
'id',
'transferred',
'succeed',
'isRegression',
'deprecated',
'modelset',
'method',
'property',
'descriptor',
'lang',
]
classification = [
'accuracy',
'precision',
'recall',
'f1',
'sensitivity',
'prevalence',
'specificity',
'ppv',
'npv',
]
regression = [
'meanAbsError',
'maxAbsError',
'meanSquareError',
'rootMeanSquareError',
'r2',
'pValue',
'spearmanCorr',
'pearsonCorr',
]
queryable = common + classification + regression
def __init__(self, variables, *, api_key: str = 'anonymous.user.key',
endpoint: str = 'http://xenon.ism.ac.jp/api'):
"""
Access to XenonPy.MDL library.
Parameters
----------
api_key
Not implement yet.
"""
super().__init__(variables=variables, api_key=api_key, endpoint=endpoint)
[docs] def gql(self, *query_vars: str):
reg, cls = [], []
if 'id' not in query_vars:
query_vars = query_vars + ('id',)
for var in query_vars:
if var in self.common:
# common.append(var)
reg.append(var)
cls.append(var)
elif var in self.regression:
reg.append(var)
elif var in self.classification:
cls.append(var)
return f'''
query (
$modelset_has: [String!]
$property_has: [String!]
$descriptor_has: [String!]
$method_has: [String!]
$lang_has: [String!]
$regression: Boolean
$transferred: Boolean
$deprecated: Boolean
$succeed: Boolean
) {{
queryModelDetailsWith(
modelset_has: $modelset_has
property_has: $property_has
descriptor_has: $descriptor_has
method_has: $method_has
lang_has: $lang_has
regression: $regression
transferred: $transferred
deprecated: $deprecated
succeed: $succeed
) {{
...on Regression {{
{' '.join(reg)}
}}
...on Classification {{
{' '.join(cls)}
}}
}}
}}
'''
[docs]class QueryModelDetails(BaseQuery):
common = [
'id',
'transferred',
'succeed',
'isRegression',
'deprecated',
'modelset',
'method',
'property',
'descriptor',
'lang',
]
classification = [
'accuracy',
'precision',
'recall',
'f1',
'sensitivity',
'prevalence',
'specificity',
'ppv',
'npv',
]
regression = [
'meanAbsError',
'maxAbsError',
'meanSquareError',
'rootMeanSquareError',
'r2',
'pValue',
'spearmanCorr',
'pearsonCorr',
]
queryable = common + classification + regression
def __init__(self, variables, *, api_key: str = 'anonymous.user.key',
endpoint: str = 'http://xenon.ism.ac.jp/api'):
"""
Access to XenonPy.MDL library.
Parameters
----------
api_key
Not implement yet.
"""
super().__init__(variables=variables, api_key=api_key, endpoint=endpoint)
[docs] def gql(self, *query_vars: str):
reg, cls = [], []
if 'id' not in query_vars:
query_vars = query_vars + ('id',)
for var in query_vars:
if var in self.common:
reg.append(var)
cls.append(var)
elif var in self.regression:
reg.append(var)
elif var in self.classification:
cls.append(var)
return f'''
query ($query: [String!]!) {{
queryModelDetails(query: $query) {{
...on Regression {{
{' '.join(reg)}
}}
...on Classification {{
{' '.join(cls)}
}}
}}
}}
'''
[docs]class GetModelUrls(BaseQuery):
queryable = [
'id',
'etag',
'url',
]
def __init__(self, variables, *, api_key: str = 'anonymous.user.key',
endpoint: str = 'http://xenon.ism.ac.jp/api'):
"""
Access to XenonPy.MDL library.
Parameters
----------
api_key
Not implement yet.
"""
super().__init__(variables=variables, api_key=api_key, endpoint=endpoint)
[docs] def gql(self, *query_vars: str):
return f'''
query ($ids: [Int!]!) {{
getModelUrls(ids: $ids) {{
{' '.join(query_vars)}
}}
}}
'''
[docs]class GetModelUrl(BaseQuery):
queryable = [
'id',
'etag',
'url',
]
def __init__(self, variables, *, api_key: str = 'anonymous.user.key',
endpoint: str = 'http://xenon.ism.ac.jp/api'):
"""
Access to XenonPy.MDL library.
Parameters
----------
api_key
Not implement yet.
"""
super().__init__(variables=variables, api_key=api_key, endpoint=endpoint)
[docs] def gql(self, *query_vars: str):
return f'''
query ($id: Int!) {{
getModelUrl(id: $id) {{
{' '.join(query_vars)}
}}
}}
'''
[docs]class GetModelDetails(BaseQuery):
common = [
'id',
'transferred',
'succeed',
'isRegression',
'deprecated',
'modelset',
'method',
'property',
'descriptor',
'lang',
]
classification = [
'accuracy',
'precision',
'recall',
'f1',
'sensitivity',
'prevalence',
'specificity',
'ppv',
'npv',
]
regression = [
'meanAbsError',
'maxAbsError',
'meanSquareError',
'rootMeanSquareError',
'r2',
'pValue',
'spearmanCorr',
'pearsonCorr',
]
queryable = common + classification + regression
def __init__(self, variables, *, api_key: str = 'anonymous.user.key',
endpoint: str = 'http://xenon.ism.ac.jp/api'):
"""
Access to XenonPy.MDL library.
Parameters
----------
api_key
Not implement yet.
"""
super().__init__(variables=variables, api_key=api_key, endpoint=endpoint)
[docs] def gql(self, *query_vars: str):
reg, cls = [], []
for var in query_vars:
if var in self.common:
reg.append(var)
cls.append(var)
elif var in self.regression:
reg.append(var)
elif var in self.classification:
cls.append(var)
return f'''
query ($ids: [Int!]!) {{
getModelDetails(ids: $ids) {{
...on Regression {{
{' '.join(reg)}
}}
...on Classification {{
{' '.join(cls)}
}}
}}
}}
'''
pass
[docs]class GetModelDetail(BaseQuery):
common = [
'id',
'transferred',
'succeed',
'isRegression',
'deprecated',
'modelset',
'method',
'property',
'descriptor',
'lang',
]
classification = [
'accuracy',
'precision',
'recall',
'f1',
'sensitivity',
'prevalence',
'specificity',
'ppv',
'npv',
]
regression = [
'meanAbsError',
'maxAbsError',
'meanSquareError',
'rootMeanSquareError',
'r2',
'pValue',
'spearmanCorr',
'pearsonCorr',
]
queryable = common + classification + regression
def __init__(self, variables, *, api_key: str = 'anonymous.user.key',
endpoint: str = 'http://xenon.ism.ac.jp/api'):
"""
Access to XenonPy.MDL library.
Parameters
----------
api_key
Not implement yet.
"""
super().__init__(variables=variables, api_key=api_key, endpoint=endpoint)
[docs] def gql(self, *query_vars: str):
reg, cls = [], []
for var in query_vars:
if var in self.common:
reg.append(var)
cls.append(var)
elif var in self.regression:
reg.append(var)
elif var in self.classification:
cls.append(var)
return f'''
query ($id: Int!) {{
getModelDetail(id: $id) {{
...on Regression {{
{' '.join(reg)}
}}
...on Classification {{
{' '.join(cls)}
}}
}}
}}
'''
pass
[docs]class GetTrainingInfo(BaseQuery):
queryable = []
def __init__(self, variables, *, api_key: str = 'anonymous.user.key',
endpoint: str = 'http://xenon.ism.ac.jp/api'):
"""
Access to XenonPy.MDL library.
Parameters
----------
api_key
Not implement yet.
"""
super().__init__(variables=variables, api_key=api_key, endpoint=endpoint)
@staticmethod
def _post(ret, return_json):
return pd.DataFrame(ret)
[docs] def gql(self, *query_vars: str):
return f'''
query ($id: Int!) {{
getTrainingInfo(id: $id)
}}
'''
[docs]class GetTrainingEnv(BaseQuery):
queryable = []
def __init__(self, variables, *, api_key: str = 'anonymous.user.key',
endpoint: str = 'http://xenon.ism.ac.jp/api'):
"""
Access to XenonPy.MDL library.
Parameters
----------
api_key
Not implement yet.
"""
super().__init__(variables=variables, api_key=api_key, endpoint=endpoint)
self._return_json = True
[docs] def gql(self, *query_vars: str):
return f'''
query ($id: Int!) {{
getTrainingEnv(id: $id)
}}
'''
[docs]class GetSupplementary(BaseQuery):
queryable = []
def __init__(self, variables, *, api_key: str = 'anonymous.user.key',
endpoint: str = 'http://xenon.ism.ac.jp/api'):
"""
Access to XenonPy.MDL library.
Parameters
----------
api_key
Not implement yet.
"""
super().__init__(variables=variables, api_key=api_key, endpoint=endpoint)
self._return_json = True
[docs] def gql(self, *query_vars: str):
return f'''
query ($id: Int!) {{
getSupplementary(id: $id)
}}
'''
[docs]class ListModelsWithProperty(BaseQuery):
queryable = [
'id',
'transferred',
'succeed',
'isRegression',
'deprecated',
'modelset',
'method',
'property',
'descriptor',
'lang'
]
def __init__(self, variables, *, api_key: str = 'anonymous.user.key',
endpoint: str = 'http://xenon.ism.ac.jp/api'):
"""
Access to XenonPy.MDL library.
Parameters
----------
api_key
Not implement yet.
"""
super().__init__(variables=variables, api_key=api_key, endpoint=endpoint)
[docs] def gql(self, *query_vars: str):
return f'''
query ($name: String!) {{
listModelsWithProperty(name: $name) {{
{' '.join(query_vars)}
}}
}}
'''
[docs]class ListModelsWithModelset(BaseQuery):
queryable = [
'id',
'transferred',
'succeed',
'isRegression',
'deprecated',
'modelset',
'method',
'property',
'descriptor',
'lang'
]
def __init__(self, variables, *, api_key: str = 'anonymous.user.key',
endpoint: str = 'http://xenon.ism.ac.jp/api'):
"""
Access to XenonPy.MDL library.
Parameters
----------
api_key
Not implement yet.
"""
super().__init__(variables=variables, api_key=api_key, endpoint=endpoint)
[docs] def gql(self, *query_vars: str):
return f'''
query ($name: String!) {{
listModelsWithModelset(name: $name) {{
{' '.join(query_vars)}
}}
}}
'''
[docs]class ListModelsWithMethod(BaseQuery):
queryable = [
'id',
'transferred',
'succeed',
'isRegression',
'deprecated',
'modelset',
'method',
'property',
'descriptor',
'lang'
]
def __init__(self, variables, *, api_key: str = 'anonymous.user.key',
endpoint: str = 'http://xenon.ism.ac.jp/api'):
"""
Access to XenonPy.MDL library.
Parameters
----------
api_key
Not implement yet.
"""
super().__init__(variables=variables, api_key=api_key, endpoint=endpoint)
[docs] def gql(self, *query_vars: str):
return f'''
query ($name: String!) {{
listModelsWithMethod(name: $name) {{
{' '.join(query_vars)}
}}
}}
'''
[docs]class ListModelsWithDescriptor(BaseQuery):
queryable = [
'id',
'transferred',
'succeed',
'isRegression',
'deprecated',
'modelset',
'method',
'property',
'descriptor',
'lang'
]
def __init__(self, variables, *, api_key: str = 'anonymous.user.key',
endpoint: str = 'http://xenon.ism.ac.jp/api'):
"""
Access to XenonPy.MDL library.
Parameters
----------
api_key
Not implement yet.
"""
super().__init__(variables=variables, api_key=api_key, endpoint=endpoint)
[docs] def gql(self, *query_vars: str):
return f'''
query ($name: String!) {{
listModelsWithDescriptor(name: $name) {{
{' '.join(query_vars)}
}}
}}
'''
[docs]class UploadModel(BaseQuery):
queryable = [
'id',
'etag',
'path'
]
def __init__(self, variables, *, api_key: str = 'anonymous.user.key',
endpoint: str = 'http://xenon.ism.ac.jp/api'):
"""
Access to XenonPy.MDL library.
Parameters
----------
api_key
Not implement yet.
"""
super().__init__(variables=variables, api_key=api_key, endpoint=endpoint)
[docs] def gql(self, *query_vars: str):
return f"""
mutation(
$id: Int!
$describe: UploadModelInput!
$model: Upload!
$training_env: Json
$training_info: Json
$supplementary: Json
) {{
uploadModel(
modelsetId: $id
model: $model
describe: $describe
training_env: $training_env
training_info: $training_info
supplementary: $supplementary
) {{
{' '.join(query_vars)}
}}
}}
"""