调用R语言并提供Rest接口

news2024/11/25 16:48:01

文章目录

  • 一、安装R语言环境
  • 二、qdiabetes
  • 三、安装Python环境
  • 四、提供Rest接口


一、安装R语言环境

  • 安装
sudo apt-get update
sudo apt-get install r-base
  • /home/rscript/script.R
# script.R
cat("Hello, World!\n")
  • 测试
Rscript /home/rscript/script.R

在这里插入图片描述

二、qdiabetes

  • 安装
R
install.packages("QDiabetes")
q()
  • /home/rscript/test.R
# script.R

library(QDiabetes)

QDR2018A(sex = "Female", age = 60, bmi = 35)

QDR2018B(sex = "Male", age = 60, bmi = 35, fpg = 6)

QDR2018C(sex = "Male", age = 60, bmi = 35, hba1c = 42)
  • 测试
Rscript /home/rscript/test.R

在这里插入图片描述

三、安装Python环境

  • /root/.pip/pip.conf
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host = https://pypi.tuna.tsinghua.edu.cn
  • 安装
apt install python3-pip
pip install --upgrade pip
pip install --upgrade setuptools
pip install fastapi
pip install uvicorn[standard]
pip install rpy2
  • /home/python/test_rscript.py
#!usr/bin/env python3

import rpy2.robjects as ro
 
ro.r('source("/home/rscript/test.R")')
 
result = ro.r['QDR2018B'](sex = "Female", age = 65, bmi = 30, fpg = 6)
 
print(result)
  • 测试调用R
python3 /home/python/test_rscript.py

在这里插入图片描述

  • /home/python/test_rest.py
#!usr/bin/env python3

from fastapi import FastAPI
 
app = FastAPI()
 
@app.get("/")
def root():
    return {"message": "Hello FastAPI"}
  • 测试Rest接口
cd /home/python && nohup uvicorn resttest:app --reload --host 0.0.0.0 --port 8888 > log.txt 2>&1 &

http://192.168.1.6:8888/
在这里插入图片描述

四、提供Rest接口

  • qdiabetes.R
# script.R
library(QDiabetes)
  • /home/python/qdiabetes .py
from fastapi import FastAPI
from pydantic import BaseModel

import rpy2.robjects as ro

app = FastAPI()

class ItemModel(BaseModel):
    type: str
    sex: str
    age: int
    bmi: float
    ethn: str
    smoke: str
    fpg: float
    hba1c: float

ro.r('source("/home/rscript/qdiabetes.R")')

@app.post("/qdiabetes")
async def find_qdiabetes(item: ItemModel):
    try:
        if item.type == "A":
            result = ro.r['QDR2018A'](sex=item.sex, age=item.age, bmi=item.bmi, ethn=item.ethn, smoke=item.smoke)
        if item.type == "B":
            result = ro.r['QDR2018B'](sex=item.sex, age=item.age, bmi=item.bmi, ethn=item.ethn, smoke=item.smoke, fpg=item.fpg)
        if item.type == "C":
            result = ro.r['QDR2018C'](sex=item.sex, age=item.age, bmi=item.bmi, ethn=item.ethn, smoke=item.smoke, hba1c=item.hba1c)
        print(result[0])
        return {"type": item.type, "score": result[0]}
    except Exception as e:
        print(e.args)
        return {"error": e.args[0]}
  • 启动
cd /home/python && nohup uvicorn qdiabetes:app --reload --host 0.0.0.0 --port 8888 > log.txt 2>&1 &
  • 例子

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1589518.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何开辟动态二维数组(C语言)

1. 开辟动态二维数组 C语言标准库中并没有可以直接开辟动态二维数组的函数,但我们可以通过动态一维数组来模拟动态二维数组。 二维数组其实可以看作是一个存着"DataType []"类型数据的一维数组,也就是存放着一维数组地址的一维数组。 所以&…

基于centos7安装docker+k8s+KubeSphere

实验环境:(每个服务器推荐内存为8G) 服务器 ip地址 主机名 centos7 192.168.80.1…

面试: 单例模式

目录 一、饿汉单例(实现Serializable) 1、破坏单例的三种情况 (1)反射破坏单例 (2)反序列化破坏单例 (3)Unsafe破坏单例 2、饿汉单例(利用枚举实现) 二…

44.基于SpringBoot + Vue实现的前后端分离-汽车租赁管理系统(项目 + 论文PPT)

项目介绍 本站是一个B/S模式系统,采用SpringBoot Vue框架,MYSQL数据库设计开发,充分保证系统的稳定性。系统具有界面清晰、操作简单,功能齐全的特点,使得基于SpringBoot Vue技术的汽车租赁管理系统设计与实现管理工作…

吴恩达机器学习:均值聚类法(K-means Clustering)

在本练习中,您将实现K-means算法并将其用于图像压缩。 您将从一个样本数据集开始,该数据集将帮助您直观地了解K-means算法的工作原理。之后,您将使用K-means算法进行图像压缩,将图像中出现的颜色数量减少到该图像中最常见的颜色。…

基于Springboot的网上商品订单转手系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的网上商品订单转手系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系…

Excel---一个工作簿中的多个sheet合并成一个PDF

