小编bru*_*lin的帖子

将文件的所有单独段落放在单独的行中

我有一个包含序列数据的文件,其中每个新段落(由两个空行分隔)包含一个新序列:

#example

ASDHJDJJDMFFMF
AKAKJSJSJSL---
SMSM-....SKSKK
....SK


SKJHDDSNLDJSCC
AK..SJSJSL--HG
AHSM---..SKSKK
-.-GHH
Run Code Online (Sandbox Code Playgroud)

我想得到一个文件看起来像:

ASDHJDJJDMFFMFAKAKJSJSJSL---SMSM-....SKSKK....SK
SKJHDDSNLDJSCCAK..SJSJSL--HGAHSM---..SKSKK-.-GHH
Run Code Online (Sandbox Code Playgroud)

每个序列长度相同(如果有帮助的话).

我也希望在存储在不同directiories中的多个文件上执行此操作.

我刚刚尝试过

sed -e '/./{H;$!d;}' -e 'x;/regex/!d' ./text.txt
Run Code Online (Sandbox Code Playgroud)

但是这只是删除了整个文件:S

任何帮助都会受到赞赏 - 不必是sed,如果你知道如何在perl或其他东西中做到那么那也很棒.

谢谢.

perl sed text-manipulation

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

使用grep确定字符串的频率

如果我有一个矢量

x <- c("ajjss","acdjfkj","auyjyjjksjj")
Run Code Online (Sandbox Code Playgroud)

并做:

y <- x[grep("jj",x)]
table(y)
Run Code Online (Sandbox Code Playgroud)

我明白了:

y
      ajjss auyjyjjksjj 
          1           1 
Run Code Online (Sandbox Code Playgroud)

但是第二个字符串"auyjyjjksjj"应该将子字符串"jj"计算两次.如何将其从真/假计算中更改为实际计算"jj"的频率?

此外,如果对于每个字符串,可以计算子字符串的频率除以字符串的长度,这将是很好的.

提前致谢.

string grep r frequency

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

在 sed 命令中使用命令行参数

我想在 sed 命令中使用命令行参数,目前我将参数包装在 '' 中。我的命令是:

mycomputer$ sed 's/^\(.\{'$1'\}\)./\1'$2'/' out2.fa 2 A
Run Code Online (Sandbox Code Playgroud)

它本质上查看文件中的一行,并将第二个位置更改为 A。当我对其进行硬编码时,这是有效的,但上面的结果是:

sed: -e expression #1, char 21: Invalid content of \{\}
Run Code Online (Sandbox Code Playgroud)

鉴于文件名在技术上是第一个参数,我还应该使用 $2 和 $3 作为命令行参数吗?

bash command-line sed

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

通过bsub提交时包括bash脚本参数

我有以下shell脚本。

#!/bin/bash --login

#BSUB -q q_ab_mpc_work
#BSUB -J psipred
#BSUB -W 01:00
#BSUB -n 64
#BSUB -o psipred.out
#BSUB -e psipred.err
module load compiler/gnu-4.8.0
module load R/3.0.1
export OMP_NUM_THREADS=4

code=${HOME}/Phd/script_dev/rfpipeline.sh
MYPATH=$HOME/Phd/script_dev/
cd ${MYPATH}
${code} myfile.txt
Run Code Online (Sandbox Code Playgroud)

我可以使用bsub将程序提交到集群:

bsub < myprogram.sh
Run Code Online (Sandbox Code Playgroud)

但是我将程序的最后一行更改为:

${code} $1
Run Code Online (Sandbox Code Playgroud)

在使用命令行参数指定文件的位置,如何将其传递给bsub?

我试过了:

bsub < myprogram.sh myfile.text
Run Code Online (Sandbox Code Playgroud)

但是bsub将不接受myfile.text作为bash参数。

我也尝试过

bsub <<< myprogram.sh myfile.text
./myprogram.sh myfile.text | bsub
bsub "sh ./myprogram.sh myfile.text"
Run Code Online (Sandbox Code Playgroud)

我需要做什么?

bash shell batch-processing

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

自动检索bsub的结果

我正在寻找一些一般性建议而不是编码解决方案。基本上,当通过 bsub 提交作业时,我可以通过指定以下任何一项来检索 Stdin/Stdout 的日志:

bsub -o log.txt      % sends StdOut to log.txt
bsub -u me@email     % sends StdOut to email
Run Code Online (Sandbox Code Playgroud)

这些都很棒,但是我的程序在提交给 bsub 时会创建一个文件夹并存储在远程服务器上。基本上我想

a) 检索文件夹及其内容 b) 作业完成后自动执行此操作

所以我可以在技术上使用scp -r,但是我必须手动执行此操作。如果我在工作完成后收到电子邮件警报,那还不错,但仍然 - 我必须手动执行此操作。

所以到 b):

好吧,我看不到 bsub 检索实际结果的任何特殊标志,只有 StdOut。我我可以有一个脚本来使用sleep并设置工作时间(为了安全起见,可能会有点徘徊),比如

#!/bin/bash

scp myfile.txt server:main/subfolder
ssh bsub < myprogram.sh -u my@email
sleep <job-time>
scp -r server:main/subfolder result_folder 
Run Code Online (Sandbox Code Playgroud)

