NStack 开源项目教程

NStack 开源项目教程

nstack Type-safe, composable microservices for data analytics 项目地址: https://gitcode.com/gh_mirrors/nst/nstack

1. 项目介绍

NStack 是一个面向数据分析的计算平台,旨在简化数据集成、代码发布以及将它们连接在一起的过程。通过 NStack,用户可以将不同的数据源(如数据库、第三方 API 或 HTTP 端点)转换为类型化的记录流。用户还可以将本地代码发布为云上的函数,并使用 NStack 的脚本语言将这些流与函数组合在一起。NStack 自动管理所有底层基础设施,使用户能够专注于数据科学而非运维。

NStack 提供了端到端的数据科学软件生命周期管理,包括共享和重用、可重复性、版本控制和运行时隔离。

2. 项目快速启动

2.1 CLI 安装

NStack CLI 提供了适用于 Linux、Windows 和 macOS 的自包含可执行文件。您可以从 NStack 发布页面 下载相应的二进制文件。

macOS 安装
$ brew tap nstack/nstack
$ brew cask install nstack-cli
Linux 安装

使用 RPM 包安装:

dnf install https://github.com/nstack/nstack/releases/v[version]/nstack-cli-[version]-x86_64.rpm

使用 DEB 包安装:

wget https://github.com/nstack/nstack/releases/v[version]/nstack-cli_[version]_amd64.deb
dpkg -i nstack-cli_[version]_amd64.deb
apt-get install -f

2.2 编译源码

如果您想从源码编译 NStack CLI,您需要安装 Haskell 的 Stack 构建工具。

# 首次编译时需要运行 stack setup
stack setup
stack build nstack-cli
# 安装到用户本地可执行目录
stack install nstack-cli

2.3 服务器安装

PaaS 服务

NStack 提供了一个免费的 PaaS 服务,供用户进行演示使用。您可以通过以下命令注册并开始使用:

nstack register <username> <email>
自托管服务器

您也可以安装自己的 NStack 服务器。NStack 提供了适用于 AWS EC2 的 AMI 和适用于其他虚拟机的原始磁盘映像。这些资源可以在 NStack 发布页面 找到。

3. 应用案例和最佳实践

3.1 生产化模型

用户可以将本地开发的模型(如 Python 中的随机森林分类器)发布到云端,并将其连接到流系统、数据库或数据湖。整个过程可以在 10 分钟内完成。

3.2 数据集成

用户可以将不同的数据源(如第三方 API、遗留基础设施或数据库)转换为类型化的结构化记录流,并将其组合在一起。例如,用户可以在云端设置一个工作流,将 Twitter Ads API 的数据导入数据湖,并在传输过程中进行建模。

4. 典型生态项目

4.1 NStack 示例项目

NStack 提供了多个示例项目,用户可以克隆并立即使用。这些示例包括:

  • Basic examples: 展示了如何创建方法并将它们组合成工作流。
  • nstack: 包含了一些 NStack 实用模块,如上传到 S3 和处理图像的方法。
  • iris: 展示了如何使用 scikit-learn 构建更复杂的模块。
  • movies: 展示了如何从多个独立服务中构建复杂的工作流,处理 IMDB 数据库中的电影数据。

这些示例项目可以帮助用户快速上手 NStack,并了解其强大的功能和灵活性。

nstack Type-safe, composable microservices for data analytics 项目地址: https://gitcode.com/gh_mirrors/nst/nstack

这段代码是对给定的三维图像进行强度归一化的函数,下面是每行代码的解释: ``` import argparse # 导入命令行参数解析模块 import logging # 导入日志模块 import re # 导入正则表达式模块 from multiprocessing import Process, Queue # 导入多进程相关模块 from pathlib import Path # 导入文件路径相关模块 import numpy as np # 导入数组操作模块 from skimage import exposure, filters # 导入图像处理模块 from modules.config import logger # 导入配置和日志模块 from modules.volume import volume_loading_func, volume_saving_func # 导入3D图像加载和保存模块 # 定义一个函数,输入包含三维图像数据的数组、图像相对路径和日志对象,输出经过归一化的图像数组 def normalize_intensity(np_volume: np.ndarray, relative_path: Path, logger: logging.Logger): logger.info(f"[processing start] {relative_path}") # 首先对数组进行切片,nstack是数组的第一维度大小,即切片后数组的深度 nstack = len(np_volume) stack: np.ndarray = np_volume[nstack // 2 - 16 : nstack // 2 + 16] # 对切片后的数组进行直方图均衡化,并求出阈值thr和两个峰值peak_air和peak_soil hist_y, hist_x = exposure.histogram(stack[stack > 0]) thr = filters.threshold_otsu(stack[stack > 0]) peak_air = np.argmax(hist_y[hist_x < thr]) + hist_x[0] peak_soil = np.argmax(hist_y[hist_x > thr]) + thr - hist_x[0] # 将数组转换成int64数据类型并进行归一化 np_volume = np_volume.astype(np.int64) for i in range(len(np_volume)): np_volume[i] = ( (np_volume[i] - peak_air).clip(0) / (peak_soil - peak_air) * 256 / 2 ) logger.info(f"[processing end] {relative_path}") # 对归一化后的图像进行范围调整并返回 return exposure.rescale_intensity( np_volume, in_range=(0, 255), out_range=(0, 255) ).astype(np.uint8) ``` 该函数首先对图像进行切片,取中间32层进行处理。在这些层中,使用直方图均衡化算法获取阈值和两个峰值,并将其用于将输入的三维数组进行归一化处理。最后将处理后的图像进行范围调整,使其在0-255范围内,并将数组的类型转换为uint8,然后返回处理后的图像数组。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邱晋力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值