def constructor(self, params, recalculate = False, to_pickle = False, to_filelize = False, always_recalculate = False):
        pdb_names = self.get_param(params, 'pdb_names')
        chain_letters = self.get_param(params, 'chain_letters')
        for i in range(len(pdb_names)):

            pdb_name = pdb_names[i]
            chain_letter = chain_letters[i]
            self.set_param(params, 'pdb_name', pdb_name)
            self.set_param(params, 'chain_letter', chain_letter)

            the_folder = constants.BIN_FOLDER + pdb_name + '/'

            if not os.path.exists(the_folder):
                os.makedirs(the_folder)
            pdb.set_trace()
            node_features = self.get_var_or_file(objects.bmW, params, False, False, False)
            transposed_node_features = helper.get_transpose(node_features)
            pdb.set_trace()
            helper.write_mat(transposed_node_features, the_folder + 'Xnode.csv')
            pdb.set_trace()
            edge_features = self.get_var_or_file(objects.bnW, params, False, False, False)
            edge_features_transposed = helper.get_transpose(edge_features)
            helper.write_mat(edge_features_transposed, the_folder + 'Xedge.csv')

            true_states = self.get_var_or_file(objects.oW, params, False, False, False)
            true_states = [true_states[i]+1 for i in range(len(true_states))]
            helper.write_vect(true_states, the_folder + 'true_y.csv')

            edge_list = self.get_var_or_file(objects.iW, params, False, False, False)
            helper.write_mat(edge_list, the_folder + 'edge_list.csv')

            num_nodes = len(node_features)
            adj_mat = [ [0 for i in range(num_nodes)] for j in range(num_nodes)]
            for i in range(len(edge_list)):
                n1 = edge_list[i][0]
                n2 = edge_list[i][1]
                adj_mat[n1][n2] = 1
                adj_mat[n2][n1] = 1
            helper.write_mat(adj_mat, the_folder + 'adj_mat.csv')

            info = [str(len(node_features)), str(len(edge_features)), str(2), str(len(node_features[0])), str(len(edge_features[0]))]
            helper.write_vect(info, the_folder + 'info.txt', the_sep = ' ')
            
            
        return None
                    the_params.flatten_hp(wc.useless)
                    print rank, pdb_name, wrapper
                    start_string = str(rank) + ' ' + pdb_name + ' start ' + str(wrapper) + '\n'
                    f.write(start_string)
                    print start_string

                    wc.get_stuff(wrapper, the_params, False, True, True, False)

                    end_string = str(rank) + ' ' + pdb_name + ' end ' + str(wrapper) + '\n'

        except Exception, err:

            print 'error in ', pdb_name, chain_letter, err
            f.write(str(rank) + ' ' + pdb_name + ' error\n')
        else:
            works.append(pdb_name + ',' + chain_letter + ',' + str(start) + ',' + str(end))


f.write('before barrier')
comm.Barrier()
f.write('past barrier')
print rank, works
root_works = comm.gather(works, root=0)

if rank == 0:
    ans = []
    for elt in root_works:
        ans = ans + elt
    helper.write_mat([[x] for x in ans], 'catres_works.pdb_list')
        
 def dump_object(self, obj):
     write_mat(obj, self.get_holding_location())

import sys
import wc, objects
input_file = sys.argv[1]
output_file = sys.argv[2]
use_neighbor = sys.argv[3] == 'T'
ignore_pos = sys.argv[4] == 'T'
max_neighbor = int(sys.argv[5])
num_trials = int(sys.argv[6])
pseudo_total = float(sys.argv[7])

import global_stuff
params = global_stuff.get_param()

params.set_param('protein_list_file', input_file)
l = wc.get_stuff(objects.filtered_mutation_list_given_protein_list, params)




import objects
import helper
my_output = objects.get_output_obj(params, l, use_neighbor, ignore_pos, max_neighbor, num_trials, pseudo_total, helper.vanilla_similarity, helper.normalize_nothing, helper.mutation_to_class)





helper.write_mat(my_output, output_file)