小编ror*_*oro的帖子

fasta 文件:用文件名替换标题

我想用 , 替换我的所有文件中的所有标题(以 开头>>{filename},然后将它们连接起来*.fastadirectory

我的内容 directory

speciesA.fasta
speciesB.fasta
speciesC.fasta
Run Code Online (Sandbox Code Playgroud)

文件示例, speciesA.fasta

>protein1 description
MJSUNDKFJSKFJSKFJ
>protein2 anothername
KEFJKSDJFKSDJFKSJFLSJDFLKSJF
>protein3 somewordshere
KSDAFJLASDJFKLAJFL
Run Code Online (Sandbox Code Playgroud)

我想要的输出(仅限speciesA.fasta现在):

>speciesA
MJSUNDKFJSKFJSKFJ
>speciesA
KEFJKSDJFKSDJFKSJFLSJDFLKSJF
>speciesA
KSDAFJLASDJFKLAJFL
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

for file in *.fasta; do var=$(basename $file .fasta) | sed 's/>.*/>$var/' $var.fasta >>$var.outfile.fasta; done
Run Code Online (Sandbox Code Playgroud)

但我得到的只是

>$var
MJSUNDKFJSKFJSKFJ
>$var
KEFJKSDJFKSDJFKSJFLSJDFLKSJF

[and so on ...]
Run Code Online (Sandbox Code Playgroud)

我哪里弄错了??

bash sed fasta

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

Python:将第一个元素更改为列表本身

我有一个清单:

mylist = [1,2,3]
Run Code Online (Sandbox Code Playgroud)

我想将第一个元素更改为列表,因此列表中的列表.我的第一次尝试:

mylist + mylist[1:]
Run Code Online (Sandbox Code Playgroud)

给我

[1, 2, 3, 2, 3] # not what I want
Run Code Online (Sandbox Code Playgroud)

我的第二次尝试

mylist[0]=mylist
Run Code Online (Sandbox Code Playgroud)

给我

[[...], 2, 3] # is this an infinite list?
Run Code Online (Sandbox Code Playgroud)

虽然我想要

[[1,2,3], 2, 3]
Run Code Online (Sandbox Code Playgroud)

python list

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

带多线程的 Grep

我有以下(大)文件,其中包含 30233088 个字符串:

head mystringfile.txt:

GAATGAACACGAAGAA
GAATGAACACGAAGAC
GAATGAACACGAAGAG
GAATGAACACGAAGCA
Run Code Online (Sandbox Code Playgroud)

cat sequence.txt

AAATAGAGGGCGGTCCAGGCGTGTCGAAACACTGGGTCCAGGGCAAGAGCGGTTCGGGTGTCAGGAAAGCCCCCAAGGGGGTTCGCGCGGTTTGCAGTGAGGTAGAGGCCGGTGTATGGGTAGACAATTGGGGTCCCAAAGAAAAAGGCTCGTCCAACATCATAATAAACCCAAGCACGATAAAAAGCAAACGCAGACTTCAATAGGGTACGAGCAATTGTGGCAGGGTGCTCGCTGTCAGGGTTAGATCTTCTTGGAGTCGCGTCGCTCGGGGGGGCAAGGCCAACGTAAGATCGTGGCTGATCGCTGGCAATGCGGTCGGTTGGGTGGTCGCTAGTAGGGGCACGGCGGTCTCTTATGGCGTCGTAAAATGCGTCTCCAAAGCGAAAAGGGGCGGCAGACAAGTCACCGGGCAAGCTTAGAGGTCTGGGGCCCGTGGCTTTAGGGGAATGAACACGAAGACGCGAAACGAAGTCGTGTTTCTTGTTGGCTGTAGAGGGGAAAACCGTCTGGGGCGATCTGGCGTAGTAGTGCGTGTCTTGCAGTGAGCTCCCCGTCCGTAAGGATTCGCAGGAATCCTGCGTGAAGCTCGGTCGTCTCGGCCGTGTCTCGGGGTTTGATTGCGGGTTCAGATTGGAAAGGTCTCCTCGGGTCGTTTGCTGCATTTGCTCGCAACCCTGACGTGAAAGGGGTGAGCTGTCTCCAATCTGCCACGCTGGGTGTTGCGTCGTCAGTAAAAGACTTGGTCAAGCTGGGACCTCGCAAGATCGCGAGAGGGTTAAGCACAAAAGGTATGGCGAAGCTCCCGGGTGCTCTTGTGGCCACCCAGAATCATGGTGACGTAGGTTTTGCGAAGCCATCAAAAATTCAGGCGGCAAAACGAGCCAGTAGGGTCCTGGGCAGCTGGGCTTGTAGTGGGTAGGCGGCAAAACGCAAAGAATGAACACGAAGCAACTCCGTAGTGTGACGGGGGTTCTGACAAACGTCCTGCAAGAAGTTCGTCTTGGG
Run Code Online (Sandbox Code Playgroud)

我需要grep在另一个序列文件中确定匹配的位置,我执行以下操作:

while read line; do grep -b -o $line sequence.txt >>sequence.txt.count; done<mystringfile.txt
Run Code Online (Sandbox Code Playgroud)

像这样运行代码当然需要很长时间并且只运行 1 个线程的一部分,那么我如何修改它(使用parallelxargs?),以便它在我想要指定的尽可能多的线程上运行?

parallel-processing awk grep xargs

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

从文件中读取行,在第二个文件中读取grep,并为每个$行输出一个文件

我有以下两个文件:

sequences.txt

158333741       Acaryochloris_marina_MBIC11017_uid58167 158333741       432     1       432     COG0001 0
158339504       Acaryochloris_marina_MBIC11017_uid58167 158339504       491     1       491     COG0002 0
379012832       Acetobacterium_woodii_DSM_1030_uid88073 379012832       430     1       430     COG0001 0
302391336       Acetohalobium_arabaticum_DSM_5501_uid51423      302391336       441     1       441     COG0003 0
311103820       Achromobacter_xylosoxidans_A8_uid59899  311103820       425     1       425     COG0004 0
332795879       Acidianus_hospitalis_W1_uid66875        332795879       369     1       369     COG0005 0
332796307       Acidianus_hospitalis_W1_uid66875        332796307       416     1       416     COG0005 0
Run Code Online (Sandbox Code Playgroud)

allids.txt

COG0001
COG0002
COG0003
COG0004
COG0005
Run Code Online (Sandbox Code Playgroud)

现在我想读取每一行allids.txt,搜索所有行sequences.txt(特别是在第7列中),并lineallids.txt文件名中写入每个行$line.

我的方法是使用一个简单的grep:

while read line; do …
Run Code Online (Sandbox Code Playgroud)

bash awk grep

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

Python:计算列表列表中的整体元素

我想写一个函数,它接受一个数字和列表列表,它们也可以包含数字和列表,依此类推......,并返回列表中某处的总数量.

示例:[1,[[[0,2],7,3],5,[1,2]],3]其中包含9个数字.

到目前为止这是我的代码:

test=[1,[[[0,2],7,3],5,[1,2]],3]
def flatten(mylist):
    counter = 0
    for i in range(len(mylist)):
        if type(mylist[i]) == int:
            counter += 1
        if type(mylist[i]) == list:
            [item for sublist in mylist[i] for item in sublist]
            counter += 1
    return counter
Run Code Online (Sandbox Code Playgroud)

我想我需要recursivley压扁子列表.但我得到错误:TypeError: 'int' object is not iterable

python

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

为什么我的python脚本会自行删除?

我正在编写一个脚本,将多个fastq文件转换为fasta和qual.总是当我运行它时,脚本之后有零个字节.

import sys
import re
import os
import fileinput
from Bio import SeqIO
from Bio.Alphabet import IUPAC

Directory = "/users/etc"
def process(Directory):
    filelist = os.listdir(Directory)
    for f in filelist:
        SeqIO.convert(f, "fastq", f.replace(".fastq",".qual"), "qual", alphabet=IUPAC.ambiguous_dna)

my_directory = "/users/etc"
process(my_directory)
Run Code Online (Sandbox Code Playgroud)

我同时忙于同时执行fastq到fasta和qual转换 - 只是复制SeqIO.convert行并交换文件格式不起作用...而且,我希望有一个数字打印多少个文件已被转换.

干杯

python biopython

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

标签 统计

python ×3

awk ×2

bash ×2

grep ×2

biopython ×1

fasta ×1

list ×1

parallel-processing ×1

sed ×1

xargs ×1