read_file 接口
接口: /ms_jk/read_file
这里假定前端配置的字段是infile,根据不同的file_format分别介绍如下:
1. file_format=text/plain|table
输入数据文本是类表格格式,这两个值没有区别,前者是历史字段,这里兼容处理,没有删除。这里值的表格格式指包含表头,所有行以相同分隔符分割,具有相同列数的数据
参数:
- callback_name: 指定从请求中的哪个字段获取输入文件,这里根据假设值为infile
- infile: 输入文件的服务器路径
- callback_function: 处理输入文件的参数,该参数值为dict类型
- callback_data_path: 默认值data,返回的数据位于那个字段下面,该参数不建议修改
- file_format: 文件的格式,这里取table
- separator: 分割符,默认值为auto,程序会自动识别文件分割符(由于历史原因前端的配置可能是sep),这里建议不配置该参数,使用默认值由程序自行处理即可。
- only_header: 是否只读取表头,默认值为False,当指定为True时,该接口的返回为控件回调功能使用的格式,默认返回预览功能所需的格式。
假设infle文件内容如下:
A,B
1,3
2,6
假定callback_data_path使用默认值data时,
- 当
only_header=True返回格式(给前端的列表控件的回调使用的格式)如下:
{
"data": [{'label': 'A', 'value': 'A'}, {'label': 'B', 'value': 'B'}]
}
- 当
only_header=False返回格式(给前端预览使用的格式)如下:
{
"data": {'index': [0, 1], 'columns': ['A', 'B'], 'data': [[1, 3], [2, 6]]}
}
2. file_format=excel_default|excel
输入数据是excel二进制格式文件,这两个值没有区别,前者是历史字段,这里兼容处理,没有删除。excel文件里只读取第一个sheet页,默认有表头且为第一行,所有行具有相同的列数。
参数:
- callback_name: 指定从请求中的哪个字段获取输入文件,这里根据假设值为infile
- infile: 输入文件的服务器路径
当前小工具中暂未用到excel类型文件,目前没有针对该功能开发额外的参数,当前仅支持预览场景使用,暂不支持参数联动
3. file_format=h5ad
输入数据是.h5ad格式文件,可以通过指定不同attr读取不同文件内容。
参数:
callback_name: 指定从请求中的哪个字段获取输入文件,这里根据假设值为infileinfile: 输入文件的服务器路径attr: 读取输入文件的指定属性的内容,可选值 (obs,obsm,layer,var,gene)
当 attr=='obs' 时,
if self.attr in "obs":
return self._obs()
elif self.attr == "obsm":
return self._obsm()
elif self.attr == "layer":
return self._layer()
elif self.attr == "var":
return self._var()
elif self.attr == "gene":
return self._gene()
read_file会从请求中获取callback_name的值,该值必须在请求中存在同名参数。
比如 callback_name=infile,则请求中必须包含infle,这样通过该值
"rawdata": { "action": "/ms_jk/upload_file", "limit": 0, "upload_name": "file", "accept": "", "show_name": "特征定量表", "is_show": true, "form_type": "upload", "data_path": "filepath", "type": "", "default_value": "", "sample_default_value": "data_dir/demo_sample_data/proteins.txt", "note": "特征定量表输入文件,支持csv格式和以\t分隔的txt文件", "required": true, "is_download":true, "callback_route": "/ms_jk/read_file", "callback_function": { "only_header": true, "file_format": "text/plain" }, "callback_name": "rawdata", "callback_data": "", "callback_data_path": "data", "callback_specify_fields": { "featureCol1.select_list": "data" }, "preview_route": "/ms_jk/read_file", "preview_handle_function": { "callback_name": "rawdata", "callback_function": { "file_format": "text/plain" } }, "preview_data_path": "data" },