Search in sources :

Example 1 with ReconstructionContactMap

use of de.bioforscher.jstructure.graph.ReconstructionContactMap in project jstructure by JonStargaryen.

the class StructuralInformationService method process.

public void process(Chain referenceChain, String jobName, Path confoldPath, Path tmalignPath, Path outputDirectory, int numberOfThreads, double baselineFrequency) {
    try {
        ExecutorService executorService = Executors.newFixedThreadPool(numberOfThreads);
        List<AminoAcid> aminoAcids = referenceChain.aminoAcids().collect(Collectors.toList());
        int numberOfAminoAcids = aminoAcids.size();
        ReconstructionContactMap fullMap = ReconstructionContactMap.createReconstructionContactMap(referenceChain, ContactDefinitionFactory.createAlphaCarbonContactDefinition(8.0));
        List<Pair<AminoAcid, AminoAcid>> contacts = fullMap.getLongRangeContacts();
        int numberOfLongRangeContacts = contacts.size();
        String sequence = fullMap.getSequence();
        String secondaryStructure = fullMap.getSecondaryStructureElements();
        // report general statistics
        logger.info("evaluating structural information of chain with {} residues and {} long-range contacts", numberOfAminoAcids, numberOfLongRangeContacts);
        logger.info("present long-range contacts:{}{}", System.lineSeparator(), composeConsoleOutput(fullMap.getLongRangeContacts()));
        logger.info("coverage per position:{}{}", System.lineSeparator(), aminoAcids.stream().map(fullMap::getNonLocalContactsOf).mapToInt(List::size).mapToObj(size -> {
            if (size < 10) {
                return String.valueOf(size);
            } else {
                return "*";
            }
        }).collect(Collectors.joining()));
        // write reference structure
        Path referenceChainStructurePath = Files.createTempFile("confoldservice-ref", ".pdb");
        Files.write(referenceChainStructurePath, referenceChain.getPdbRepresentation().getBytes());
        // create outputDirectory
        Path reconstructionDirectory = outputDirectory.resolve(jobName);
        if (!Files.exists(reconstructionDirectory)) {
            Files.createDirectory(reconstructionDirectory);
        }
        // create sampling containers
        List<Future<BaselineReconstruction>> baselineFutures = new ArrayList<>();
        for (int iteration = 0; iteration < COVERAGE; iteration++) {
            baselineFutures.add(executorService.submit(new BaselineReconstruction(iteration, referenceChainStructurePath, referenceChain, fullMap, sequence, secondaryStructure, baselineFrequency, confoldPath.toFile().getAbsolutePath(), tmalignPath.toFile().getAbsolutePath(), outputDirectory, jobName)));
        }
        List<BaselineReconstruction> baselineReconstructions = baselineFutures.stream().map(this::getBaselineFuture).collect(Collectors.toList());
        // create toggling reconstructions
        int numberOfCombinations = baselineReconstructions.size() * contacts.size();
        logger.info("reconstructing individual maps by contact toggling - evaluating {} combinations", numberOfCombinations);
        int counter = 1;
        List<Future<ContactTogglingReconstruction>> contactToggleFutures = new ArrayList<>();
        for (Pair<AminoAcid, AminoAcid> contact : contacts) {
            for (BaselineReconstruction baselineReconstruction : baselineReconstructions) {
                contactToggleFutures.add(executorService.submit(baselineReconstruction.createContactTogglingReconstruction(contact, counter, numberOfCombinations)));
                counter++;
            }
        }
        Path outputPath = outputDirectory.resolve(jobName + ".out");
        FileWriter outputWriter = new FileWriter(outputPath.toFile());
        contactToggleFutures.stream().map(this::getContactToggleFuture).filter(Optional::isPresent).map(Optional::get).map(contactTogglingReconstruction -> contactTogglingReconstruction.getContactToToggle() + "\t" + contactTogglingReconstruction.isContactWasRemoved() + "\t" + StandardFormat.format(contactTogglingReconstruction.getBaselineReconstruction().getAverageRmsd()) + "\t" + StandardFormat.format(contactTogglingReconstruction.getBaselineReconstruction().getAverageTmScore()) + "\t" + StandardFormat.format(contactTogglingReconstruction.getBaselineReconstruction().getAverageQ()) + "\t" + StandardFormat.format(contactTogglingReconstruction.getAverageRmsd()) + "\t" + StandardFormat.format(contactTogglingReconstruction.getAverageTmScore()) + "\t" + StandardFormat.format(contactTogglingReconstruction.getAverageQ()) + "\t" + StandardFormat.format(contactTogglingReconstruction.getDecreaseRmsd()) + "\t" + StandardFormat.format(contactTogglingReconstruction.getIncreaseTMScore()) + "\t" + StandardFormat.format(contactTogglingReconstruction.getIncreaseQ()) + System.lineSeparator()).forEach(line -> {
            try {
                outputWriter.write(line);
                outputWriter.flush();
            } catch (IOException e) {
                throw new UncheckedIOException(e);
            }
        });
        // clean up
        outputWriter.close();
        Files.delete(referenceChainStructurePath);
    } catch (IOException e) {
        throw new UncheckedIOException(e);
    }
}
Also used : Path(java.nio.file.Path) ContactTogglingReconstruction(de.bioforscher.jstructure.si.model.ContactTogglingReconstruction) Logger(org.slf4j.Logger) Files(java.nio.file.Files) LoggerFactory(org.slf4j.LoggerFactory) FileWriter(java.io.FileWriter) IOException(java.io.IOException) Collectors(java.util.stream.Collectors) Pair(de.bioforscher.jstructure.mathematics.Pair) Executors(java.util.concurrent.Executors) ArrayList(java.util.ArrayList) UncheckedIOException(java.io.UncheckedIOException) List(java.util.List) Future(java.util.concurrent.Future) AminoAcid(de.bioforscher.jstructure.model.structure.aminoacid.AminoAcid) Chain(de.bioforscher.jstructure.model.structure.Chain) BaselineReconstruction(de.bioforscher.jstructure.si.model.BaselineReconstruction) Optional(java.util.Optional) StandardFormat(de.bioforscher.jstructure.StandardFormat) ReconstructionContactMap(de.bioforscher.jstructure.graph.ReconstructionContactMap) Path(java.nio.file.Path) ExecutorService(java.util.concurrent.ExecutorService) ContactDefinitionFactory(de.bioforscher.jstructure.graph.contact.definition.ContactDefinitionFactory) ReconstructionContactMap(de.bioforscher.jstructure.graph.ReconstructionContactMap) Optional(java.util.Optional) AminoAcid(de.bioforscher.jstructure.model.structure.aminoacid.AminoAcid) FileWriter(java.io.FileWriter) ArrayList(java.util.ArrayList) UncheckedIOException(java.io.UncheckedIOException) IOException(java.io.IOException) UncheckedIOException(java.io.UncheckedIOException) ExecutorService(java.util.concurrent.ExecutorService) Future(java.util.concurrent.Future) BaselineReconstruction(de.bioforscher.jstructure.si.model.BaselineReconstruction) Pair(de.bioforscher.jstructure.mathematics.Pair)

