示例#1
0
    def _get_docking_model(self, molecule, restraints):
        atoms = molecule.atoms
        # Assign properties to atoms
        for atom in atoms:
            res_name = atom.residue_name
            if res_name == "HIS":
                res_name = 'HID'
            atom_id = "%s-%s" % (res_name, atom.name)
            atom.amber_type = amber_types[atom_id]
            atom.charge = charges[atom_id]
            atom.mass = masses[atom.amber_type]
            atom.vdw_energy = vdw.vdw_energy[atom.amber_type]
            atom.vdw_radius = vdw.vdw_radii[atom.amber_type]

        # Prepare common model information
        elec_charges = np.array([atom.charge for atom in atoms])
        vdw_energies = np.array([atom.vdw_energy for atom in atoms])
        vdw_radii = np.array([atom.vdw_radius for atom in atoms])
        coordinates = molecule.copy_coordinates()
        reference_points = ModelAdapter.load_reference_points(molecule)
        try:
            return SDModel(atoms, coordinates, restraints, elec_charges, vdw_energies, vdw_radii,
                           reference_points=reference_points, n_modes=molecule.n_modes.copy())
        except AttributeError:
            return SDModel(atoms, coordinates, restraints, elec_charges, vdw_energies, vdw_radii,
                           reference_points=reference_points)
示例#2
0
    def _get_docking_model(self, molecule, restraints):
        atoms = molecule.atoms
        parsed_restraints = {}
        # Assign properties to atoms
        for atom_index, atom in enumerate(atoms):
            res_id = "%s.%s.%s" % (atom.chain_id, atom.residue_name, str(atom.residue_number))
            if restraints and res_id in restraints:
                try:
                    parsed_restraints[res_id].append(atom_index)
                except:
                    parsed_restraints[res_id] = [atom_index]
            res_name = atom.residue_name
            atom_name = atom.name
            if res_name in DNAAdapter.to_translate:
                res_name = DNAAdapter.to_translate[res_name]
            if atom_name in amber.translate:
                atom_name = amber.translate[atom.name]
            atom_id = "%s-%s" % (res_name, atom_name)
            try:
                atom.amber_type = amber.amber_types[atom_id]
            except Exception as e:
                # Maybe H N-terminal?
                if atom_name in ['H1', 'H2', 'H3']:
                    atom_name = 'H'
                    atom_id = "%s-%s" % (res_name, atom_name)
                    atom.amber_type = amber.amber_types[atom_id]
                else:
                    raise e
            try:
                atom.charge = amber.charges[atom_id]
            except:
                # Go for N-terminal
                atom.charge = amber.nt_charges[atom_id]
            atom.mass = amber.masses[atom.amber_type]
            atom.vdw_energy = vdw.vdw_energy[atom.amber_type]
            atom.vdw_radius = vdw.vdw_radii[atom.amber_type]

        # Prepare common model information
        elec_charges = np.array([atom.charge for atom in atoms])
        vdw_energies = np.array([atom.vdw_energy for atom in atoms])
        vdw_radii = np.array([atom.vdw_radius for atom in atoms])
        coordinates = molecule.copy_coordinates()

        reference_points = ModelAdapter.load_reference_points(molecule)

        try:
            return DNAModel(atoms, coordinates, parsed_restraints, elec_charges, vdw_energies, vdw_radii,
                                    reference_points=reference_points, n_modes=molecule.n_modes.copy())
        except AttributeError:
            return DNAModel(atoms, coordinates, parsed_restraints, elec_charges, vdw_energies, vdw_radii,
                                    reference_points=reference_points)
示例#3
0
    def _get_docking_model(self, molecule, restraints):
        atoms = molecule.atoms
        parsed_restraints = {}
        # Assign properties to atoms
        for atom_index, atom in enumerate(atoms):
            res_name = atom.residue_name
            atom_name = atom.name
            if res_name == "HIS":
                res_name = 'HID'
            if atom_name in amber.translate:
                atom_name = amber.translate[atom.name]
            res_id = "%s.%s.%s" % (atom.chain_id, atom.residue_name,
                                   str(atom.residue_number))
            if restraints and res_id in restraints:
                try:
                    parsed_restraints[res_id].append(atom_index)
                except:
                    parsed_restraints[res_id] = [atom_index]
            atom_id = "%s-%s" % (res_name, atom_name)
            atom.amber_type = amber.amber_types[atom_id]
            atom.charge = amber.charges[atom_id]
            atom.mass = amber.masses[atom.amber_type]
            atom.vdw_energy = vdw.vdw_energy[atom.amber_type]
            atom.vdw_radius = vdw.vdw_radii[atom.amber_type]

        # Prepare common model information
        vdw_energies = np.array([atom.vdw_energy for atom in atoms])
        vdw_radii = np.array([atom.vdw_radius for atom in atoms])
        coordinates = molecule.copy_coordinates()

        reference_points = ModelAdapter.load_reference_points(molecule)

        try:
            return VdWModel(atoms,
                            coordinates,
                            parsed_restraints,
                            vdw_energies,
                            vdw_radii,
                            reference_points=reference_points,
                            n_modes=molecule.n_modes.copy())
        except AttributeError:
            return VdWModel(atoms,
                            coordinates,
                            parsed_restraints,
                            vdw_energies,
                            vdw_radii,
                            reference_points=reference_points)
