private void initializeProcesses() throws Exception { MolecularSystem system = null; if (mainTopologyFile != null) { List<MolecularSystem> systems = mainTopologyFile.getMolecularSystems(); if (systems != null && systems.size() > 0) { system = systems.get(0); List<Molecule> molecules = system.getSoluteMolecules(); // get list of molecules defined in ITP files if (mainTopologyFile.getFormat().equals(LocalFile.FORMAT_GROMACS_TOP)) { List<LocalFile> filesInclude = allFiles.get(LocalFile.FORMAT_GROMACS_ITP); if (filesInclude != null && molecules != null) { for (LocalFile fileItp : filesInclude) { if (fileItp instanceof GROMACSIncludeTopologyFile) { List<Molecule> localMoleculeDefs = ((GROMACSIncludeTopologyFile) fileItp).getMolecules(); if (localMoleculeDefs != null) { // for each molecule in the ITP file, replace in the TOP file for (Molecule molDef : localMoleculeDefs) { for (int m = 0; m < molecules.size(); m++) { Molecule mol = molecules.get(m); if (molDef.getName() != null && mol.getName() != null && molDef.getName().toUpperCase().equals(mol.getName().toUpperCase())) { molecules.set(m, molDef); } } } } } } } } } } List<ExperimentProcess> processes = this.initializeProcesses(parameterFileFormats); ExperimentProcessGroup processGroup = new ExperimentProcessGroup(null, description, system, processes); processGroup.organizeProcessesForMD(); this.processGroups = new ArrayList<ExperimentProcessGroup>(); this.processGroups.add(processGroup); }
/** * Get Gromacs collection metadata * * @throws Exception */ @Override public MetadataAVUList getMetadata() throws Exception { MetadataAVUList metadata = super.getMetadata(); // add aggregated metadata SummaryExperimentTasks tasksSummary = this.getExperimentTasksSummary(); if (tasksSummary != null) { metadata.addAll(tasksSummary.getMetadata()); } // default to MD if no method found if (!metadata.containsAttribute(MethodMetadata.COMPUTATIONAL_METHOD_NAME)) { metadata.add( new MetadataAVU(MethodMetadata.COMPUTATIONAL_METHOD_NAME, ParameterSet.METHOD_MD)); } // if no task found, default software name to AMBER if (!metadata.containsAttribute(PlatformMetadata.SOFTWARE_NAME)) metadata.add(new MetadataAVU(PlatformMetadata.SOFTWARE_NAME, Software.GROMACS)); // add topology info if (mainTopologyFile != null && mainTopologyFile.getMolecularSystems() != null && mainTopologyFile.getMolecularSystems().size() > 0) { MolecularSystem system = mainTopologyFile.getMolecularSystems().get(0); metadata.addAll(system.getMetadata()); if (!metadata.containsAttribute(MethodMetadata.SOLVENT_TYPE)) { // if water or ions are present, assume solvated system if (system.getIonCount() > 0 || system.getSolventMoleculeCount() > 0) metadata.updatePair(MethodMetadata.SOLVENT_TYPE, ParameterSet.SOLVENT_EXPLICIT); else metadata.add(new MetadataAVU(MethodMetadata.SOLVENT_TYPE, ParameterSet.SOLVENT_IN_VACUO)); } } return metadata; }