Example 2 with ReconstructionContactMap

use of de.bioforscher.jstructure.graph.ReconstructionContactMap in project jstructure by JonStargaryen.

the class ContactTogglingReconstruction method computePerformance.

private void computePerformance(List<Chain> reconstructions) throws AlignmentException, IOException {
    List<TMAlignAlignmentResult> alignmentResults = new ArrayList<>();
    List<ReconstructionContactMap> reconstructionContactMaps = new ArrayList<>();
    List<Path> tmpFiles = new ArrayList<>();
    for (Chain reconstructedChain : reconstructions) {
        Path reconstructPath = Files.createTempFile("confoldservice-recon", ".pdb");
        tmpFiles.add(reconstructPath);
        Files.write(reconstructPath, reconstructedChain.getPdbRepresentation().getBytes());
        alignmentResults.add(TM_ALIGN_SERVICE.process(new String[] { baselineReconstruction.getTmalignPath(), baselineReconstruction.getReferenceChainPath().toFile().getAbsolutePath(), reconstructPath.toFile().getAbsolutePath() }));
        reconstructionContactMaps.add(ReconstructionContactMap.createReconstructionContactMap(reconstructedChain, baselineReconstruction.getFullMap().getContactDefinition()));
    }
    averageRmsd = alignmentResults.stream().map(TMAlignAlignmentResult::getRootMeanSquareDeviation).mapToDouble(RootMeanSquareDeviation::getScore).average().orElseThrow(() -> new ComputationException("could not generate toggled reconstructs"));
    averageTmScore = alignmentResults.stream().map(TMAlignAlignmentResult::getTemplateModelingScore1).mapToDouble(TemplateModelingScore::getScore).average().orElseThrow(() -> new ComputationException("could not generate toggled reconstructs"));
    averageQ = reconstructionContactMaps.stream().mapToDouble(reconstructContactMap -> BaselineReconstruction.computeQ(baselineReconstruction.getFullMap(), reconstructContactMap)).average().orElseThrow(() -> new ComputationException("could not generate toggled reconstructs"));
    logger.info("[{} / {}]: {} reconstruction of contact {}", counter, numberOfCombinations, contactWasRemoved ? "removal" : "addition", contactToToggle);
    logger.info("[{} / {}]: average RMSD: {}, average TM-score: {}, average Q: {}", counter, numberOfCombinations, StandardFormat.format(averageRmsd), StandardFormat.format(averageTmScore), StandardFormat.format(averageQ));
    if (contactWasRemoved) {
        decreaseRmsd = averageRmsd - baselineReconstruction.getAverageRmsd();
        increaseTMScore = baselineReconstruction.getAverageTmScore() - averageTmScore;
        increaseQ = baselineReconstruction.getAverageQ() - averageQ;
    } else {
        decreaseRmsd = baselineReconstruction.getAverageRmsd() - averageRmsd;
        increaseTMScore = averageTmScore - baselineReconstruction.getAverageTmScore();
        increaseQ = averageQ - baselineReconstruction.getAverageQ();
    }
    logger.info("[{} / {}]: decrease RMSD: {}, increase TM-score: {}, increase Q: {}", counter, numberOfCombinations, StandardFormat.format(decreaseRmsd), StandardFormat.format(increaseTMScore), StandardFormat.format(increaseQ));
    // cleanup
    for (Path tmpFile : tmpFiles) {
        Files.delete(tmpFile);
    }
}
Also used : Path(java.nio.file.Path) Logger(org.slf4j.Logger) ComputationException(de.bioforscher.jstructure.model.feature.ComputationException) Files(java.nio.file.Files) TMAlignService(de.bioforscher.jstructure.align.impl.TMAlignService) LoggerFactory(org.slf4j.LoggerFactory) IOException(java.io.IOException) Callable(java.util.concurrent.Callable) Pair(de.bioforscher.jstructure.mathematics.Pair) ArrayList(java.util.ArrayList) ConfoldServiceWorker(de.bioforscher.jstructure.si.ConfoldServiceWorker) TMAlignAlignmentResult(de.bioforscher.jstructure.align.result.TMAlignAlignmentResult) List(java.util.List) AminoAcid(de.bioforscher.jstructure.model.structure.aminoacid.AminoAcid) Chain(de.bioforscher.jstructure.model.structure.Chain) StandardFormat(de.bioforscher.jstructure.StandardFormat) ReconstructionContactMap(de.bioforscher.jstructure.graph.ReconstructionContactMap) TemplateModelingScore(de.bioforscher.jstructure.align.result.score.TemplateModelingScore) Path(java.nio.file.Path) AlignmentException(de.bioforscher.jstructure.align.AlignmentException) RootMeanSquareDeviation(de.bioforscher.jstructure.align.result.score.RootMeanSquareDeviation) TMAlignAlignmentResult(de.bioforscher.jstructure.align.result.TMAlignAlignmentResult) Chain(de.bioforscher.jstructure.model.structure.Chain) ReconstructionContactMap(de.bioforscher.jstructure.graph.ReconstructionContactMap) ComputationException(de.bioforscher.jstructure.model.feature.ComputationException) ArrayList(java.util.ArrayList)