但是我有点担心被注销等和脚本在工作完成之前终止。

有没有人有什么建议?

我本质上想要一个界面(将来的网站),用户可以在其中提交文件,远程分析文件,在工作开始/完成时向用户发送电子邮件,结果自动检索回本地/网络服务器,用户收到电子邮件说他们可以选择他们的结果。

一步一步!

php bash hpc lsf slurm

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

如何运行"构建installdeps"来安装缺少的先决条件

尝试运行Build.PL文件并获取以下内容,而不是不常见的错误消息:

Checking prerequisites...
  build_requires:
    !  Test::Most is not installed
  recommends:
    *  HTML::TableExtract is not installed
    *  Math::Random is not installed
    *  YAML is not installed

ERRORS/WARNINGS FOUND IN PREREQUISITES.  You may wish to install the versions
of the modules indicated above before proceeding with this installation

Run 'Build installdeps' to install missing prerequisites.
Run Code Online (Sandbox Code Playgroud)

但是当我跑步时:

perl Build installdeps 
Run Code Online (Sandbox Code Playgroud)

我明白了:

Can't open perl script "Build": No such file or directory
Run Code Online (Sandbox Code Playgroud)

谁有任何关于我在这里做错的想法?

perl cpan bioperl

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

如何在sql db2中重命名表?

我试图在db2中重命名一个表,就像这样

rename table schema1.mytable to schema2.mytable
Run Code Online (Sandbox Code Playgroud)

但收到以下错误消息:

the name "mytable" has the wrong number of qualifiers.. SQLCODE=-108,SQLSTATE=42601
Run Code Online (Sandbox Code Playgroud)

这里有什么问题....我正在使用IBM publib文档中的确切语法.

db2 rename db2-luw

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

BLAST 数据库错误:未找到核苷酸数据库的别名或索引文件

我正在尝试运行blastn,然后独立运行SIFT。但是,我遇到了数据库配置问题,因为我收到以下信息:

arron@arron-Ideapad-Z570 ~/Phd/programs/sift4.0.3b $ blastn -query test/lacI.fasta -db db/swissprot/
BLAST Database error: No alias or index file found for nucleotide database [db/swissprot/] in search path [/home/arron/Phd/programs/sift4.0.3b:::]
Run Code Online (Sandbox Code Playgroud)

在其他线程的一些建议之后,我下载了一个蛋白质数据库,例如 swissprot:

wget ftp://ftp.ebi.ac.uk/pub/databases/fastafiles/uniprot/uniprotkb_swissprot.gz

zcat uniprotkb_swissprot.gz | awk '{if (/^>/) { print ">" $2} else { print $_}}' > swissprot.fa
Run Code Online (Sandbox Code Playgroud)

然后使用 makeblastdb 创建一个blast 数据库:

arron@arron-Ideapad-Z570 ~/Phd/programs/sift4.0.3b/db/swissprot $ makeblastdb -in swissprot.fa -dbtype prot

Building a new DB, current time: 10/27/2014 13:18:57
New DB name:   swissprot.fa
New DB title:  swissprot.fa
Sequence type: Protein
Keep Linkouts: T …
Run Code Online (Sandbox Code Playgroud)

bioinformatics blast

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

添加2x2矩阵与NaNs

更多的一般MATLAB问题而不是寻找编程建议 - 如果我有:

y = cellfun(@(x)sum(x(:)), Z, 'un', 0);
Run Code Online (Sandbox Code Playgroud)

NaN在每个单元矩阵中存在's'和实数的组合时,当我对每个单元格中的所有矩阵的所有元素求和时,我总是得到total = NaN因为那里NaN有,或者它们会被忽略而只是求和实数.我问的原因是因为我得到了:

y = [NaN] [NaN] [NaN]
    [NaN] [NaN] [NaN]
    [NaN] [NaN] [NaN]
Run Code Online (Sandbox Code Playgroud)

示例单元矩阵(单元元素)将是:

x{1,1} = NaN 2   3
         4   5   6
         7   8   9
Run Code Online (Sandbox Code Playgroud)

所以我希望第一个元素y是:

y{1,1} = 44
Run Code Online (Sandbox Code Playgroud)

我怎么没有得到这个?

matlab sum nan

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

使用 grep/sed/perl 在单行上提取多个项目

我有一个巨大的文本文件,有点像这样:

=?accession=P12345;=?position=999;
=?accession=Q19283;=?position=777;
=?accession=A918282;=?position=888;
Run Code Online (Sandbox Code Playgroud)

我想提取accession=和之间的术语;,然后也提取position=和之间的术语;

这样我就得到:

P12345 999
Q19283 777
A918282 888
Run Code Online (Sandbox Code Playgroud)

我需要在之间进行 grep 的字符串确实变得更加复杂,所以我想象了一个硬编码的解决方案。

我知道我可以采用“两个字符串之间的 grep”方法:

grep -Po 'accession= \K.*(?= ;)'
Run Code Online (Sandbox Code Playgroud)

但我不知道如何使输入的同一行中的后续提取也出现在与输出的同一行上。

我真的不介意这是如何完成的,只要我可以从 Linux 命令行调用它即可。

谢谢。

linux bash perl sed tr

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