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")