Example 3 with ReconstructionContactMap

use of de.bioforscher.jstructure.graph.ReconstructionContactMap in project jstructure by JonStargaryen.

the class BaselineReconstructionTest method testComputeQ.

@Test
public void testComputeQ() {
    ReconstructionContactMap reference = ReconstructionContactMap.createReconstructionContactMap(chain, contactDefinition);
    ReconstructionContactMap reconstruct = ReconstructionContactMap.createReconstructionContactMap(StructureParser.fromInputStream(TestUtils.getResourceAsInputStream("confold/short.pdb")).parse().getFirstChain(), contactDefinition);
    Assert.assertEquals("for the same contact map Q should be 1", 1.0, BaselineReconstruction.computeQ(reference, reconstruct), TestUtils.TOLERANT_ERROR_MARGIN);
}
Also used : ReconstructionContactMap(de.bioforscher.jstructure.graph.ReconstructionContactMap) Test(org.junit.Test)

Example 4 with ReconstructionContactMap

use of de.bioforscher.jstructure.graph.ReconstructionContactMap in project jstructure by JonStargaryen.

the class BaselineReconstruction method call.

@Override
public BaselineReconstruction call() throws Exception {
    logger.info("submitting baseline reconstruction job with id {}", iteration);
    // create sampling of full map
    List<Pair<AminoAcid, AminoAcid>> fullContacts = fullMap.getLongRangeContacts();
    Collections.shuffle(fullContacts);
    int numberOfContactsToSelect = (int) (fullContacts.size() * baselineFrequency);
    List<Pair<AminoAcid, AminoAcid>> sampledContacts = fullContacts.subList(0, numberOfContactsToSelect);
    this.sampledMap = new ReconstructionContactMap(referenceChain.aminoAcids().collect(Collectors.toList()), sampledContacts, fullMap.getContactDefinition());
    // reconstruct sampled baseline map
    sampledReconstructions = new ConfoldServiceWorker(confoldPath, sequence, secondaryStructure, sampledMap.getCaspRRRepresentation(), fullMap.getConfoldRRType()).call().getChains();
    // write reconstruction files
    Path reconstructionDirectory = outputPath.resolve(jobname);
    for (int i = 1; i <= sampledReconstructions.size(); i++) {
        Files.write(reconstructionDirectory.resolve("baseline-reconstruction-" + iteration + "-" + i + ".pdb"), sampledReconstructions.get(i - 1).getPdbRepresentation().getBytes());
    }
    // score baseline models
    computeBaselinePerformance(sampledReconstructions);
    return this;
}
Also used : Path(java.nio.file.Path) ConfoldServiceWorker(de.bioforscher.jstructure.si.ConfoldServiceWorker) ReconstructionContactMap(de.bioforscher.jstructure.graph.ReconstructionContactMap) Pair(de.bioforscher.jstructure.mathematics.Pair)

