科学光束对准,

sciencebeam-alignment的Python项目详细描述


科学光束对准

License: MIT

为ScienceBeam项目提供序列对齐实用程序功能。

先决条件

  • python 2或3

API

序列匹配器

python的SequenceMatcherfuzzywuzzyStringMatcher提供。

在这方面,sciencebeam-alignment仅仅提供了一个带有回退的包装器。

wordsequencematcher

上述SequenceMatcher的包装,但仅在字级标记上匹配。

它目前只实现get_matching_blocks

它的主要优点是对于长文本来说速度更快,因为它不需要匹配单个字符。它不推荐用于短文本,因为在短文本中,字符级对齐可能更可取。

匹配结果示例:

>>>fromsciencebeam_alignment.word_sequence_matcherimport(...WordSequenceMatcher...)>>>WordSequenceMatcher(a='word1',b='word2').get_matching_blocks()[]>>>WordSequenceMatcher(a='a word1 b',b='x word1 y').get_matching_blocks()[(2,2,5)]

GlobalSequenceMatcher和LocalSequenceMatcher

GlobalSequenceMatcher and LocalSequenceMatcher实现了Needleman-Wunschglobal alignment以及Smith-Waterman局部对齐算法。这个实现有点受到python-alignment的启发。

它确实实现了get_matching_blocks以匹配python的SequenceMatcher

通过传入一个计分对象,结果可能会受到影响(例如,差距可能会更大)。

它还提供了使用Cython的优化实现。优化的级别取决于传入序列的类型和评分。最快的是整数序列和简单的评分。

>>>fromsciencebeam_alignment.alignimportLocalSequenceMatcher,SimpleScoring>>>DEFAULT_SCORING=SimpleScoring(match_score=3,mismatch_score=-1,gap_score=-2)>>>LocalSequenceMatcher(a='a word1 b',b='x word2 y',scoring=DEFAULT_SCORING).get_matching_blocks()[(1,1,5),(7,7,1),(9,9,0)]

要检查是否启用了快速实现:

>>>fromsciencebeam_alignment.alignimportnative_enabled>>>native_enabledTrue

开发

可以使用Docker(默认)或虚拟环境进行开发。

所有命令都可以通过make获得。

使用Docker开发

生成并运行测试:

make build test

或用于ci:

make ci-build-and-test

使用虚拟环境开发

make前缀为dev-的目标用于虚拟环境。

这要求您已经安装了python。

设置(虚拟环境)

make dev-venv

要更新依赖项:

make dev-install

cython(虚拟环境)

使用cython编译代码:

make dev-cython-clean dev-cython-compile

测试(虚拟环境)

make dev-test

或:

make dev-watch

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

推荐PyPI第三方库


热门话题
java如何克服带有空值的不可空bean级验证   “此行有多个标记”的authenticateUser上的java MySQLConnection错误   java处理Jackson异常   java Netbeans编辑器如何知道文件在撤消后不会被修改?   目标C相当于Java的ArrayList   java当需要int时,可以将short传递给方法调用吗?   drawString()方法上的java MouseListener   java服务器socket是执行此操作的最佳选项   java需要单个匹配bean,但找到了2:org。springframework。网状物servlet。mvc。方法注释。RequestMappingHandlerMapping   如何在Java中执行Windows命令?   安卓应用程序的java文件主机   java将所有spring引导属性都设置在内。将yml文件转换为系统属性   Java邮件中的html内联链接在邮件客户端中不起作用   Java二进制文件的bazel版本控制   java如何在自定义ListView中使用Intent   java(Spring MVC+Hibernate 4+Test 4)自动连线DAO返回NULL   java一次add()调用可以在Solr服务器中索引多少文档?   java如何获取Avro GenericRecord大小