可索引容器(列表等)的透明转换库

seqtools的Python项目详细描述


…图片::https://badge.fury.io/py/seqtools.svg
:目标:https://badge.fury.io/py/seqtools
:alt:pypi package
…图片::https://travis-ci.org/nlgranger/seqtools.svg?branch=master
:目标:https://travis ci.org/nlgranger/seqtools
:alt:持续集成
…图片::https://readthedocs.org/projects/seqtools doc/badge
:目标:http://seqtools doc.readthedocs.io
:alt:documentation
…图片::https://api.codacy.com/project/badge/grade/f5324dc1e36d46f7ae1cabaaf6bce263
:目标:https://www.codacy.com/app/nlgranger/seqtools?utm_source=github.com&;utm_medium=referration&;utm_content=nlgranger/seqtools&;utm_campaign=badge_grade
:alt:code-quality analysis
。图像::https://codecov.io/gh/nlgranger/seqtools/branch/master/graph/badge.svg
:目标:https://codecov.io/gh/nlgranger/seqtools
:alt:tests coverage
。图片::http://joss.theoj.org/papers/527a3c6e78ef0b31f93bbd29235d5a0b/status.svg
:目标:http://joss.theoj.org/papers/527a3c6e78ef0b31f93bbd29235d5a0b
:alt:citable paper

seqtools
=
改造管道。提供的一些功能包括:映射
按元素操作、重新排序、重新编制索引、连接、联接、
切片、小批量等。

为了提高易用性,seqtools假设数据集是实现
类似于"sequence<;https://docs"的列表的对象。python.org/3/glossary.html"term sequence">所有seqtools函数都使用这个简单方便的接口获取并返回兼容的对象。


有时使用转换或组合操作整个数据集可能会
速度慢且资源密集;转换后的数据集甚至可能无法装入
内存!为了避免这个问题,seqtools在幕后实现了*on-demand*execution
,这样计算只在需要时运行,并且只针对
实际需要的元素,而忽略数据集的其余部分。这有助于
将内存资源保持在最低限度,并加快
访问任意结果所需的时间。这种按需策略有助于快速定义
数据集范围内的转换,并探测一些结果以进行调试或
原型设计,但对于仍然受益于
简单方便的列表式界面的用户来说,它是透明的。

>;def do(x):
…打印("->;正在计算")
…返回x+2

>;>;a=[1,2,3,4]
>;>;m=seqtools.smap(do,a)
>;>;>;不打印任何内容,因为评估被延迟
>;>;m[0]
->;正在计算中对于m中的v[:-2]:
…print(v)
->;computing now
3
->;computing now
4


从原型设计到执行的转变过程中,列表式容器界面有助于进行串行评估。此外,seqtools还提供简单的
帮助程序,用于在多个后台工作线程或
进程之间分派工作,从而最大限度地提高执行速度和资源使用率。

seqtools最初的目标是数据科学,更准确地说是数据的预处理阶段。考虑到这种使用的实验性质,
按需执行通过提供
容错功能和有洞察力的错误报告而对用户尽可能透明。此外,内部代码
保持简洁和清晰,并带有注释,以便于通过
失败的转换管道跟踪错误。


尽管如此,该项目有意保留一个通用接口,并且仅
需要最小的依赖性,以促进beyon的可重用性。d这是
适用范围。


示例
----

>>>定义f1(x):
…返回x+1

睡眠时间(.01)
…返回[x表示范围(500)内的值]

>;>def f3(x):
…返回和(x)/len(x)

>;>data=list(range(1000))