Example 5 with ReconstructionContactMap

use of de.bioforscher.jstructure.graph.ReconstructionContactMap in project jstructure by JonStargaryen.

the class A03_ReconstructByVariousStrategy method handleChain.

private static void handleChain(ExplorerChain explorerChain) {
    logger.info("[{}] starting job", explorerChain.getStfId());
    try {
        Chain nativeChain = explorerChain.getChain();
        Path nativeChainPath = Files.createTempFile("nativechain-", ".pdb");
        Files.write(nativeChainPath, nativeChain.getPdbRepresentation().getBytes());
        List<ContactStructuralInformation> contactStructuralInformation = explorerChain.getContacts();
        // annotate with PLIP data
        PLIPInteractionContainer plipInteractionContainer = nativeChain.getFeature(PLIPInteractionContainer.class);
        for (ContactStructuralInformation csi : contactStructuralInformation) {
            AminoAcid aminoAcid1 = nativeChain.select().residueNumber(csi.getResidueIdentifier1()).asAminoAcid();
            AminoAcid aminoAcid2 = nativeChain.select().residueNumber(csi.getResidueIdentifier2()).asAminoAcid();
            if (plipInteractionContainer.getHydrogenBonds().stream().anyMatch(hydrogenBond -> isContact(hydrogenBond, aminoAcid1, aminoAcid2))) {
                csi.markAsHydrogenBond();
            }
            if (plipInteractionContainer.getHydrophobicInteractions().stream().anyMatch(hydrophobicInteraction -> isContact(hydrophobicInteraction, aminoAcid1, aminoAcid2))) {
                csi.markAsHydrophobicInteraction();
            }
        }
        int numberOfNativeContacts = contactStructuralInformation.size();
        int numberOfContactsToSelect = (int) (numberOfNativeContacts * DEFAULT_COVERAGE);
        List<ReconstructionContactMap> contactMaps = Stream.of(ReconstructionStrategyDefinition.values()).map(ReconstructionStrategyDefinition::getReconstructionStrategy).flatMap(reconstructionStrategy -> IntStream.range(0, REDUNDANCY).boxed().flatMap(i -> {
            if (!reconstructionStrategy.isNegatable()) {
                ReconstructionContactMap contactMap = reconstructionStrategy.composeReconstructionContactMap(nativeChain, contactStructuralInformation, numberOfContactsToSelect);
                contactMap.setName(reconstructionStrategy.getName() + "-" + (i + 1));
                return Stream.of(contactMap);
            } else {
                // short, long, hydrogen, and hydrophobic bins have to be negated explicitly to get comparable results
                Pair<ReconstructionContactMap, ReconstructionContactMap> contactMapPair = reconstructionStrategy.composeReconstructionAndNegatedReconstructionContactMap(nativeChain, contactStructuralInformation, numberOfContactsToSelect);
                contactMapPair.getLeft().setName(reconstructionStrategy.getName() + "-" + (i + 1));
                contactMapPair.getRight().setName(reconstructionStrategy.getNegatedName() + "-" + (i + 1));
                return Stream.of(contactMapPair.getLeft(), contactMapPair.getRight());
            }
        })).filter(reconstructionContactMap -> reconstructionContactMap.getNumberOfContacts() > 0).collect(Collectors.toList());
        Map<String, List<Future<ReconstructionResult>>> reconstructionFutures = new HashMap<>();
        for (ReconstructionContactMap contactMap : contactMaps) {
            String name = contactMap.getName().split("-")[0];
            logger.info("[{}] handling contact map definition {}", explorerChain.getStfId(), name);
            if (!reconstructionFutures.containsKey(name)) {
                reconstructionFutures.put(name, new ArrayList<>());
            }
            List<Future<ReconstructionResult>> bin = reconstructionFutures.get(name);
            bin.add(executorService.submit(new ConfoldServiceWorker("/home/sb/programs/confold_v1.0/confold.pl", contactMap.getSequence(), contactMap.getSecondaryStructureElements(), contactMap.getCaspRRRepresentation(), contactMap.getConfoldRRType())));
        }
        for (Map.Entry<String, List<Future<ReconstructionResult>>> reconstructionFuture : reconstructionFutures.entrySet()) {
            try {
                String name = reconstructionFuture.getKey();
                List<Chain> reconstructions = reconstructionFuture.getValue().stream().map(future -> {
                    try {
                        return future.get();
                    } catch (Exception e) {
                        throw new ComputationException(e);
                    }
                }).map(ReconstructionResult::getChains).flatMap(Collection::stream).collect(Collectors.toList());
                logger.info("[{}][{}] {} reconstructs in bin", explorerChain.getStfId(), name, reconstructions.size());
                List<TMAlignAlignmentResult> alignmentResults = new ArrayList<>();
                List<Path> tmpFiles = new ArrayList<>();
                if (reconstructions.isEmpty()) {
                    throw new ComputationException("reconstruction did not yield any reconstructs");
                }
                for (Chain reconstructedChain : reconstructions) {
                    Path reconstructPath = Files.createTempFile("confoldservice-recon", ".pdb");
                    tmpFiles.add(reconstructPath);
                    Files.write(reconstructPath, reconstructedChain.getPdbRepresentation().getBytes());
                    alignmentResults.add(TM_ALIGN_SERVICE.process(new String[] { "/home/sb/programs/tmalign", nativeChainPath.toFile().getAbsolutePath(), reconstructPath.toFile().getAbsolutePath() }));
                }
                logger.info("[{}][{}] {} alignments in bin", explorerChain.getStfId(), name, alignmentResults.size());
                if (alignmentResults.isEmpty()) {
                    throw new ComputationException("tmalign did not yield any alignments");
                }
                for (TMAlignAlignmentResult alignmentResult : alignmentResults) {
                    double rmsd = alignmentResult.getRootMeanSquareDeviation().getScore();
                    String line = explorerChain.getStfId() + "," + name + "," + rmsd;
                    logger.info("[{}][{}] {}", explorerChain.getStfId(), name, line);
                    fileWriter.write(line + System.lineSeparator());
                    fileWriter.flush();
                }
                // cleanup
                for (Path tmpFile : tmpFiles) {
                    Files.delete(tmpFile);
                }
            } catch (IOException e) {
                throw new ComputationException(e);
            }
        }
    } catch (IOException | AlignmentException e) {
        throw new ComputationException(e);
    }
}
Also used : IntStream(java.util.stream.IntStream) java.util(java.util) PLIPInteraction(de.bioforscher.jstructure.feature.interaction.PLIPInteraction) ComputationException(de.bioforscher.jstructure.model.feature.ComputationException) TMAlignService(de.bioforscher.jstructure.align.impl.TMAlignService) LoggerFactory(org.slf4j.LoggerFactory) TestUtils(de.bioforscher.testutil.TestUtils) Future(java.util.concurrent.Future) ContactDistanceBin(de.bioforscher.jstructure.efr.model.ContactDistanceBin) AminoAcid(de.bioforscher.jstructure.model.structure.aminoacid.AminoAcid) Chain(de.bioforscher.jstructure.model.structure.Chain) ReconstructionResult(de.bioforscher.jstructure.si.model.ReconstructionResult) Path(java.nio.file.Path) AlignmentException(de.bioforscher.jstructure.align.AlignmentException) ExecutorService(java.util.concurrent.ExecutorService) Logger(org.slf4j.Logger) Files(java.nio.file.Files) FileWriter(java.io.FileWriter) ContactDefinition(de.bioforscher.jstructure.graph.contact.definition.ContactDefinition) IOException(java.io.IOException) Collectors(java.util.stream.Collectors) Pair(de.bioforscher.jstructure.mathematics.Pair) Executors(java.util.concurrent.Executors) ConfoldServiceWorker(de.bioforscher.jstructure.si.ConfoldServiceWorker) TMAlignAlignmentResult(de.bioforscher.jstructure.align.result.TMAlignAlignmentResult) Stream(java.util.stream.Stream) Paths(java.nio.file.Paths) ExplorerChain(de.bioforscher.jstructure.si.explorer.ExplorerChain) ContactStructuralInformation(de.bioforscher.jstructure.efr.model.si.ContactStructuralInformation) PLIPInteractionContainer(de.bioforscher.jstructure.feature.interaction.PLIPInteractionContainer) ReconstructionContactMap(de.bioforscher.jstructure.graph.ReconstructionContactMap) ContactDefinitionFactory(de.bioforscher.jstructure.graph.contact.definition.ContactDefinitionFactory) Chain(de.bioforscher.jstructure.model.structure.Chain) ExplorerChain(de.bioforscher.jstructure.si.explorer.ExplorerChain) ReconstructionContactMap(de.bioforscher.jstructure.graph.ReconstructionContactMap) AlignmentException(de.bioforscher.jstructure.align.AlignmentException) ContactStructuralInformation(de.bioforscher.jstructure.efr.model.si.ContactStructuralInformation) ReconstructionResult(de.bioforscher.jstructure.si.model.ReconstructionResult) ComputationException(de.bioforscher.jstructure.model.feature.ComputationException) Pair(de.bioforscher.jstructure.mathematics.Pair) Path(java.nio.file.Path) ConfoldServiceWorker(de.bioforscher.jstructure.si.ConfoldServiceWorker) AminoAcid(de.bioforscher.jstructure.model.structure.aminoacid.AminoAcid) IOException(java.io.IOException) ComputationException(de.bioforscher.jstructure.model.feature.ComputationException) AlignmentException(de.bioforscher.jstructure.align.AlignmentException) IOException(java.io.IOException) TMAlignAlignmentResult(de.bioforscher.jstructure.align.result.TMAlignAlignmentResult) PLIPInteractionContainer(de.bioforscher.jstructure.feature.interaction.PLIPInteractionContainer) Future(java.util.concurrent.Future) ReconstructionContactMap(de.bioforscher.jstructure.graph.ReconstructionContactMap)

