Я нахожусь в ситуации, когда у меня есть большое количество файлов. Мне нужно объединить эти файлы на основе совпадающих частей их имен. Я должен объединить любой из 5 файлов с именем Streptococcus_salivarius и любой из 10 файлов с именем Streptococcus_thermophilus для каждого номера ATGC008.COGXXXX, а затем создать новый файл из этих слияний. Каталог, содержащий файлы и их схему именования, выглядит как this , а отдельный файл будет выглядеть как this .
. Я могу довольно легко конвертировать файлы в формат .fasta. если какое-либо решение требует этого.
Сначала я использовал более ручной подход к объединению файлов в python, копированию и вставке их имен в сценарий, но с 872 комбинациями, которые необходимо было сделать, это вскоре оказалось невероятно чертовски. Поэтому я попытался автоматизировать процесс, рисуя непосредственно из каталога, содержащего файл, и произвел это:
import os
os.chdir("F:\PostGrad_Research\Programming_Files\Dumped_Files\Phylip_OG")
strainsToMerge = ['Streptococcus_thermophilus', 'Streptococcus_salivarius']
#a list fo the strains that you want to access
for cogNumber in range(maxCogNumber):
for i in range(2):
filename = open('ATGC008.COG'+str(cogNumber)+ '.phy','w') #construct the filename to access the file
infile = open(filename,'r') #open the file
sequences = infile.read() #read the file
subSequences = re.split('\w+',sequences) #split the file with the header
firstSequence[i] = subSequences[i].strip() #extract the first sequence and make sure you've got rid of the whitespace at the start and end
firstSequence[i] = re.sub('[\r\n]','',firstSequence[i])
outfile = open('ATGC008.COG'+str(cogNumber)+ '.phy','w')
outfile.write('2 '+str(len(firstSequence[0])+'\n'))
for i in range(2):
outfile.write(firstSequence[i]+'\n'))
outfile.close()
Я получаю следующую ошибку:
Traceback (most recent call last):
File "F:\PostGrad_Research\Programming_Files\Merge_Fasta.py", line 8, in <module>
for cogNumber in range(max.cogNumber):
AttributeError: 'builtin_function_or_method' object has no attribute 'cogNumber'
Любая и вся помощь / Совет будет принята с благодарностью.