内存
>;>;res=[f3(x)for x in tmp2]
>;>;打印(res[2])
3.0
>;>;打印(max(tmp2[2])需要沿
3存储499 500个无用值


(f2,tmp1)
>;>res=seqtools.smap(f3,tmp2)
>;>print(res[2])
3.0
>;>print(max(tmp2[2])
3






----


库附带一组用于操作序列的函数:

…|连接image::docs/_static/concatenate.png

…_连接:reference.html seqtools.concatenate

…|批处理图像::文档/_static/batch.png

…_批处理:reference.html seqtools.batch

…|收集图像::docs/_static/gather.png

…_重新编制索引:reference.html seqtools.gather

…|预取image::docs/_static/prefetch.png

…_预取:reference.html seqtools.prefetch

…|交错image::docs/_static/interleaving.png

…_interleaving: reference.html#seqtools.interleave

==================== ================= ===============
| `concatenation`_ | `batching`_ | `reindexing`_
| |concatenate| | |batch| | |gather|
| `prefetching`_ | `interleaving`_
| |prefetch| | |i输入
==================================


和其他(也欢迎提出建议)。





代码块::bash




documentation
----


文档位于"https://seqtools doc.readthedocs.io
<;https://seqtools doc.readthedocs.io>;`.


r/>使用"问题跟踪器"https://github.com/nlgranger/seqtools/issues>;`\u
请求功能、建议改进或报告问题。有关用法的问题,请发送电子邮件至:3764009+nlgranger@users.noreply.github.com优化流水线转换。这个库提供了高级缓存机制,这不是seqtool的主要关注点。seqtool使用了一个简单的面向容器的接口,带有多个
实用程序功能,以帮助快速成型。按需评估是其默认行为,适用于转换管道的所有层。在
中,并行计算可以插入到
转换管道的中间,并且不会阻止执行,以等待数据集中所有元素的
计算。

seqtools被认为可以很好地连接到机器的数据加载管道
learning库,如pytorch的"torch.utils.data
<;http://pytorch.org/docs/master/data.html>;``和"torchvision.transforms
<;http://pytorch.org/docs/master/torchvision/transforms.html>;``或tensorflow的
`tf.data<;http s://www.tensorflow.org/guide/datasets>;`。这些库的接口专注于"迭代器
<;https://docs.python.org/3/library/stdtypes.html迭代器类型>;``访问
转换的元素,与SeqTools(也通过索引提供任意读取)相关。


Mozilla公共许可2.0版
==/> 1。定义
----

>1.1。"贡献者"
是指创建、贡献或拥有覆盖软件的每个个人或法律实体。


1.2。"贡献者版本"
指贡献者使用的其他贡献者(如果有)的贡献与特定贡献者的贡献的组合。

1.3。"贡献"
指特定贡献者的覆盖软件。

1.4。"所涵盖的软件"
是指初始贡献者附加
附件A中的通知的源代码格式、此类源代码
格式的可执行格式以及此类源代码格式的修改,在每种情况下
包括其部分。

1.5。"与二级许可不兼容"
意味着

(a)初始贡献者已将附件B中所述的通知附加到所涵盖的软件;或

(b)所涵盖的软件是根据1.1版或Earlie的条款提供的许可证的R,但不在次要许可证的
条款下。

1.6。"可执行格式"
指除源代码格式以外的任何形式的工作。

1.7。"较大的工作"
是指将覆盖的软件与其他材料结合在一起的工作,在
一个或多个单独的文件中,该文件不是覆盖的软件。

1.8。"许可证"
指本文件。

1.9。"可许可"
意味着有权在最大可能的范围内授予
无论是在首次授予时还是随后,本许可所传达的任何和
所有权利。


1.10。"修改"
是指以下任何一种:

(a)源代码格式的任何文件,这些文件是由于添加、删除或修改覆盖的软件的内容而产生的;或

(b)源代码格式的任何新文件,其中包含任何覆盖ed
软件。


1.11。"贡献者的"专利权利要求"是指任何专利权利要求,包括但不限于方法、工艺和设备权利要求,在该贡献者许可的任何专利中,如果不授予该专利权利要求,则该专利权利要求将受到侵犯。出售的戒指,有
制作、进口或转让其供款或其
供款版本。


1.12。"次要许可证"
是指GNU通用公共许可证,版本2.0,GNU
次要通用公共许可证,版本2.1,GNU Affero通用公共许可证,版本3.0,或其任何更高版本。


1.13。"源代码形式"
表示进行修改时首选的工作形式。

1.14。"您(或"您的")是指根据本许可证行使权利的个人或法人实体。对于法律实体,"您"包括
控制您、由您控制或与您共同控制的任何实体。在本定义中,"控制"是指(a)直接或间接地引导或管理该实体的权力,无论是通过合同还是其他方式,或(b)拥有超过50%的已发行股份或实益股份。该实体的所有权。许可证授予和条件授予

每位贡献者在此授予您一份全球范围的、免版税的非排他性许可证:

(a)知识产权(专利或商标除外)
允许该贡献者使用、复制、提供、修改、显示、执行、分发和以其他方式利用其贡献,无论是在未经修改的基础上进行修改,还是作为更大作品的一部分进行修改;以及h贡献者制作、使用、出售、提供
出售、制作、进口或以其他方式转让其
贡献或其贡献者版本。

2.2。生效日期

第2.1节中授予的与任何出资相关的许可证
在出资人首次分配此类出资之日对每个出资生效。

2.3。对授予范围的限制

本第2节中授予的许可是在本许可下授予的唯一权利。在本许可下,覆盖软件的
分发或许可不会隐含任何额外的权利或许可。
尽管有上述第2.1(b)节的规定,对于贡献者从覆盖软件中删除的任何代码,贡献者不会授予任何专利许可:


(a);


(b)因以下原因造成的侵权:(i)您和任何其他第三方对覆盖软件的
修改,或(ii)其
贡献与其他软件的组合(作为其贡献者
版本的一部分除外);或

(c)根据在没有贡献的情况下被覆盖软件包围。


本许可证不授予对任何贡献者的商标、服务标志、
或徽标的任何权利(遵守第3.4节中的通知要求所必需的除外)。


>2.4。后续许可证

由于您选择
根据本
许可证的后续版本(见第10.2节)或第二许可证的条款(如果第3.3节的条款允许
)分发所涵盖的软件,因此没有贡献者提供额外的授权。

2.5。声明

每个贡献者表示,贡献者相信其
贡献是其原始创作,或其有足够的权利
授予对本许可证所传达的贡献的权利。


2.6。合理使用

本许可证不限制您在
合理使用、公平交易或其他
同等适用版权理论下的任何权利。

2.7。条件

第3.1节、第3.2节、第3.3节和第3.4节是第2.1节中授予的许可证的条件。职责
----


3.1。源代码形式的分发

所有源代码形式的包含软件的分发,包括您创建或参与的任何
修改,都必须在本许可证的条款下。您必须通知接收者,所涵盖软件的源代码格式受本许可协议的条款管辖,以及他们如何获得本许可协议的副本。您不能试图更改或限制源代码表单中收件人的权限。


3.2。可执行格式的分发

如果您以可执行格式分发涵盖的软件,则:

(a)如第3.1节所述,此类涵盖的软件也必须以源代码
格式提供,并且您必须通知接收者
可执行格式如何可以及时以合理的方式保存一份此类源代码
表格的副本,费用不超过分发给接收者的费用;并且

(b)您可以根据本
许可证的条款分发此类可执行表格,或者根据不同的条款进行再许可,前提是可执行表单的
许可证不会试图限制或更改
此许可证下源代码表单中收件人的权利。


3.3。较大作品的分发

您可以根据条款o创建和分发较大作品根据您的选择,
前提是您也遵守本许可证对所涵盖软件的要求。如果较大的工作是由一个或多个二级许可证管理的工作与覆盖的
软件的组合,并且
覆盖的软件与二级许可证不兼容,则该
许可证允许您根据该SEC的条款另外分发该覆盖的软件二级许可,以便
较大作品的接收者可以根据他们的选择,根据本许可或此类二级许可的条款进一步分发所涵盖的
软件。

3.4。通知

您不得删除或更改源代码格式中包含的任何许可通知
(包括版权通知、专利通知、保证免责声明、
或责任限制)的实质内容,除非您可以更改任何许可通知。纠正已知事实错误所需的程度。


>3.5。附加条款的应用

您可以选择向一个或多个受保
软件的接收者提供并收取费用、保证、支持、
赔偿或责任义务。但是,您只能代表您自己,而不能代表任何贡献者。您必须明确,任何
此类保证、支持、赔偿或责任义务均由
您一人提供,并且您在此同意赔偿每位出资人因保证、支持、
赔偿或责任而产生的任何
责任。你提供的条件。您可以包括针对任何
管辖区的附加
免责声明和责任限制。


4。由于法规或规章而无法遵守
——n您必须:(a)尽最大可能遵守本许可证的条款;以及(b)
描述其影响的限制和代码。此类说明必须放在文本文件中,该文本文件包含本许可证下涵盖的
软件的所有发行版。除法令或法规禁止的范围外,此类描述必须足够详细,以便普通技能的接收者能够理解。终止
----

>5.1。如果您未能遵守本许可协议的任何条款,则本许可协议项下授予的权利将自动终止。但是,如果您变得
合规,则根据本许可证从特定的
贡献者授予的权利将被恢复:(a)暂时恢复,除非并且直到该
贡献者明确并最终终止您的授予,以及(b)在持续的基础上,如果该贡献者未能在您回到合规状态后60天内,以合理的方式通知您
不合规情况。此外,如果某个特定的
贡献者
以某种合理的方式通知您不遵守本许可,则您从该贡献者处获得的授权将持续恢复,这是您第一次收到该贡献者关于不遵守本许可的通知,并且您在您收到通知后30天内成为合规的。


>5.2。如果您通过主张专利侵权索赔(不包括宣告性判决诉讼,
反索赔和交叉索赔)对任何实体提起诉讼,声称贡献者版本直接或间接侵犯任何专利,则任何d本许可证第2.1节所述软件的所有贡献者应终止。如果根据上述第5.1节或第5.2节终止,则所有
最终用户许可协议(e(不包括经销商和转售商)在本协议终止前已由您或您的经销商根据本协议有效授予
的,在本协议终止后继续有效。**
*6.免责声明*
*——*
**
*本许可证项下所涵盖的软件按"原样"提供*
*无任何形式的明示、暗示或*
*法定保证,包括但不限于*
*所涵盖的软件无缺陷、可销售、适合于*
*特定用途或非侵权的保证。有关所涵盖软件的*
*质量和性能的全部风险由您承担。*
*如果任何覆盖的软件在任何方面证明有缺陷,您*
*(不是任何贡献者)承担任何必要的维修、修理或更正的费用。本免责声明构成本许可证的重要组成部分。除本免责声明外,根据本许可证不得使用任何涵盖的软件。*
**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
**
*7.赔偿责任限制*
*————————————————————————————————————————————————————————————————————————————————r/>*(包括疏忽)、合同或其他,任何*
*贡献者,或任何按上述允许的*
*方式分发受保护软件的人,应对任何性质的任何直接、间接、*
*特殊、附带或后果性损害负责。*
*包括但不限于利润损失、商誉损失、停工、计算机故障或故障,或任何*
*和所有其他商业损害或损失,即使该方*
*已被告知可能发生这种情况。安眠药。本责任限制不适用于因该方疏忽而导致的死亡或人身伤害责任,适用法律禁止此类限制。某些*
*司法管辖区不允许排除或限制*
*附带或间接损害,因此此排除和*
*限制可能不适用于您。*
**
*****************************************************************************

>8。诉讼
----


与本许可证有关的任何诉讼只能在被告维持其主要营业地的司法管辖区的
法院提起,且此类诉讼应受该司法管辖区的法律管辖,而无需参考其公司不符合法律规定。
本节中的任何内容均不得妨碍一方提出交叉索赔或反索赔。

9.其他
----


本许可证代表与本协议主题有关的完整协议。如果本许可证的任何条款被认为是不可执行的,则该条款应仅在使其执行布尔。任何法律或法规规定,合同的语言应被解释为对起草人不利,不得用于解释本许可证对出资人不利。


10。许可证的版本新版本的Mozilla Foundation是许可证管理员。除
10.3节规定外,除许可证管理员外,任何人都无权修改或发布本许可证的新版本。每个版本都有一个可识别的版本号。


10.2。新版本的影响

您可以根据最初收到所涵盖软件的许可证的版本
的条款或根据许可证发布的任何后续版本的条款分发所涵盖的软件


10.3。修改版本

如果您创建的软件不受此许可证的约束,并且您希望为此类软件创建新的许可证,如果重命名许可证并删除对许可证管理员名称的任何引用(但要注意,此类修改的许可证与此许可证不同),则可以创建并使用此许可证的修改版本。分发与次要许可证不兼容的源代码窗体



如果您选择在此版本的许可证条款下分发与次要许可证不兼容的源代码窗体,必须附上本许可证附件B中所述的
通知。


附件A-源代码表单许可通知
----------


本源代码表单受Mozilla Public
许可证第2.0版的条款约束。如果MPL的副本没有随此
文件一起分发,如果不可能或不希望将通知放在特定的
文件中,您可以在http://mozilla.org/mpl/2.0/

然后,您可以将该通知包含在收件人可能会查找到该通知的位置(例如相关目录中的许可证
文件)。

您可以添加其他准确的版权所有权通知。

请注意,这个源代码表单是"与次要许可证不兼容的",正如Mozilla公共许可证2.0版所定义的那样。

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

推荐PyPI第三方库


热门话题
java在Hibernate中从两个具有不同功能的表(postgreSQL)映射一个实体   java jfreechart需要自定义Y轴,以便打印   Java:从外部获取类。罐子   java如何获取Appium服务器日志   具有完全相同内容的java重写函数会导致错误   java消息的类路径是什么。属性(如果在依赖项jar中)   循环/相等的java问题==   java如何使用ionic cordova angularjs将所选图像发送到spring controller以保存到服务器?   库中的java语言环境数据   java从JSON webservice检索安卓中的字节[]   调试如何从Java中的类调试方法?   java将日期字符串切割成变量   无法使用java附加到文件?