def handle(self, *args, **options): print("Working on file {}".format(options['pdb_file'])) frag_sp = FragmentSuperpose(options['pdb_file']) superposed_fragments = frag_sp.superpose_fragments(use_similar=True) if superposed_fragments == []: print("No fragments were aligned.") else: print("{} fragments were aligned.".format(len(superposed_fragments))) io = PDBIO() zipf = zipfile.ZipFile(options['pdb_file'].replace('.pdb', '.zip'), 'a', zipfile.ZIP_DEFLATED) for fragment, pdb_data in superposed_fragments: io.set_structure(pdb_data) tmp = StringIO() io.save(tmp) zipf.writestr("all_fragments/{!s}".format(fragment.generate_filename()), tmp.getvalue()) zipf.close()
def handle(self, *args, **options): print("Working on file {}".format(options['pdb_file'])) frag_sp = FragmentSuperpose(options['pdb_file']) superposed_fragments = frag_sp.superpose_fragments(use_similar=True) if superposed_fragments == []: print("No fragments were aligned.") else: print("{} fragments were aligned.".format( len(superposed_fragments))) io = PDBIO() zipf = zipfile.ZipFile(options['pdb_file'].replace('.pdb', '.zip'), 'a', zipfile.ZIP_DEFLATED) for fragment, pdb_data in superposed_fragments: io.set_structure(pdb_data) tmp = StringIO() io.save(tmp) zipf.writestr( "all_fragments/{!s}".format(fragment.generate_filename()), tmp.getvalue()) zipf.close()
def post (self, request, *args, **kwargs): frag_sp = FragmentSuperpose(StringIO(request.FILES['pdb_file'].file.read().decode('UTF-8', 'ignore')),request.FILES['pdb_file'].name) superposed_fragments = [] superposed_fragments_repr = [] if request.POST['similarity'] == 'identical': if request.POST['representative'] == 'any': superposed_fragments = frag_sp.superpose_fragments() else: superposed_fragments_repr = frag_sp.superpose_fragments(representative=True, state=request.POST['state']) superposed_fragments = frag_sp.superpose_fragments() else: if request.POST['representative'] == 'any': superposed_fragments = frag_sp.superpose_fragments(use_similar=True) else: superposed_fragments_repr = frag_sp.superpose_fragments(representative=True, use_similar=True, state=request.POST['state']) superposed_fragments = frag_sp.superpose_fragments(use_similar=True) if superposed_fragments == []: self.message = "No fragments were aligned." else: io = PDBIO() out_stream = BytesIO() zipf = zipfile.ZipFile(out_stream, 'a') for fragment, pdb_data in superposed_fragments: io.set_structure(pdb_data) tmp = StringIO() io.save(tmp) if request.POST['representative'] == 'any': zipf.writestr(fragment.generate_filename(), tmp.getvalue()) else: zipf.writestr("all_fragments//{!s}".format(fragment.generate_filename()), tmp.getvalue()) if superposed_fragments_repr != []: for fragment, pdb_data in superposed_fragments_repr: io.set_structure(pdb_data) tmp = StringIO() io.save(tmp) zipf.writestr("representative_fragments//{!s}".format(fragment.generate_filename()), tmp.getvalue()) zipf.close() if len(out_stream.getvalue()) > 0: request.session['outfile'] = { 'interacting_moiety_residue_fragments.zip' : out_stream, } self.outfile = 'interacting_moiety_residue_fragments.zip' self.success = True self.zip = 'zip' self.message = '{:n} fragments were superposed.'.format(len(superposed_fragments)) context = super(FragmentSuperpositionResults, self).get_context_data(**kwargs) attributes = inspect.getmembers(self, lambda a:not(inspect.isroutine(a))) for a in attributes: if not(a[0].startswith('__') and a[0].endswith('__')): context[a[0]] = a[1] return render(request, self.template_name, context)