python 笔记 :trajectory_distance包(如何可以正确使用)【debug篇】

包的地址:maikol-solis/trajectory_distance (github.com)

1 模块介绍

用Cython实现的Python模块,用于计算二维轨迹之间的距离

trajectory_distance包提供了9种轨迹间的距离计算方法:

  1. SSPD(对称线段路径距离)
  2. OWD(单向距离)
  3. Hausdorff
  4. Frechet
  5. 离散Frechet
  6. DTW(动态时间规整)
  7. LCSS(最长公共子序列)
  8. ERP(带实数惩罚的编辑距离)
  9. EDR(实数序列上的编辑距离)

除了离散Frechet和离散Frechet,所有的距离计算都提供欧几里得或球形选项:

  • 欧几里得是基于二维坐标之间的欧几里得距离。
  • 球形是基于二维坐标之间的Haversine距离。

2 debug过程

2.1 python setup.py install > 1.txt 2>&1 之后的报错

部分内容如下:

Error compiling Cython file:
------------------------------------------------------------
...q=len(Q)cc=_compute_critical_values(P,Q,p,q)eps=cc[0]while(len(cc)!=1):m_i=len(cc)/2-1^
------------------------------------------------------------traj_dist/cydist/frechet.pyx:535:21: Cannot assign type 'double' to 'int'
Compiling traj_dist/cydist/frechet.pyx because it changed.
[1/1] Cythonizing traj_dist/cydist/frechet.pyx
Traceback (most recent call last):File "/home_nfs/liushuai/Dataspark/trajectory_distance/setup.py", line 20, in <module>setup(File "/home_nfs/liushuai/anaconda3/lib/python3.11/site-packages/setuptools/__init__.py", line 107, in setupreturn distutils.core.setup(**attrs)^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File "/home_nfs/liushuai/anaconda3/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 185, in setupreturn run_commands(dist)^^^^^^^^^^^^^^^^^^File "/home_nfs/liushuai/anaconda3/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 201, in run_commandsdist.run_commands()File "/home_nfs/liushuai/anaconda3/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 969, in run_commandsself.run_command(cmd)File "/home_nfs/liushuai/anaconda3/lib/python3.11/site-packages/setuptools/dist.py", line 1234, in run_commandsuper().run_command(command)File "/home_nfs/liushuai/anaconda3/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_commandcmd_obj.run()File "/home_nfs/liushuai/anaconda3/lib/python3.11/site-packages/setuptools/command/install.py", line 80, in runself.do_egg_install()File "/home_nfs/liushuai/anaconda3/lib/python3.11/site-packages/setuptools/command/install.py", line 129, in do_egg_installself.run_command('bdist_egg')File "/home_nfs/liushuai/anaconda3/lib/python3.11/site-packages/setuptools/_distutils/cmd.py", line 318, in run_commandself.distribution.run_command(command)File "/home_nfs/liushuai/anaconda3/lib/python3.11/site-packages/setuptools/dist.py", line 1234, in run_commandsuper().run_command(command)File "/home_nfs/liushuai/anaconda3/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_commandcmd_obj.run()File "/home_nfs/liushuai/anaconda3/lib/python3.11/site-packages/setuptools/command/bdist_egg.py", line 164, in runcmd = self.call_command('install_lib', warn_dir=0)^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File "/home_nfs/liushuai/anaconda3/lib/python3.11/site-packages/setuptools/command/bdist_egg.py", line 150, in call_commandself.run_command(cmdname)File "/home_nfs/liushuai/anaconda3/lib/python3.11/site-packages/setuptools/_distutils/cmd.py", line 318, in run_commandself.distribution.run_command(command)File "/home_nfs/liushuai/anaconda3/lib/python3.11/site-packages/setuptools/dist.py", line 1234, in run_commandsuper().run_command(command)File "/home_nfs/liushuai/anaconda3/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_commandcmd_obj.run()File "/home_nfs/liushuai/anaconda3/lib/python3.11/site-packages/setuptools/command/install_lib.py", line 11, in runself.build()File "/home_nfs/liushuai/anaconda3/lib/python3.11/site-packages/setuptools/_distutils/command/install_lib.py", line 111, in buildself.run_command('build_ext')File "/home_nfs/liushuai/anaconda3/lib/python3.11/site-packages/setuptools/_distutils/cmd.py", line 318, in run_commandself.distribution.run_command(command)File "/home_nfs/liushuai/anaconda3/lib/python3.11/site-packages/setuptools/dist.py", line 1234, in run_commandsuper().run_command(command)File "/home_nfs/liushuai/anaconda3/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_commandcmd_obj.run()File "/home_nfs/liushuai/anaconda3/lib/python3.11/site-packages/setuptools/_distutils/command/build_ext.py", line 345, in runself.build_extensions()File "/home_nfs/liushuai/anaconda3/lib/python3.11/site-packages/setuptools/_distutils/command/build_ext.py", line 467, in build_extensionsself._build_extensions_serial()File "/home_nfs/liushuai/anaconda3/lib/python3.11/site-packages/setuptools/_distutils/command/build_ext.py", line 493, in _build_extensions_serialself.build_extension(ext)File "/home_nfs/liushuai/anaconda3/lib/python3.11/site-packages/Cython/Distutils/build_ext.py", line 122, in build_extensionnew_ext = cythonize(^^^^^^^^^^File "/home_nfs/liushuai/anaconda3/lib/python3.11/site-packages/Cython/Build/Dependencies.py", line 1134, in cythonizecythonize_one(*args)File "/home_nfs/liushuai/anaconda3/lib/python3.11/site-packages/Cython/Build/Dependencies.py", line 1301, in cythonize_oneraise CompileError(None, pyx_file)
Cython.Compiler.Errors.CompileError: traj_dist/cydist/frechet.pyx
  • traj_dist/cydist/frechet.pyx 文件中,有一处类型分配错误。错误信息提示不能将类型 'double' 分配给 'int'。这通常意味着在 Cython 代码中有一个类型不匹配的问题。
  • 在这个具体的例子中,m_i=len(cc)/2-1 这行代码的问题是 len(cc)/2 的结果是一个浮点数(double),而 m_i 应该是一个整数(int)。
  • 解决方法:通过使用整数除法 // 替代普通除法 / 来修复这个问题

然后就成功地install了

2.2 ModuleNotFoundError: No module named 'pydist'

 在python中敲入:

import traj_dist.distance as tdist

后,会出现如下错误: 


Traceback (most recent call last):File "<stdin>", line 1, in <module>File "/home_nfs/liushuai/Dataspark/trajectory_distance/traj_dist/distance.py", line 1, in <module>from pydist.linecell import trajectory_set_grid
ModuleNotFoundError: No module named 'pydist'
  • 表明 Python 无法在环境中找到名为 pydist 的模块
  • 但pydist 确实存在于 traj_dist 包的目录中
    • 这意味着问题可能不在于 pydist 模块的缺失,而是在于 Python 环境在寻找这个模块时出现了问题。
  • 解决方法:
    • traj_dist/distance.py 文件中,导入语句使用相对导入
#from pydist.linecell import trajectory_set_grid
from .pydist.linecell import trajectory_set_grid
  •  
    • 或者使用绝对导入
from traj_dist.pydist.linecell import trajectory_set_grid

【类似语句一并修改】 

2.3  ModuleNotFoundError: No module named 'geohash'

pip install python-geohash

即可

2.4 ModuleNotFoundError: No module named 'basic_euclidean'

import traj_dist.distance as tdist
Traceback (most recent call last):File "<stdin>", line 1, in <module>File "/home_nfs/liushuai/Dataspark/trajectory_distance/traj_dist/distance.py", line 3, in <module>from .pydist.sspd import e_sspd, g_sspdFile "/home_nfs/liushuai/Dataspark/trajectory_distance/traj_dist/pydist/sspd.py", line 2, in <module>from basic_euclidean import point_to_trajectory
ModuleNotFoundError: No module named 'basic_euclidean'

和2.2类似,修改导入语句

#from basic_euclidean import point_to_trajectoryfrom .basic_euclidean import point_to_trajectory

或者 

from traj_dist.pydist.basic_euclidean import point_to_trajectory

【类似语句一并修改】

2.5 ModuleNotFoundError: No module named 'linecell'

import traj_dist.distance as tdist
Traceback (most recent call last):File "<stdin>", line 1, in <module>File "/home_nfs/liushuai/Dataspark/trajectory_distance/traj_dist/distance.py", line 11, in <module>from .pydist.sowd import sowd_gridFile "/home_nfs/liushuai/Dataspark/trajectory_distance/traj_dist/pydist/sowd.py", line 2, in <module>import linecell as linec
ModuleNotFoundError: No module named 'linecell'

还是修改导入内容

from . import linecell as linec
#或者
from traj_dist.pydist import linecell as linec

2.6 ModuleNotFoundError: No module named 'traj_dist.cydist.sspd'

import traj_dist.distance as tdist
Traceback (most recent call last):File "<stdin>", line 1, in <module>File "/home_nfs/liushuai/Dataspark/trajectory_distance/traj_dist/distance.py", line 13, in <module>from .cydist.sspd import c_e_sspd, c_g_sspd
ModuleNotFoundError: No module named 'traj_dist.cydist.sspd'
  • 错误 ModuleNotFoundError: No module named 'traj_dist.cydist.sspd' 表示 Python 无法在 traj_dist.cydist 子模块中找到 sspd 模块
    • traj_dist/cydist 目录中包含 sspd.pyxsspd.c 文件,说明 sspd 模块是一个 Cython 模块,它需要被编译成一个 Python 可以导入的扩展
    • 在有setup.py 文件的地方执行如下命令:
      • python setup.py build_ext --inplace
    • 这个命令会编译 .pyx 文件并生成
      Traceback (most recent call last):File "<stdin>", line 1, in <module>File "/home_nfs/liushuai/Dataspark/trajectory_distance/traj_dist/distance.py", line 13, in <module>from .cydist.sspd import c_e_sspd, c_g_sspdFile "traj_dist/cydist/sspd.pyx", line 8, in init traj_dist.cydist.sspdfrom basic_euclidean import c_point_to_trajectory
      ModuleNotFoundError: No module named 'basic_euclidean'
      相应的二进制扩展,如 .so 文件(在 Linux 或 macOS)或 .pyd 文件(在 Windows)
  • 运行上述编译命令后,检查 traj_dist/cydist 目录,看看是否生成了 sspd 的扩展文件(.so.pyd)。如果生成了,那么遍解决了这个错误,如果没有生成,可能是编译过程中出现了错误。

2.7 ModuleNotFoundError: No module named 'basic_euclidean'

import traj_dist.distance as tdist
  • sspd.pyx 中尝试从 basic_euclidean 导入时出现了问题
  • 改成:
from .basic_euclidean import c_point_to_trajectory

但修改pyx文件和前面修改py文件不一样的是,在修改了 .pyx 文件之后,需要重新编译 Cython 扩展

python setup.py build_ext --inplace

然后就可以正常使用这个库了

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

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

相关文章

机器学习算法(9)——集成技术(Bagging——随机森林分类器和回归)

一、说明 在这篇文章&#xff0c;我将向您解释集成技术和著名的集成技术之一&#xff0c;它属于装袋技术&#xff0c;称为随机森林分类器和回归。 集成技术是机器学习技术&#xff0c;它结合多个基本模块和模型来创建最佳预测模型。为了更好地理解这个定义&#xff0c;我们需要…

WLAN配置实验

本文记录了WLAN配置实践的过程&#xff0c;该操作在华为HCIA中属于相对较复杂的实验&#xff0c;记录过程备忘。这里不就WLAN原理解释&#xff0c;仅进行配置实践&#xff0c;可以作为学习原理时候的参考。本文使用华为ENSP进行仿真。实验拓扑图如下&#xff1a; 1.WLAN工作流程…

【electron】外语函数接口 FFI

▒ 目录 ▒ &#x1f6eb; 导读需求开发环境 1️⃣ FFI概念优点注意事项 2️⃣ 【废弃】node-ffi3️⃣ node-ffi-napi安装&#xff08;windows系统下&#xff09;示例&#xff1a;MessageBoxA、NtSuspendProcess 4️⃣ node-win32-api安装示例&#xff1a;查找窗口并设置窗口标…

UE5数据传递-纹理贴图

期待结果&#xff1a; 流程 1. 通过C写入数据到纹理贴图 2. 在材质中通过采样能正确读取写入的数值 踩坑&#xff1a; 1. UE5之后&#xff0c;需要设置采样类型&#xff0c;才能达到上图效果&#xff0c;默认采样类型做了插值计算 FColor中写入 PF_B8G8R8A8 UTexture2D* Conve…

第四题:憧憬(JavaPythonC++实现)【第六届传智杯-新增场次-程序设计挑战赛解题分析详解复盘】

本文仅为【2023传智杯-第二场】第六届传智杯程序设计挑战赛-题目解题分析详解的解题个人笔记,个人解题分析记录。 本文包含:第六届传智杯程序设计挑战赛题目、解题思路分析、解题代码、解题代码详解(Java&Python&C++实现) 文章目录 更新进度记录第四题:憧憬(Java…

AI 绘画 | Stable Diffusion 艺术二维码制作

前言 这篇文章教会你如果用Stable Diffusion WEB UI制作艺术二维码,什么是艺术二维码呢?就是普通二维码和艺术图片融合后的二维码图片,如下图所示。主要原理还是使用controlNet的control_v1p_sd15_qrcode_monster模型和光影模型control_v1p_sd15_brightness。 教程 准备…

【论文阅读笔记】NeRF+Mip-NeRF+Instant-NGP

目录 前言NeRF神经辐射场体渲染连续体渲染体渲染离散化 方法位置编码分层采样体渲染推导公式&#xff08;1&#xff09;到公式&#xff08;2&#xff09;部分代码解读相机变换&#xff08;重要&#xff01;&#xff09; Mip-NerfTo do Instant-NGPTo do 前言 NeRF是NeRF系列的…

DIP——边缘提取与分割

1.使用canny算法进行边缘提取 本实验比较简单&#xff0c;基本思路是对原图像进行一个高斯模糊处理&#xff0c;用于去噪&#xff0c;之后转换为灰度图&#xff0c;直接调用cv库中的canny记性边缘提取。若想直接得到彩色边缘&#xff0c;则通过按位与操作&#xff0c;将原始彩色…

SQLMap进阶使用

预计更新SQL注入概述 1.1 SQL注入攻击概述 1.2 SQL注入漏洞分类 1.3 SQL注入攻击的危害 SQLMap介绍 2.1 SQLMap简介 2.2 SQLMap安装与配置 2.3 SQLMap基本用法 SQLMap进阶使用 3.1 SQLMap高级用法 3.2 SQLMap配置文件详解 3.3 SQLMap插件的使用 SQL注入漏洞检测 4.1 SQL注入…

ingress介绍和ingress通过LoadBalancer暴露服务配置

目录 一.ingress基本原理介绍 1.将原有用于暴露服务和负载均衡的服务的三四层负载均衡变为一个七层负载均衡 2.controller和ingress 3.通过下面这个图可能会有更直观的理解 二.为什么会出现ingress 1.NodePort存在缺点 2.LoadBalancer存在缺点 三.ingress三种暴露服务的…

7-6 通讯录排序

输入n个朋友的信息&#xff0c;包括姓名、生日、电话号码&#xff0c;本题要求编写程序&#xff0c;按照年龄从大到小的顺序依次输出通讯录。题目保证所有人的生日均不相同。 输入格式: 输入第一行给出正整数n&#xff08;<10&#xff09;。随后n行&#xff0c;每行按照“…

基于JavaWeb+SSM+Vue微信小程序的科创微应用平台系统的设计和实现

基于JavaWebSSMVue微信小程序的科创微应用平台系统的设计和实现 源码获取入口Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码获取入口 Lun文目录 1系统概述 1 1.1 研究背景 1 1.2研究目的 1 1.3系统设计思想 1 2相关技术…

Linux Component概述和高通component的使用

1 Linux为什么要引入Component框架&#xff1f; 为了让subsystem按照一定顺序初始化设备才提出来的。 subsystem中由很多设备模块&#xff0c;内核加载这些模块的时间不确定。子系统内有些模块是需要依赖其它模块先初始化才能进行自己初始化工作(例如v4l2 subdev和v4l2 video …

kubebuilder开发operator

安装kubebuilder前 需要有kubernetes环境和golang环境 官网&#xff1a;https://go.kubebuilder.io/ 安装kubebuilder #下载 wget https://go.kubebuilder.io/dl/latest/$(go env GOOS)/$(go env GOARCH) #改名kubebuilder后加权限 chmod x kubebuilder #放到环境变量里 mv k…

【C语言程序设计】编写简单的C程序

目录 前言 一、程序设计 二、程序改错 三、程序完善 总结 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高兴与大家相识&#xff0c;希望我的博客能对你有所帮助。 &#x1f4a1;本文由Filotimo__✍️原创&#xff0c;首发于CSDN&#x1f4da;。 &#x1f4e3;如…

unity 2d 入门 飞翔小鸟 死亡 显示GameOver(十四)

1、添加Img create->ui->img 把图片拖进去 2、和分数一样、调整位置 3、修改角色脚本 using System.Collections; using System.Collections.Generic; using UnityEngine;public class Fly : MonoBehaviour {//获取小鸟&#xff08;刚体&#xff09;private Rigidbod…

【Apipost】批量删除我的51CTO文章

文章目录 一、序二、API分析三、Apipost测试四、脚本五、Apipost中完成 一、序 去年开始再51CTO同步更新文章&#xff0c;一年多过去了&#xff0c;只涨了3个粉丝。看了下这个平台就是卖课、搞培训的&#xff0c;退出了。决定把文章也删除了&#xff08;有人私信我说专门注册了…

ToolkenGPT:用大量工具增强LLM

深度学习自然语言处理 原创作者&#xff1a;cola 用外部工具增强大型语言模型(LLM)已经成为解决复杂问题的一种方法。然而&#xff0c;用样例数据对LLM进行微调的传统方法&#xff0c;可能既昂贵又局限于一组预定义的工具。最近的上下文学习范式缓解了这一问题&#xff0c;但有…

Shell 常用命令详解-上

Shell 常用命令详解-上 1.目录查阅相关命令2.文件操作相关命令 1.目录查阅相关命令 ll 命令 命令描述&#xff1a;ll命令用于显示指定工作目录下的内容。 命令格式&#xff1a;ll [参数] [目录名]。 参数说明&#xff1a; 参数说明-a显示所有文件及目录&#xff08;包括隐藏文…

【机器学习】041_模型开发迭代过程

一、模型开发的一般步骤 1. 明确研究问题 确定问题的组成和结果&#xff0c;明晰问题是分类问题还是回归问题 2. 决定系统总体架构 ①理解数据&#xff1a;采集&#xff08;爬取&#xff09;数据&#xff0c;生成&#xff08;导入&#xff09;数据&#xff0c;进行数据清洗…