0 Preface/Foreword 1 操作方法 1.1 方法一 文件》 导出 》创建PDF/XPS 》 选项 》发布内容 》“整个工作簿” 1.2 方法二 文件》 打印》 打印机选项中,选择一种PDF阅读器 》设置选项中,选择打印整个工作簿。

二维数组中的查找

😀前言 在解决问题时,我们经常会遇到需要在二维数组中查找特定元素的情况。然而,如果直接使用暴力搜索,即遍历整个数组寻找目标元素,可能会导致时间复杂度较高,效率不高。然而,对于给定的二维数…

代码随想录阅读笔记-回溯【分割回文串】

题目 给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。 返回 s 所有可能的分割方案。 示例: 输入: "aab" 输出: [ ["aa","b"], ["a","a","b"] ] 思路 本题这涉及到两个关…

CSS水波纹效果

效果图&#xff1a; 1.创建一个div <div class"point1" click"handlePoint(1)"></div> 2.设置样式 .point1{width: 1rem;height: 1rem;background: #2ce92f;position: absolute;border-radius: 50%;z-index: 999;cursor: pointer;} 3.设置伪…

程序员搞副业你可以这样做

程序员搞副业你可以这样做 文章目录 程序员搞副业你可以这样做01/开发外包项目02/开源项目赢取打赏盈利模式之一&#xff1a;多种产品线盈利模式之二&#xff1a;技术服务型盈利模式之三&#xff1a;应用服务托管&#xff08;ASP&#xff09;盈利模式之四&#xff1a;软、硬件一…

BUUCTF-Misc(1~4题)

一.签到 答案就在上面&#xff0c;输入&#xff1a;flag{buu-ctf} 二.金三胖 然后解压得到一个GIF图 大家清楚地看到闪过了两张红色的图片 方法一&#xff1a;使用GifSplitter 2.0 然后就可以在金三胖的文件夹里生成了每一帧的图片 可以看到答案是flag{he11ohongke} 方法二…

Samba实现windows和Linux共享文件,环境搭建

​ 搭建步骤 安装sambad sudo apt-get install samba samba-common 创建samba用户和密码 此处使用 Linux 账号和密码作为 samba 的账号和密码。Linux 账号为 shelmean shelmeanmachine:[~] $ sudo smbpasswd -a shelmean New SMB password: Retype new SMB password: Add…

二叉树-数据结构

二叉树-数据结构 二叉树是属性结构的一个重要类型。 如下图二叉树形状 二叉树特征如下&#xff1a; 1.二叉树由 n(n > 0) 个节点组成 2.如果 n 为 0&#xff0c;则为空树 3.如果 n 1&#xff0c;则只有一个节点称为根节点(root) 4.每个节点最多有两个节点&#xff0c;节…

STM32学习和实践笔记(8): 理解位带区和位带别名区

如前《STM32学习和实践笔记&#xff08;4&#xff09;: 分析和理解GPIO_InitTypeDef GPIO_InitStructure (b)&#xff08;含memory mapping图&#xff09;-CSDN博客 》中所写&#xff0c; STM32一共有4GB的地址&#xff0c;对所有的寄存器、存储器、外设等进行统一编址。 每…

PostgreSQL入门到实战-第二十二弹

PostgreSQL入门到实战 PostgreSQL中表连接操作(六)官网地址PostgreSQL概述PostgreSQL中self-join命令理论PostgreSQL中self-join命令实战更新计划 PostgreSQL中表连接操作(六) 使用PostgreSQL自联接技术来比较同一表中的行 官网地址 声明: 由于操作系统, 版本更新等原因, 文…

19、矩阵-螺旋矩阵

思路: 这道题主要是对空间上有所思考&#xff0c;每次转一圈上右下左各减少一层。不妨设top&#xff0c;right&#xff0c;down&#xff0c;left&#xff0c;每次旋转一圈 top&#xff0c;right--&#xff0c;down--&#xff0c;left 代码如下&#xff1a; class Solution …

【Linux】网络基础(一)

文章目录 一、计算机网络背景1. 网络发展2. 认识“协议” 二、网络协议初识1. 协议分层2. OSI七层模型3. TCP/IP五层&#xff08;或四层&#xff09;模型 三、网络传输基本流程1. 同局域网的两台主机通信数据包封装和分用封装分用 2. 跨网络的两台主机通信 四、网络中的地址管理…

应该如何进行POC测试?—【DBA从入门到实践】第三期

在数据库选型过程中&#xff0c;为确保能够灵活应对数据规模的不断扩大和处理需求的日益复杂化&#xff0c;企业和技术人员会借助POC测试来评估不同数据库系统的性能。在测试过程中&#xff0c;性能、并发处理能力、存储成本以及高可用性等核心要素通常会成为大家关注的焦点&am…

KNN分类算法的MATLAB实现以及可视化

一、KNN简介 KNN算法&#xff0c;即K-Nearest Neighbors&#xff0c;是一种常用的监督学习算法&#xff0c;可以用于分类问题&#xff0c;并且在实际应用中取得了广泛的成功。 二、KNN算法的基本原理 对于给定的测试样本&#xff0c;KNN算法首先计算它与训练集中所有样本的距…