小编Mic*_*udl的帖子

改进DNA比对去除的代码设计

这是一个关于更有效的代码设计的问题:

假设三个对齐的DNA序列(seq1,seq2和seq3;它们是每个串)代表两个基因(gene1和gene2).相对于比对的DNA序列,已知这些基因的起始和终止位置.

# Input
align = {"seq1":"ATGCATGC", # In seq1, gene1 and gene2 are of equal length
         "seq2":"AT----GC",
         "seq3":"A--CA--C"}
annos = {"seq1":{"gene1":[0,3], "gene2":[4,7]},
         "seq2":{"gene1":[0,3], "gene2":[4,7]},
         "seq3":{"gene1":[0,3], "gene2":[4,7]}}
Run Code Online (Sandbox Code Playgroud)

我希望从比对中去除间隙(即破折号)并保持基因起始和终止位置的相对关联.

# Desired output
align = {"seq1":"ATGCATGC", 
         "seq2":"ATGC",
         "seq3":"ACAC"}
annos = {"seq1":{"gene1":[0,3], "gene2":[4,7]},
         "seq2":{"gene1":[0,1], "gene2":[2,3]},
         "seq3":{"gene1":[0,1], "gene2":[2,3]}}
Run Code Online (Sandbox Code Playgroud)

获得所需的输出并不像看起来那么简单.下面我为这个问题写了一些(行编号)伪代码,但肯定有更优雅的设计.

1  measure length of any aligned gene  # take any seq, since all seqs aligned
2  list_lengths = list of gene lengths  # order is important
3  for seq in alignment
4      outseq …
Run Code Online (Sandbox Code Playgroud)

python algorithm optimization dna-sequence

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

按bash中的行数对文本列进行排序

假设一个包含x个字符串列的文本文件.

$cat file # where x=3
foo  foo  foo
bar  bar  bar
     baz  baz
     qux
Run Code Online (Sandbox Code Playgroud)

bash中是否有一种方法可以按照它们包含的数字文本字符串(即填充的行)对这些列进行排序,同时保持每列中行的内部顺序?

$sought_command file
foo  foo  foo
bar  bar  bar
baz  baz
qux
Run Code Online (Sandbox Code Playgroud)

基本上,具有最多行数的列是第一个,具有第二多行数的列是第二个,等等.

(这个任务很容易实现R,但我想知道通过bash的解决方案.)

编辑1:

以下是一些其他详细信息:每列包含至少一个文本字符串(即一个填充行).文本字符串可以构成任何字母数字组合并且具有任何长度(但显然不包含空格).输出列不得插入空行.列分隔符没有先验限制,只要它在整个表中保持一致即可.

此任务所需的只是按原样移动列,以便按列长度排序.(我知道在bash中实现它听起来比实际更容易.)

sorting string bash awk multiple-columns

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

while 循环 bash 中变量的行

假设一个文件file有多行。

$ cat file
foo
bar
baz
Run Code Online (Sandbox Code Playgroud)

进一步假设我希望用 while 循环遍历每一行。

$ while IFS= read -r line; do
$   echo $line
$   # do stuff
$ done < file
foo
bar
baz
Run Code Online (Sandbox Code Playgroud)

最后,请假设我希望传递存储在变量中的行而不是存储在文件中的行。如何循环保存为变量的行而不收到以下错误?

$ MY_VAR=$(cat file)
$ while IFS= read -r line; do
$   echo $line
$   # do stuff
$ done < $(echo "$MY_VAR")
bash: $(echo "$MY_VAR"): ambiguous redirect
Run Code Online (Sandbox Code Playgroud)

bash heredoc while-loop herestring

6
推荐指数
2
解决办法
5669
查看次数

用于调用TKinter GUI的Unittest

假设一个脚本启动TKinter GUI(例如scripts/launch_GUI.py),并且是PyPI包的一部分(例如MyPackage).

.
??? appveyor.yml
??? MyPackage
?   ??? TkOps.py
?   ??? CoreFunctions.py
??? README.md
??? requirements.txt
??? scripts
?   ??? launch_CLI.py
?   ??? launch_GUI.py
??? setup.py
??? tests
    ??? MyPackage_test.py
Run Code Online (Sandbox Code Playgroud)

启动脚本非常简约:

#!/usr/bin/env python2
if __name__ == '__main__':
    import sys, os
    sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'MyPackage'))
    import TkOps
    TkOps.start_GUI()
Run Code Online (Sandbox Code Playgroud)

什么单元测试,你会建议,以评估是否使用TKinter GUI被正确启动时启动launch_GUI.py

注意:我只想评估启动脚本是否完成其工作并启动GUI,而不是用户是否可以与GUI交互.

python user-interface unit-testing tkinter python-2.7

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

Python - 在安装之前和之后导入包模块

假设一个Python包(例如MyPackage),它由几个模块(例如,MyModule1.pyMyModule2.py)和一组单元测试(例如,in MyPackage_test.py)组成.

.
??? MyPackage
?   ??? __init__.py
?   ??? MyModule1.py
?   ??? MyModule2.py
??? README.md
??? requirements.txt
??? setup.py
??? tests
    ??? MyPackage_test.py
Run Code Online (Sandbox Code Playgroud)

我想导入的功能MyModule1.py的单元测试中MyPackage_test.py.具体来说,我想在安装之前和之后导入函数setup.py install MyPackage.

目前,我使用两个单独的命令,具体取决于软件包安装之前或之后的状态:

# BEFORE
import sys, os
sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'MyPackage'))

# AFTER
import MyPackage
Run Code Online (Sandbox Code Playgroud)

这可以用一个命令完成吗?

python package python-import pypi python-2.7

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

