Search in sources :

Example 21 with Group

use of de.bioforscher.jstructure.model.structure.Group in project jstructure by JonStargaryen.

the class ProteinParserTest method shouldParseInsertedAminoAcids.

@Test
public void shouldParseInsertedAminoAcids() {
    Protein protein = ProteinParser.source("2w0l").parse();
    List<Group> groups = protein.select().chainName("A").residueNumber(95).asFilteredGroups().collect(Collectors.toList());
    Assert.assertEquals(2, groups.size());
    groups.forEach(System.out::println);
}
Also used : Group(de.bioforscher.jstructure.model.structure.Group) Protein(de.bioforscher.jstructure.model.structure.Protein) Test(org.junit.Test)

Example 22 with Group

use of de.bioforscher.jstructure.model.structure.Group in project jstructure by JonStargaryen.

the class ProteinLigandInteractionProfiler method parseWaterBridge.

private Optional<WaterBridge> parseWaterBridge(Structure structure, Element element) {
    Optional<Atom> optionalDonor = selectAtom(structure, element.getElementsByTag("donor_idx").first().text());
    Optional<Atom> optionalAcceptor = selectAtom(structure, element.getElementsByTag("acceptor_idx").first().text());
    if (!(optionalDonor.isPresent() && optionalAcceptor.isPresent())) {
        return Optional.empty();
    }
    Atom donor = optionalDonor.get();
    Atom acceptor = optionalAcceptor.get();
    Group donorGroup = donor.getParentGroup();
    Group acceptorGroup = acceptor.getParentGroup();
    return Optional.of(new WaterBridge(donor, acceptor, donorGroup, acceptorGroup));
}
Also used : Group(de.bioforscher.jstructure.model.structure.Group) Atom(de.bioforscher.jstructure.model.structure.Atom)

Example 23 with Group

use of de.bioforscher.jstructure.model.structure.Group in project jstructure by JonStargaryen.

the class ProteinLigandInteractionProfiler method parseHydrophobicInteraction.

private Optional<HydrophobicInteraction> parseHydrophobicInteraction(Structure structure, Element element) {
    Optional<Atom> optionalAtom1 = selectAtom(structure, element.getElementsByTag("ligcarbonidx").first().text());
    Optional<Atom> optionalAtom2 = selectAtom(structure, element.getElementsByTag("protcarbonidx").first().text());
    if (!(optionalAtom1.isPresent() && optionalAtom2.isPresent())) {
        return Optional.empty();
    }
    Atom atom1 = optionalAtom1.get();
    Atom atom2 = optionalAtom2.get();
    Group group1 = atom1.getParentGroup();
    Group group2 = atom2.getParentGroup();
    return Optional.of(new HydrophobicInteraction(atom1, atom2, group1, group2));
}
Also used : Group(de.bioforscher.jstructure.model.structure.Group) Atom(de.bioforscher.jstructure.model.structure.Atom)

Example 24 with Group

use of de.bioforscher.jstructure.model.structure.Group in project jstructure by JonStargaryen.

the class ProteinLigandInteractionProfiler method parseSaltBridge.