示例#4
0
    def _get_docking_model(self, molecule, restraints):
        atoms = molecule.atoms
        energy = sipper_energy
        parsed_restraints = {}
        indexes = np.array(
            [res_to_index[residue.name] for residue in molecule.residues])
        coordinates = molecule.copy_coordinates()
        atoms_per_residue = np.array(
            [len(residue.atoms) for residue in molecule.residues])

        for atom_index, atom in enumerate(atoms):
            res_id = "%s.%s.%s" % (atom.chain_id, atom.residue_name,
                                   str(atom.residue_number))
            if restraints and res_id in restraints:
                try:
                    parsed_restraints[res_id].append(atom_index)
                except:
                    parsed_restraints[res_id] = [atom_index]

        oda_values = SIPPERAdapter._read_oda_values(molecule)
        if oda_values:
            oda_values = np.array(oda_values)
        else:
            # Dummy value, for performance
            oda_values = np.array([0.0 for _ in range(len(molecule.residues))])

        reference_points = ModelAdapter.load_reference_points(molecule)

        try:
            return SIPPERModel(atoms,
                               coordinates,
                               parsed_restraints,
                               energy,
                               indexes,
                               atoms_per_residue,
                               oda_values,
                               reference_points=reference_points,
                               n_modes=molecule.n_modes.copy())
        except AttributeError:
            return SIPPERModel(atoms,
                               coordinates,
                               parsed_restraints,
                               energy,
                               indexes,
                               atoms_per_residue,
                               oda_values,
                               reference_points=reference_points)
示例#5
0
    def _get_docking_model(self, molecule, restraints):
        atoms = molecule.atoms
        energy = sipper_energy
        indexes = np.array([res_to_index[residue.name] for residue in molecule.residues])
        coordinates = molecule.copy_coordinates()
        atoms_per_residue = np.array([len(residue.atoms) for residue in molecule.residues])

        oda_values = SIPPERAdapter._read_oda_values(molecule)
        if oda_values:
            oda_values = np.array(oda_values)
        else:
            # Dummy value, for performance
            oda_values = np.array([0.0 for _ in range(len(molecule.residues))])

        reference_points = ModelAdapter.load_reference_points(molecule)

        try:
            return SIPPERModel(atoms, coordinates, restraints, energy, indexes, atoms_per_residue, oda_values,
                               reference_points=reference_points, n_modes=molecule.n_modes.copy())
        except AttributeError:
            return SIPPERModel(atoms, coordinates, restraints, energy, indexes, atoms_per_residue, oda_values,
                               reference_points=reference_points)
