分布线性算子PyLops的一个推广。

pylops-distributed的Python项目详细描述


PyLops-distributed

PyPI versionBuild StatusAzureDevOps StatusDocumentation StatusOS-supportSlack Status

:vertical_traffic_light::vertical_traffic_light:此库正在早期开发中。 在v1.0.0版本之前,预计情况会不断变化。:垂直交通灯::垂直交通灯:

目的

此库是PyLops的扩展 对于分布式操作员。在

就像numpy和{a9}谎言一样多 作为父项目PyLops的核心,PyLops在 Dask,一个用于分布式计算的Python库。在

这样,线性算子可以分布在单个节点上的多个进程中 甚至跨越多个节点。他们的前进和伴随 它们首先被懒洋洋地构建为有向无环图,并且仅在请求时求值 用户(或自动在我们的解算器中)。在

下面是一个简单的示例,演示如何创建对角线运算符, 使用PyLops应用和反转:

importnumpyasnpfrompylopsimportDiagonaln=10x=np.ones(n)d=np.arange(n)+1Dop=Diagonal(d)# y = Dxy=Dop*x# x = D'yxadj=Dop.H*y# xinv = D^-1 yxinv=Dop/y

同样地,使用PyLops分布:

^{pr2}$

在这一点上,有两件事值得注意:

  • 在这个特定的例子中,我们甚至不需要重新实现Derivative运算符。 调用numpy操作作为方法(例如,x.sum())而不是函数(例如np.sum(x)) 当提供dask阵列时,我们的操作员可以自动充当分布式操作员。不幸的是,并不是所有的numpy函数都是作为方法实现的:在这些情况下,我们 重新实现操作员直接在派洛普斯分布。在
  • 使用*和{}仍然可以在PyLops分布中使用,但是当初始化 运算符我们将需要决定是要简单地创建dask图还是还要求值。 这给了我们灵活性,因为我们可以决定是否以及何时使用compute方法进行评估 在一个选择的达斯克阵列上。在

入门

您需要Python 3.5或更高版本。在

来自PyPi

很快就要来了。。。在

来自Github

也可以直接从主节点安装

pip install https://git@github.com/equinor/pylops-distributed.git@master

贡献

想为项目做贡献吗?添加新操作员或教程?

按照PyLops official documentation中的说明操作。在

文件

派洛普斯发行的官方文档here。在

此外,如果您已经使用developer environment安装了PyLops,您还可以通过 键入以下命令:

make doc

一旦创建了文档,您可以对源代码进行任何更改并通过 简单的打字

make docupdate

请注意,如果创建了新的示例或教程(以及对以前可用的示例或教程进行了任何更改) 您需要重新生成整个文档,然后才能看到更改。在

历史

PyLops Distributed最初是编写的,目前由Equinor维护。 它是PyLops的扩展,用于大规模优化 distributed线性运算符,可以根据我们的需要进行定制,并作为对自由软件社区的贡献。在

贡献者

  • 马特奥·拉瓦西,姆拉瓦西87

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java将Int值传递给另一个类   在使用Sdin(或非交互式)输入| Java时调试奇怪的输入错误   java返回一个文本字符串作为响应struts2   java为什么我们不能在声明局部变量之前初始化它呢?   java从现有XML中读取值并将其填充到Json中   java Spring Boot+Maven:找不到repositoryFactoryBean   java使用regex表示“W o.Rd”。replaceAll(“单词”、“替换”)   java Sub resorce在Jersey REST API框架中不起作用   java在组件启动时,当所述报告存储在Sharepoint中时,是否可以加载预格式化的WebDataRocks报告?   java并发更新列表的最佳方法   servlets Java web应用程序对象调度   应用程序在点击按钮时崩溃,Android Studio(Java)   java如何为掷骰子游戏调用另一个类中的方法?