Aggregations

ReconstructionContactMap (de.bioforscher.jstructure.graph.ReconstructionContactMap)9 Pair (de.bioforscher.jstructure.mathematics.Pair)8 Path (java.nio.file.Path)7 Chain (de.bioforscher.jstructure.model.structure.Chain)6 AminoAcid (de.bioforscher.jstructure.model.structure.aminoacid.AminoAcid)6 ConfoldServiceWorker (de.bioforscher.jstructure.si.ConfoldServiceWorker)6 IOException (java.io.IOException)6 Files (java.nio.file.Files)6 Logger (org.slf4j.Logger)6 LoggerFactory (org.slf4j.LoggerFactory)6 ComputationException (de.bioforscher.jstructure.model.feature.ComputationException)5 Collectors (java.util.stream.Collectors)5 AlignmentException (de.bioforscher.jstructure.align.AlignmentException)4 TMAlignService (de.bioforscher.jstructure.align.impl.TMAlignService)4 TMAlignAlignmentResult (de.bioforscher.jstructure.align.result.TMAlignAlignmentResult)4 ContactDefinitionFactory (de.bioforscher.jstructure.graph.contact.definition.ContactDefinitionFactory)4 ArrayList (java.util.ArrayList)4 ExecutorService (java.util.concurrent.ExecutorService)4 Executors (java.util.concurrent.Executors)4 Future (java.util.concurrent.Future)4