这是一个关于更有效的代码设计的问题:
假设三个对齐的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) 假设一个包含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中实现它听起来比实际更容易.)
假设一个文件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) 假设一个脚本启动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包(例如MyPackage
),它由几个模块(例如,MyModule1.py
和MyModule2.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)
这可以用一个命令完成吗?
假设通过 R 库networkD3生成网络图。进一步假设您可以将该网络图保存为外部独立 HTML 文件(请参阅输出部分),或者通过 R 库htmlwidgets呈现它。
您是否有任何方法可以将生成的网络导出为矢量图形(pdf 或 svg),无论是在 R 内部还是外部?
注意:我知道 D3.js 库的主要目的不是生成静态数据可视化,但肯定有一种方法可以使用/转换 D3 网络图进行印刷出版。
编辑 1:按照CJ Yetman 的建议,我通过 Firefox Developer Edition 检查了 HTML 文件的 DOM 属性。使用此方法,可以具体查看 SVG 属性(请参阅此示例),但它们大多是空的。但是,如何如 CJ Yetman 所示“从 DOM 中提取 SVG”?
假设一个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) 如果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解决方案.
假设一个多行文本文件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) 假设我希望在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:
为了澄清我的问题,我不是在寻找一种替代方法来格式化数据帧的硬编码(例如通过用空格隔开单词来对齐两行).相反,我正在寻找的是一种方法,例如,按行指定数据框.
假设一个字符串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的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 ×6
python-2.7 ×3
r ×3
string ×3
awk ×2
bash ×2
boolean ×2
algorithm ×1
d3.js ×1
dataframe ×1
dna-sequence ×1
dplyr ×1
format ×1
heredoc ×1
herestring ×1
list ×1
lowercase ×1
matching ×1
networkd3 ×1
optimization ×1
package ×1
pypi ×1
regex ×1
sorting ×1
svg ×1
tkinter ×1
unit-testing ×1
while-loop ×1