将 networkD3 图形导出为矢量图形

假设通过 R 库networkD3生成网络图。进一步假设您可以将该网络图保存为外部独立 HTML 文件(请参阅输出部分),或者通过 R 库htmlwidgets呈现它。

您是否有任何方法可以将生成的网络导出为矢量图形(pdf 或 svg),无论是在 R 内部还是外部?

注意:我知道 D3.js 库的主要目的不是生成静态数据可视化,但肯定有一种方法可以使用/转换 D3 网络图进行印刷出版。

编辑 1:按照CJ Yetman 的建议,我通过 Firefox Developer Edition 检查了 HTML 文件的 DOM 属性。使用此方法,可以具体查看 SVG 属性(请参阅此示例),但它们大多是空的。但是,如何如 CJ Yetman 所示“从 DOM 中提取 SVG”

svg r vector-graphics d3.js networkd3

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

R - 测试多列数据帧的哪些行包含关键字

假设一个dat带有 p 值的数据框。

dat <- data.frame(var1 = c("0.12", "0.12", "0.12*"), 
                  var2 = c("0.12", "0.12", "0.12"), 
                  var3 = c("0.12", "0.12", "0.12"))
Run Code Online (Sandbox Code Playgroud)

如何测试哪些行包含星号?

尝试1:

dat %>%
+ mutate(anyTRUE = if_any(.rows = contains('\\*'), isTRUE))
   var1 var2 var3 anyTRUE
1  0.12 0.12 0.12    TRUE
2  0.12 0.12 0.12    TRUE
3 0.12* 0.12 0.12    TRUE
Run Code Online (Sandbox Code Playgroud)

boolean r dplyr

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

如果字符串不在一个或多个列表中,则引发错误

如果target_string没有出现在列表列表的一个或多个列表中,我希望手动引发错误.

if False in [False for lst in lst_of_lsts if target_string not in lst]:
    raise ValueError('One or more lists does not contain "%s"' % (target_string))
Run Code Online (Sandbox Code Playgroud)

当然,有一个比上面指定的更多的Pythonic解决方案.

python boolean list

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

awk中不区分大小写的字符串匹配

假设一个多行文本文件file,其中一些行以空格开头。

$ cat file
foo Baz
  baz QUX
    QUx Quux
BaZ Qux
BazaaR
Run Code Online (Sandbox Code Playgroud)

进一步假设我希望将所有以关键字(例如“ baz ”)开头的行转换为小写字母,无论(a)该关键字是否以小写或大写字母(或其任何组合)本身编写,并且( b) 该关键字前面有空格。

$ cat file | sought_command
foo Baz        # not to lowercase (line does not start with keyword)
  baz qux      # to lowercase
    QUx Quux
baz qux        # to lowercase
BazaaR         # not to lowercase (line does not start with keyword, but merely with a word containing the keyword)
Run Code Online (Sandbox Code Playgroud)

我相信awk是做这件事的工具,但我不确定如何实现关键字匹配的不区分大小写。

$ cat file | awk '{ if($1 ~ /^ …
Run Code Online (Sandbox Code Playgroud)

string awk case-sensitive lowercase matching

4
推荐指数
2
解决办法
8972
查看次数

R中人类可读的硬编码数据帧

假设我希望在R中硬编码数据帧.

my_df = data.frame(list(Name=c("foo", "bar", "baz", "qux"), 
              Result=c("Hello", NA, "foobar", "World")))
Run Code Online (Sandbox Code Playgroud)

如果数据帧更长(例如,如果它包括几十行),则不会立即直观地baz与之相关foobar(即,这两个值共享同一行).

是否有一种在视觉上更加人性化的方式对R中的数据帧进行硬编码?

编辑1:

为了澄清我的问题,我不是在寻找一种替代方法来格式化数据帧的硬编码(例如通过用空格隔开单词来对齐两行).相反,我正在寻找的是一种方法,例如,按行指定数据框.

format r dataframe human-readable

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

确定字符串中字符重复的长度和位置

假设一个字符串s可能包含几个相邻的破折号.为简单起见,让我们将这些事件中的每一个称为"重复动机".例如,以下字符串s包含五个重复的破折号动机,即长度为3,2,6,5和1.

s = "abcde---fghij--klmnopq------rstuvw-----xy-z"
Run Code Online (Sandbox Code Playgroud)

我试图提出Python代码,它返回各自的长度和每个重复动机的字符串中的相应位置.优选地,代码返回元组列表,每个元组具有格式(长度,位置).

sought_function(s)
# [(3,5), (2,13), (6,22), (5,34), (1,41)]
Run Code Online (Sandbox Code Playgroud)

您对如何启动此代码有任何建议吗?

python string python-2.7

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

re.split除非在Python中跟随字符一个整数

在下面的示例中,通过Python的re.split()将字符串转换为列表,使用单个空格作为分隔符.如果拆分的以下字符是整数,则不得发生拆分.我尝试的代码对所有元素的第一个字符执行了额外的错误拆分> 1.

哪个正则表达式会生成所需的输出?

概念输入:

inString = "key=string key=integer key=(float float float) key=float"
Run Code Online (Sandbox Code Playgroud)

期望的输出:

outList = ['key=string', 'key=integer', 'key=(float float float)', 'key=float']
Run Code Online (Sandbox Code Playgroud)

试图代码:

outList = re.split("\s([^0-9].*?)", inString)
Run Code Online (Sandbox Code Playgroud)

尝试代码的输出:

['key=abcde', 'k', 'ey=12345', 'k', 'ey=(0.1234 1.2345 2.3456)', 'k', 'ey=0.1234']
Run Code Online (Sandbox Code Playgroud)

python regex

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