File size: 3,916 Bytes
bf928ee | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 | import csv
import pickle
import os
from _bootstrap import use_project_root
use_project_root()
if not os.path.exists('./conf/data/asPICKLE'):
os.makedirs('./conf/data/asPICKLE')
if not os.path.exists('./conf/data/asFASTA'):
os.makedirs('./conf/data/asFASTA')
data = []
data_filter = []
dir= './conf/data/nano'
files=os.listdir(dir+"/")
steps = []
Hchain_sequence_len = []
CDRH1_len =[]
CDRH2_len =[]
CDRH3_len =[]
Antigen_sequence_1_len =[]
antigen_names = set()
antigen_seqs = set()
nanobody_seqs = set()
for file in files:
print("file:" + dir + "/" + file + "\n")
step = int(file.split('.')[0])
steps.append(step)
csv_file_path = dir + "/" + file
counter = -1
with open(csv_file_path, 'r') as f:
# Create a CSV reader
csv_reader = csv.reader(f)
# Loop over each row in the CSV file
for row in csv_reader:
if (counter > -1 and counter % step == 0):
data.append((row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9], row[10],
row[11], row[12], row[13], row[14], row[15], row[16], row[17], row[18], row[19], row[20],
row[21], row[22], row[23], row[24], row[25], row[26], row[27], row[28]))
resolution = row[27]
antigen_type = row[14]
if (float(resolution) >= 3.0):
if (antigen_type == 'protein' or antigen_type == 'peptide'):
data_filter.append((row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9],
row[10], row[11], row[12], row[13], row[14], row[15], row[16], row[17], row[18],
row[19], row[20], row[21], row[22], row[23], row[24], row[25], row[26], row[27],
row[28]))
counter = counter + 1
f.close()
# each antibody binds exclusively to a single antigen, with the reverse also being applicable.
data_filter_copy = data_filter.copy()
removed_items = set()
for i in range(0,len(data_filter)-1):
item1 = data_filter[i]
for j in range(i+1, len(data_filter)):
item2 = data_filter[j]
if (str(item1[2]) == str(item2[2]) or str(item1[17]) == str(item2[17])):
removed_items.add(item1)
break
for r_item in removed_items:
data_filter.remove(r_item)
removed_items.clear()
with open('conf/data/asPICKLE/data_filter.pickle', 'wb') as binary_writer:
pickle.dump(data_filter, binary_writer)
for row in data_filter:
Hchain_sequence_len.append(len(row[2]))
CDRH1_len.append(len(row[8]))
CDRH2_len.append(len(row[9]))
CDRH3_len.append(len(row[10]))
Antigen_sequence_1_len.append(len(row[17]))
nanobody_seqs.add(row[2])
antigen_seqs.add(row[17])
print(str(len(data)))
print(str(len(data_filter_copy)))
print(str(len(data_filter)))
print("Hchain_sequence_max_len : ",str(max(Hchain_sequence_len)), '\n')
print("CDRH1_len_max : ",str(max(CDRH1_len)), '\n')
print("CDRH2_len_max : ",str(max(CDRH2_len)), '\n')
print("CDRH3_len_max : ",str(max(CDRH3_len)), '\n')
print("Antigen_sequence_1_max_len : ",str(max(Antigen_sequence_1_len)), '\n')
print("Hchain_sequence_min_len : ",str(min(Hchain_sequence_len)), '\n')
print("CDRH1_len_min : ",str(min(CDRH1_len)), '\n')
print("CDRH2_len_min : ",str(min(CDRH2_len)), '\n')
print("CDRH3_len_min : ",str(min(CDRH3_len)), '\n')
print("Antigen_sequence_1_min_len : ",str(min(Antigen_sequence_1_len)), '\n')
# write the nanobody sequences as a FASTA file:
nanobody_seqs = open("conf/data/asFASTA/nanobody_seqs.fasta", "w")
for item in data_filter:
nanobody_seqs.write(">" + item[0] + " \n")
nanobody_seqs.write(item[2] + " \n")
print("done")
|