我想用 , 替换我的所有文件中的所有标题(以 开头>)>{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)
我哪里弄错了??
我有一个清单:
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) 我有以下(大)文件,其中包含 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 个线程的一部分,那么我如何修改它(使用parallel或xargs?),以便它在我想要指定的尽可能多的线程上运行?
我有以下两个文件:
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列中),并line在allids.txt文件名中写入每个行$line.
我的方法是使用一个简单的grep:
while read line; do …Run Code Online (Sandbox Code Playgroud) 我想写一个函数,它接受一个数字和列表列表,它们也可以包含数字和列表,依此类推......,并返回列表中某处的总数量.
示例:[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
我正在编写一个脚本,将多个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行并交换文件格式不起作用...而且,我希望有一个数字打印多少个文件已被转换.
干杯