All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.biojava.nbio.structure.io.FileParsingParameters Maven / Gradle / Ivy

/*
 *                    BioJava development code
 *
 * This code may be freely distributed and modified under the
 * terms of the GNU Lesser General Public Licence.  This should
 * be distributed with the code.  If you do not have a copy,
 * see:
 *
 *      http://www.gnu.org/copyleft/lesser.html
 *
 * Copyright for this code is held jointly by the individual
 * authors.  These should be listed in @author doc comments.
 *
 * For more information on the BioJava project and its aims,
 * or to join the biojava-l mailing list, visit the home page
 * at:
 *
 *      http://www.biojava.org/
 *
 * Created on Jun 16, 2010
 * Author: ap3
 *
 */

package org.biojava.nbio.structure.io;

import java.io.Serializable;

import org.biojava.nbio.structure.AminoAcid;

/**
 * A class that configures parameters that can be sent to the PDB file parsers
 *
 * 
    *
  • {@link #setParseCAOnly(boolean)} - parse only the Atom records for C-alpha atoms
  • *
  • {@link #setParseSecStruc(boolean)} - a flag if the secondary structure information from the PDB file (author's assignment) should be parsed. * If true the assignment can be accessed through {@link AminoAcid}.getSecStruc();
  • *
  • {@link #setAlignSeqRes(boolean)} - should the AminoAcid sequences from the SEQRES * and ATOM records of a PDB file be aligned? (default:yes)
  • *
  • {@link #setHeaderOnly(boolean)} - parse only the PDB/mmCIF file header, ignoring coordinates *
  • *
  • {@link #setCreateAtomBonds(boolean)} - create atom bonds from parsed bonds in PDB/mmCIF files and chemical component files *
  • *
* * @author Andreas Prlic * */ public class FileParsingParameters implements Serializable { private static final long serialVersionUID = 5878292315163939027L; /** * Flag to detect if the secondary structure info should be read * */ private boolean parseSecStruc; /** * Flag to control if SEQRES and ATOM records should be aligned */ private boolean alignSeqRes; /** * Flag to control reading in only Calpha atoms - this is useful for parsing large structures like 1htq. */ private boolean parseCAOnly; /** * Flag to parse header only */ private boolean headerOnly; /** * The maximum number of atoms that will be parsed before the parser switches to a CA-only * representation of the PDB file. If this limit is exceeded also the SEQRES groups will be * ignored. */ public static final int ATOM_CA_THRESHOLD = 500000; private int atomCaThreshold; /** * Should we parse the biological assembly information from a file? */ private boolean parseBioAssembly; /** * Should we create bonds between atoms when parsing a file? */ private boolean createAtomBonds; /** * Should we create charges on atoms when parsing a file? */ private boolean createAtomCharges; /** * The maximum number of atoms we will add to a structure, * this protects from memory overflows in the few really big protein structures. */ public static final int MAX_ATOMS = Integer.MAX_VALUE; // no limit, we don't want to truncate molecules, but the user should make sure there is more memory available //public static final int MAX_ATOMS = 700000; // tested with java -Xmx300M int maxAtoms ; String[] fullAtomNames; public FileParsingParameters(){ setDefault(); } public void setDefault(){ parseSecStruc = false; // Default is to align / when false the unaligned SEQRES is stored. alignSeqRes = true; parseCAOnly = false; headerOnly = false; fullAtomNames = null; maxAtoms = MAX_ATOMS; atomCaThreshold = ATOM_CA_THRESHOLD; parseBioAssembly = false; createAtomBonds = false; createAtomCharges = true; } /** * Is secondary structure assignment being parsed from the file? * default is null * @return boolean if HELIX STRAND and TURN fields are being parsed */ public boolean isParseSecStruc() { return parseSecStruc; } /** * A flag to tell the parser to parse the Author's secondary structure assignment from the file * default is set to false, i.e. do NOT parse. * @param parseSecStruc if HELIX STRAND and TURN fields are being parsed */ public void setParseSecStruc(boolean parseSecStruc) { this.parseSecStruc = parseSecStruc; } /** Parse only the PDB file header out of the files * * @return flag */ public boolean isHeaderOnly() { return headerOnly; } /** Parse only the PDB file header out of the files * * @param headerOnly flag */ public void setHeaderOnly(boolean headerOnly) { this.headerOnly = headerOnly; } /** * The flag if only the C-alpha atoms of the structure should be parsed. * * @return the flag */ public boolean isParseCAOnly() { return parseCAOnly; } /** * Flag if only the C-alpha atoms of the structure should be parsed. * * @param parseCAOnly boolean flag to enable or disable C-alpha only parsing */ public void setParseCAOnly(boolean parseCAOnly) { this.parseCAOnly = parseCAOnly; } /** Flag if the SEQRES amino acids should be aligned with the ATOM amino acids. * * @return flag if SEQRES - ATOM amino acids alignment is enabled */ public boolean isAlignSeqRes() { return alignSeqRes; } /** * Define if the SEQRES in the structure should be aligned with the ATOM records * if yes, the AminoAcids in structure.getSeqRes will have the coordinates set. * @param alignSeqRes */ public void setAlignSeqRes(boolean alignSeqRes) { this.alignSeqRes = alignSeqRes; } /** * By default the parser will read in all atoms (unless using the CAonly switch). This allows to specify a set of atoms to be read. e.g. * {"CA", "CB" }. Returns null if all atoms are accepted. * @return accepted atom names, or null if all atoms are accepted. default null */ public String[] getAcceptedAtomNames() { return fullAtomNames; } /** * By default the parser will read in all atoms (unless using the CAonly switch). This allows to specify a set of atoms to be read. e.g. * {"CA", "CB" }. Returns null if all atoms are accepted. * @param fullAtomNames accepted atom names, or null if all atoms are accepted. default null */ public void setAcceptedAtomNames(String[] fullAtomNames) { this.fullAtomNames = fullAtomNames; } /** * The maximum numbers of atoms to load in a protein structure (prevents memory overflows) * * @return maximum nr of atoms to load, default Integer.MAX_VALUE; */ public int getMaxAtoms() { return maxAtoms; } /** * The maximum numbers of atoms to load in a protein structure (prevents memory overflows) * * @param maxAtoms maximun nr of atoms to load */ public void setMaxAtoms(int maxAtoms) { this.maxAtoms = maxAtoms; } /** * The maximum number of atoms that will be parsed before the parser switches to a CA-only * representation of the PDB file. If this limit is exceeded also the SEQRES groups will be * ignored. * * * @return atomCaThreshold. */ public int getAtomCaThreshold() { return atomCaThreshold; } /** * The maximum number of atoms that will be parsed before the parser switches to a CA-only * representation of the PDB file. If this limit is exceeded also the SEQRES groups will be * ignored. * @param atomCaThreshold maximum number of atoms for all atom representation. */ public void setAtomCaThreshold(int atomCaThreshold) { this.atomCaThreshold = atomCaThreshold; } /** Should the biological assembly info (REMARK 350) be parsed from the PDB file? * * @return boolean flag yes/no */ public boolean isParseBioAssembly() { return parseBioAssembly; } /** Should the biological assembly info (REMARK 350) be parsed from the PDB file? * * @param parseBioAssembly boolean flag yes/no */ public void setParseBioAssembly(boolean parseBioAssembly) { this.parseBioAssembly = parseBioAssembly; } /** * Should we create bonds between atoms when parsing a file? * * @return true if we should create the bonds, false if not */ public boolean shouldCreateAtomBonds() { return createAtomBonds; } /** * Should we create bonds between atoms when parsing a file. * Will create intra-group bonds from information available in chemical component files and * some other bonds from struc_conn category in mmCIF file. * * @param createAtomBonds * true if we should create the bonds, false if not * @see BondMaker */ public void setCreateAtomBonds(boolean createAtomBonds) { this.createAtomBonds = createAtomBonds; } /** * Should we create charges on atoms when parsing a file? * * @return true if we should create the charges, false if not */ public boolean shouldCreateAtomCharges() { return createAtomCharges; } /** * Should we create charges on atoms when parsing a file? * * @param createAtomCharges * true if we should create the charges, false if not */ public void setCreateAtomCharges(boolean createAtomCharges) { this.createAtomCharges = createAtomCharges; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy