def __init__(self, ref_file, alt_files, simple_selection):

        self.selection = SelectionParser(simple_selection)

        self.ref_struct = PDBParser(PERMISSIVE=True).get_structure(
            'ref', ref_file)[0]
        assert self.ref_struct, self.logger.error(
            "Can't parse the ref file %s".format(ref_file))
        if self.selection.generic_numbers != [] or self.selection.helices != []:
            if not check_gn(self.ref_struct):
                gn_assigner = GenericNumbering(structure=self.ref_struct)
                self.ref_struct = gn_assigner.assign_generic_numbers()

        self.alt_structs = []
        for alt_id, alt_file in enumerate(alt_files):
            try:
                tmp_struct = PDBParser(PERMISSIVE=True).get_structure(
                    alt_id, alt_file)[0]
                if self.selection.generic_numbers != [] or self.selection.helices != []:
                    if not check_gn(tmp_struct):
                        gn_assigner = GenericNumbering(structure=tmp_struct)
                        self.alt_structs.append(
                            gn_assigner.assign_generic_numbers())
                        self.alt_structs[-1].id = alt_id
                    else:
                        self.alt_structs.append(tmp_struct)
            except Exception as e:
                logger.warning("Can't parse the file {!s}\n{!s}".format(
                    alt_id, e))
        self.selector = CASelector(self.selection, self.ref_struct,
                                   self.alt_structs)
Example #2
0
    def post(self, request):

        root, ext = os.path.splitext(request.FILES['pdb_file'].name)
        generic_numbering = GenericNumbering(
            StringIO(request.FILES['pdb_file'].file.read().decode(
                'UTF-8', "ignore")))
        out_struct = generic_numbering.assign_generic_numbers()
        out_stream = StringIO()
        io = PDBIO()
        io.set_structure(out_struct)
        io.save(out_stream)
        print(len(out_stream.getvalue()))
        # filename="{}_GPCRdb.pdb".format(root)
        return Response(out_stream.getvalue())
    def __init__(self, pdb_file=None, pdb_filename=None):

        #pdb_file can be either a name/path or a handle to an open file
        self.pdb_file = pdb_file
        self.pdb_filename = pdb_filename
        self.pdb_seq = {}
        self.blast = BlastSearch()

        self.pdb_struct = self.parse_pdb()
        if not check_gn(self.pdb_struct):
            gn_assigner = GenericNumbering(structure=self.pdb_struct)
            self.pdb_struct = gn_assigner.assign_generic_numbers()
            self.target = Protein.objects.get(pk=gn_assigner.prot_id_list[0])
        else:
            self.target = Protein.objects.get(pk=self.identify_receptor())