private Optional<SaltBridge> parseSaltBridge(Structure structure, Element element) {
    // TODO: potentially half interaction
    Optional<Element> optionalCoordinateElement = element.getElementsByTag("protcoo").stream().findFirst();
    if (!optionalCoordinateElement.isPresent()) {
        return Optional.empty();
    }
    Element coordinateElement = optionalCoordinateElement.get();
    double[] coordinates = new double[] { Double.valueOf(coordinateElement.getElementsByTag("x").first().text()), Double.valueOf(coordinateElement.getElementsByTag("y").first().text()), Double.valueOf(coordinateElement.getElementsByTag("z").first().text()) };
    String chainId = element.getElementsByTag("reschain").first().text();
    int residueNumber = Integer.valueOf(element.getElementsByTag("resnr").first().text());
    Optional<Group> optionalGroup1 = structure.select().chainId(chainId).residueNumber(residueNumber).asOptionalGroup();
    if (!optionalGroup1.isPresent()) {
        return Optional.empty();
    }
    Group group1 = optionalGroup1.get();
    Optional<Atom> optionalAtom1 = group1.atoms().min(Comparator.comparingDouble(atom -> atom.calculate().distanceFast(coordinates)));
    if (!optionalAtom1.isPresent()) {
        return Optional.empty();
    }
    Atom atom1 = optionalAtom1.get();
    List<Atom> saltAtoms = element.getElementsByTag("idx").stream().map(Element::text).map(pdbSerial -> selectAtom(structure, pdbSerial)).filter(Optional::isPresent).map(Optional::get).collect(Collectors.toList());
    if (saltAtoms.isEmpty()) {
        return Optional.empty();
    }
    Group saltGroup = saltAtoms.get(0).getParentGroup();
    return Optional.of(new SaltBridge(atom1, saltAtoms, group1, saltGroup));
}
Also used : java.util(java.util) Logger(org.slf4j.Logger) ComputationException(de.bioforscher.jstructure.model.feature.ComputationException) ExternalLocalService(de.bioforscher.jstructure.service.ExternalLocalService) Files(java.nio.file.Files) URL(java.net.URL) LoggerFactory(org.slf4j.LoggerFactory) Structure(de.bioforscher.jstructure.model.structure.Structure) IOException(java.io.IOException) InputStreamReader(java.io.InputStreamReader) Collectors(java.util.stream.Collectors) UncheckedIOException(java.io.UncheckedIOException) Stream(java.util.stream.Stream) de.bioforscher.jstructure.feature.plip.model(de.bioforscher.jstructure.feature.plip.model) Group(de.bioforscher.jstructure.model.structure.Group) URLConnection(java.net.URLConnection) Atom(de.bioforscher.jstructure.model.structure.Atom) Document(org.jsoup.nodes.Document) Element(org.jsoup.nodes.Element) Chain(de.bioforscher.jstructure.model.structure.Chain) Jsoup(org.jsoup.Jsoup) Elements(org.jsoup.select.Elements) BufferedReader(java.io.BufferedReader) Path(java.nio.file.Path) Group(de.bioforscher.jstructure.model.structure.Group) Element(org.jsoup.nodes.Element) Atom(de.bioforscher.jstructure.model.structure.Atom)

Example 25 with Group

use of de.bioforscher.jstructure.model.structure.Group in project jstructure by JonStargaryen.

the class ProteinLigandInteractionProfiler method parseHalogenBond.

private Optional<HalogenBond> parseHalogenBond(Structure structure, Element element) {
    Optional<Atom> optionalDonor = selectAtom(structure, element.getElementsByTag("don_idx").first().text());
    Optional<Atom> optionalAcceptor = selectAtom(structure, element.getElementsByTag("acc_idx").first().text());
    if (!(optionalDonor.isPresent() && optionalAcceptor.isPresent())) {
        return Optional.empty();
    }
    Atom donor = optionalDonor.get();
    Atom acceptor = optionalAcceptor.get();
    Group donorGroup = donor.getParentGroup();
    Group acceptorGroup = acceptor.getParentGroup();
    return Optional.of(new HalogenBond(donor, acceptor, donorGroup, acceptorGroup));
}
Also used : Group(de.bioforscher.jstructure.model.structure.Group) Atom(de.bioforscher.jstructure.model.structure.Atom)

Aggregations

Group (de.bioforscher.jstructure.model.structure.Group)28 Atom (de.bioforscher.jstructure.model.structure.Atom)10 Chain (de.bioforscher.jstructure.model.structure.Chain)8 Structure (de.bioforscher.jstructure.model.structure.Structure)8 IOException (java.io.IOException)8 List (java.util.List)8 Collectors (java.util.stream.Collectors)8 Document (org.jsoup.nodes.Document)7 Element (org.jsoup.nodes.Element)7 Test (org.junit.Test)7 Protein (de.bioforscher.jstructure.model.structure.Protein)6 Files (java.nio.file.Files)6 Stream (java.util.stream.Stream)6 Elements (org.jsoup.select.Elements)6 Logger (org.slf4j.Logger)6 LoggerFactory (org.slf4j.LoggerFactory)6 BufferedReader (java.io.BufferedReader)4 InputStreamReader (java.io.InputStreamReader)4 UncheckedIOException (java.io.UncheckedIOException)4 URL (java.net.URL)4