科学光束对准,

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无法从spring resttemplate访问sms网关   使用spark上下文方法参数的java并行化集合不正确   java中ReadLock的并发检查副本   java基于属性比较两个列表是否具有相同的元素   字符串Java文本块:缩进前缀中的制表符和空格的混合   java如何将带有@SpringBootApplication的maven模块作为测试范围中的依赖项添加到另一个maven模块   我需要一些关于在Java中使用2个jar文件的帮助   mysql JPA Java Spring Boot执行查找/连接表   java对话框选择具有特定名称的文件   java如何修复Spring工具套件4中的端口8080错误?   Java中的apache poi Excel阅读器   java如何在tomcat访问日志中记录线程上下文值   java有一种方法可以创建类<T>的实例,该类将类作为传递泛型的构造函数中的参数   默认情况下,java GORM onetomany映射执行即时抓取   java不能在安卓中接受全局变量   统计系统的java MongoDB异步驱动程序排名   java如何解析:无法解析插件“org.springframework.ide.eclipse.ui”?   用Java从一副牌中随机抽取5张牌   javaapachecamel动态消费者   java如何克服使用Flood Fill 4算法时的“薄边界”问题?