示例#6
0
    def _get_docking_model(self, molecule, restraints):
        atoms = molecule.atoms
        parsed_restraints = {}
        # Assign properties to atoms
        for atom_index, atom in enumerate(atoms):
            res_id = "%s.%s.%s" % (atom.chain_id, atom.residue_name,
                                   str(atom.residue_number))
            if restraints and res_id in restraints:
                try:
                    parsed_restraints[res_id].append(atom_index)
                except:
                    parsed_restraints[res_id] = [atom_index]
            res_name = atom.residue_name
            atom_name = atom.name
            if res_name == "HIS":
                res_name = 'HID'
            if atom_name in amber.translate:
                atom_name = amber.translate[atom.name]
            atom_id = "%s-%s" % (res_name, atom_name)
            atom.amber_type = amber.amber_types[atom_id]
            atom.charge = amber.charges[atom_id]
            atom.mass = amber.masses[atom.amber_type]
            atom.vdw_energy = vdw.vdw_energy[atom.amber_type]
            atom.vdw_radius = vdw.vdw_radii[atom.amber_type]

        # Prepare common model information
        elec_charges = np.array([atom.charge for atom in atoms])
        vdw_energies = np.array([atom.vdw_energy for atom in atoms])
        vdw_radii = np.array([atom.vdw_radius for atom in atoms])
        coordinates = molecule.copy_coordinates()
        des_energy, des_radii = solvation.get_solvation(molecule)

        # Calculate desolvation reference energy
        log.info('Calculating reference SASA...')
        structure = Structure()
        des_radii_no_H = []
        for i, atom in enumerate(atoms):
            if not atom.is_hydrogen():
                structure.addAtom(atom.name, atom.residue_name,
                                  atom.residue_number, atom.chain_id, atom.x,
                                  atom.y, atom.z)
                des_radii_no_H.append(des_radii[i])
        structure.setRadii(list(des_radii_no_H))
        sasa_result = freesasa.calc(structure)
        sasa = []
        j = 0
        for i, atom in enumerate(atoms):
            if not atom.is_hydrogen():
                sasa.append(sasa_result.atomArea(j))
                j += 1
            else:
                sasa.append(-1.0)
        sasa = np.array(sasa)
        hydrogens = np.array(
            [0 if atom.is_hydrogen() else 1 for atom in atoms])
        log.info('Done.')

        reference_points = ModelAdapter.load_reference_points(molecule)
        try:
            return CPyDockModel(atoms,
                                coordinates,
                                parsed_restraints,
                                elec_charges,
                                vdw_energies,
                                vdw_radii,
                                des_energy,
                                des_radii,
                                sasa,
                                hydrogens,
                                reference_points=reference_points,
                                n_modes=molecule.n_modes.copy())
        except AttributeError:
            return CPyDockModel(atoms,
                                coordinates,
                                parsed_restraints,
                                elec_charges,
                                vdw_energies,
                                vdw_radii,
                                des_energy,
                                des_radii,
                                sasa,
                                hydrogens,
                                reference_points=reference_points)
 def test_create_model_adapter_interface(self):
     adapter = ModelAdapter(None, None)
     assert not adapter
示例#8
0
    def _get_docking_model(self, molecule, restraints):
        atoms = molecule.atoms
        parsed_restraints = {}
        # Assign properties to atoms
        for atom_index, atom in enumerate(atoms):
            res_id = "%s.%s.%s" % (atom.chain_id, atom.residue_name, str(atom.residue_number))
            if restraints and res_id in restraints:
                try:
                    parsed_restraints[res_id].append(atom_index)
                except:
                    parsed_restraints[res_id] = [atom_index]
            res_name = atom.residue_name
            atom_name = atom.name
            if res_name == "HIS":
                res_name = 'HID'
            if atom_name in amber.translate:
                atom_name = amber.translate[atom.name]
            atom_id = "%s-%s" % (res_name, atom_name)
            atom.amber_type = amber.amber_types[atom_id]
            atom.charge = amber.charges[atom_id]
            atom.mass = amber.masses[atom.amber_type]
            atom.vdw_energy = vdw.vdw_energy[atom.amber_type]
            atom.vdw_radius = vdw.vdw_radii[atom.amber_type]

        # Prepare common model information
        elec_charges = np.array([atom.charge for atom in atoms])
        vdw_energies = np.array([atom.vdw_energy for atom in atoms])
        vdw_radii = np.array([atom.vdw_radius for atom in atoms])
        coordinates = molecule.copy_coordinates()
        des_energy, des_radii = solvation.get_solvation(molecule)

        # Calculate desolvation reference energy
        log.info('Calculating reference SASA...')
        structure = Structure()
        des_radii_no_H = []
        for i, atom in enumerate(atoms):
            if not atom.is_hydrogen():
                structure.addAtom(atom.name, atom.residue_name, atom.residue_number, atom.chain_id,
                                  atom.x, atom.y, atom.z)
                des_radii_no_H.append(des_radii[i])
        structure.setRadii(list(des_radii_no_H))
        sasa_result = freesasa.calc(structure)
        sasa = []
        j = 0
        for i, atom in enumerate(atoms):
            if not atom.is_hydrogen():
                sasa.append(sasa_result.atomArea(j))
                j += 1
            else:
                sasa.append(-1.0)
        sasa = np.array(sasa)
        hydrogens = np.array([0 if atom.is_hydrogen() else 1 for atom in atoms])
        log.info('Done.')

        reference_points = ModelAdapter.load_reference_points(molecule)
        try:
            return CPyDockModel(atoms, coordinates, parsed_restraints, elec_charges, vdw_energies, vdw_radii, des_energy, des_radii,
                                sasa, hydrogens, reference_points=reference_points, n_modes=molecule.n_modes.copy())
        except AttributeError:
            return CPyDockModel(atoms, coordinates, parsed_restraints, elec_charges, vdw_energies, vdw_radii, des_energy, des_radii,
                                sasa, hydrogens, reference_points=reference_points)