小编a3n*_*3nm的帖子

如何计算文本字符串的多序列对齐方式

我正在编写一个程序,它必须计算一组字符串的多序列对齐.我想在Python中这样做,但如果更实用,我可以使用外部软件或其他语言.数据不是特别大,我没有强大的性能要求,我可以容忍近似值(即我只需要找到足够好的对齐).唯一的问题是字符串是常规字符串(即UTF-8字符串可能带有应该被视为常规字符的换行符); 它们不是DNA序列或蛋白质序列.

我可以在生物信息学中找到大量的工具和信息,具有特定的复杂文件格式和一系列我不需要的功能,但是对于简单的字符串情况,很难找到软件,库或示例代码.我可以重新实现这个问题的许多算法中的任何一个,或者将我的字符串编码为DNA,但必须有更好的方法.你知道任何解决方案吗?

谢谢!

python string text alignment sequence

20
推荐指数
2
解决办法
1万
查看次数

不要将连续匹配的上下文与grep合并

如果我运行grep -C 1 match以下文件:

a
b
match1
c
d
e
match2
f
match3
g
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

b
match1
c
--
e
match2
f
match3
g
Run Code Online (Sandbox Code Playgroud)

如您所见,由于连续匹配"match2"和"match3"的上下文重叠,因此它们会合并.但是,我更愿意为每个匹配获得一个上下文描述,可能在上下文报告中复制输入行.在这种情况下,我想要的是:

b
match1
c
--
e
match2
f
--
f
match3
g
Run Code Online (Sandbox Code Playgroud)

实现这一目标的最佳方法是什么?我宁愿解决方案,足够一般是平凡适用于其他grep选项(不同的值-A,-B,-C,或完全不同的标志).理想情况下,我希望有一个聪明的方法来做到这一点grep....

grep matching

8
推荐指数
1
解决办法
571
查看次数

为 Firefox 设计 HTML5 摘要箭头样式

我想在 Firefox 上使用 HTML5摘要元素。默认情况下,该元素的样式为三角形箭头(请参阅此处的示例)。我想改变这个箭头的颜色。这个问题解释了如何为 Chrome 做到这一点,但经过测试,它不适用于 Firefox。

有没有办法用 Firefox 更改摘要元素的箭头颜色?

html css firefox

7
推荐指数
2
解决办法
7234
查看次数

使用Stanford POS Tagger获取多个标签

我正在使用Stanford POS Tagger进行POS标记.标记器仅为输入句子返回一个可能的标记.例如,当提供输入句子"小丑哭泣"时,POS标签器产生(错误的)"The_DT clown_NN weeps_NNS ._.".

但是,我的应用程序将尝试解析结果,并可能拒绝POS标记,因为无法解析它.因此,在此示例中,它将拒绝"The_DT clown_NN weeps_NNS ._".但会接受"The_DT clown_NN weeps_VBZ ._." 我假设它是解析器的低置信度标记.

因此,我希望POS标记器为每个单词的标记提供多个假设,并通过某种置信度值进行注释.通过这种方式,我的应用程序可以选择具有最高置信度的POS标记,从而实现针对其目的的有效解析.

我发现没有办法要求Stanford POS Tagger为每个单词(甚至整个句子)产生多个(最好的)标记假设.有没有办法做到这一点?(或者,我也可以使用另一个具有相同性能的POS标记器来支持此功能.)

nlp pos-tagger stanford-nlp

6
推荐指数
1
解决办法
567
查看次数

Python 2和3中嵌套异常处理程序中不带参数的"raise"范围

请考虑以下最小示例:

try:
  raise Exception('foo')
except Exception:
  try:
    raise Exception('bar')
  except Exception:
    pass
  raise 
Run Code Online (Sandbox Code Playgroud)

使用Python 2运行此代码会引发异常栏,使用Python 3运行它会引发异常foo.然而,Python 2Python 3的文档都指出,raise没有表达式会引发"当前作用域中活动的最后一个异常".为什么Python 2和3中的范围不同?差异记录在哪里?

python scope exception python-2.7 python-3.x

6
推荐指数
1
解决办法
298
查看次数

通过坐标提取PDF页面的区域

我正在寻找一种工具来提取1页PDF文件的给定矩形区域(按坐标)并生成具有指定区域的1页PDF文件:

# in.pdf is a 1-page pdf file
extract file.pdf 0 0 100 100 > out.pdf
# out.pdf is now a 1-page pdf file with a page of size 100x100
# it contains the region (0, 0) to (100, 100) of file.pdf
Run Code Online (Sandbox Code Playgroud)

我可以将PDF转换为图像并使用convert,但这意味着生成的PDF将不再是矢量的,这是不可接受的(我希望能够缩放)。

理想情况下,我想使用命令行工具或Python库执行此任务。

谢谢!

python pdf command-line extract crop

5
推荐指数
2
解决办法
3833
查看次数

在常量字符串上应用bash字符串运算符

我正在尝试在常量字符串上使用bash字符串运算符.例如,您可以对变量$ foo执行以下操作:

$ foo=a:b:c; echo ${foo##*:}
c
Run Code Online (Sandbox Code Playgroud)

现在,如果"a:b:c"字符串是常量,我想有一个更简洁的解决方案,如:

echo ${"a:b:c"##*:}
Run Code Online (Sandbox Code Playgroud)

但是,这不是有效的bash语法.有没有办法执行此操作?

[我需要这样做的原因(而不是硬编码替换的结果,即"c"这里)是因为我有一个命令模板,其中"%h"占位符在运行命令之前被某些东西替换; 取代的结果被bash视为常数.]

string bash

5
推荐指数
1
解决办法
639
查看次数

为什么Java反序列化受CPU约束?

我有一个Java程序,它将数据准备到内存中相当复杂的大数据结构(几GB)并将其序列化到磁盘,另一个程序读取内存中的序列化数据结构.我惊讶地注意到反序列化步骤非常慢,并且它受CPU限制.(100%的CPU使用率,top但只读取3到5 MB/s iotop,这对于硬盘驱动器上的顺序读取来说非常低).CPU是最新的(Core i7-3820),结构适合内存,没有配置交换空间.

为什么会这样?是否有另一种方法可以在Java中序列化没有CPU作为瓶颈的对象?

这是反序列化代码,如果重要的话:

FileInputStream f = new FileInputStream(path);
ObjectInputStream of = new ObjectInputStream(f);
Object obj = of.readObject();
Run Code Online (Sandbox Code Playgroud)

java performance serialization deserialization

5
推荐指数
1
解决办法
2369
查看次数

在Python中格式化SQL查询而不执行它

Python拥有与数据库交互的各种库,这提供了一种构建SQL查询的好方法,而不必担心SQL注入.例如,使用sqlite3:

for t in [('2006-03-28', 'BUY', 'IBM', 1000, 45.00),
          ('2006-04-05', 'BUY', 'MSOFT', 1000, 72.00),
          ('2006-04-06', 'SELL', 'IBM', 500, 53.00),
         ]:
    c.execute('insert into stocks values (?,?,?,?,?)', t)
Run Code Online (Sandbox Code Playgroud)

麻烦的是,我不想执行查询,我只是想格式化它并将查询作为字符串.我想我可以自己逃避,但这不是一个非常优雅的解决方案.必须有一种方法来获取格式化的查询,而无需实际连接到数据库并运行它们.

(上下文是我正在编写一个过滤器,它从输入中准备一系列SQL语句,但我不想在特定数据库上运行它们,只是保存它们以供日后使用.)

python sql sqlite code-injection prepared-statement

2
推荐指数
1
解决办法
308
查看次数

脚本使用find来计算代码行数

我正在尝试创建一个shell脚本,它将计算一个文件夹中的代码行数.

我懂了:

h=find . -type f -name \*.[h]* -print0 | xargs -0 cat | wc -l
m=find . -type f -name \*.[m]* -print0 | xargs -0 cat | wc -l

expr $m + $h
Run Code Online (Sandbox Code Playgroud)

但是当我试图运行它时,我得到了这个:

lines-of-code: line 6: .: -t: invalid option
.: usage: . filename [arguments]
   0
lines-of-code: line 7: .: -t: invalid option
.: usage: . filename [arguments]
   0
+
Run Code Online (Sandbox Code Playgroud)

我知道我必须做一些事情让它在我所在的特定文件夹上运行.这甚至可能吗?

bash

1
推荐指数
1
解决办法
2844
查看次数