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.pswp.cn/news/212830.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/212830.shtml
英文地址,請注明出處:http://en.pswp.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;進行數據清洗…