科学光束对准,

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如何在数据库中插入行时自动发送电子邮件?   从进程输出读取的Java问题   java质疑StyledDocument和JTextPane之间的关系,以及接口的正确使用   java错误getPlayer(args[0]);   java如何使Spring引导在重新打包的WAR中包含清单文件?   Java中的除法与模   java使用2d数组和JfreeChart制作散点图   java扩展SonarQube FindBugs插件和自定义FindBugs插件   javaspring:hibernate+ehcache   具有不正确的equals和HashCode实现的java HashMap   java Jaspersoft报告网。旧金山。jasperreports。发动机例外:net。旧金山。jasperreports。发动机填满JRepressionEvalException:计算表达式时出错   java如果输入与其变量不匹配,如何添加错误   在java中使用简单数组[]实现队列   无法启动上下文路径/hsx上的java FAIL应用程序