Class MRecordImporter

java.lang.Object
chemaxon.marvin.io.MRecordImporter

@PublicApi public class MRecordImporter extends Object
Marvin molecule file reader.

The processing is single-threaded by default. Concurrent mode can be enabled using setThreadCount(int).

Since:
Marvin 5.0, 05/07/2007
  • Constructor Details

  • Method Details

    • setThreadCount

      public void setThreadCount(int threadCount) throws IllegalStateException
      Sets the number of threads for concurrent processing. The default value is 1 (single-threaded mode).

      In concurrent mode, multiple threads are started in the background, which adds a considerable overhead to the processing, so only use this mode if the number of molecules is huge. In single-threaded mode, no background thread is used, every action is done on the caller thread.

      Note, that in concurrent mode the import is not rewindable.

      Parameters:
      threadCount - the number of threads, set 0 for the number of CPUs, 1 for single-threaded mode
      Throws:
      IllegalStateException - if called after isSeekable() or readMol(chemaxon.struc.Molecule) or readDoc().
      Since:
      Marvin 5.3
    • setProgressMonitor

      public void setProgressMonitor(MProgressMonitor pmon)
      Sets the progress monitor.
      Parameters:
      pmon - the progress monitor
    • createImportMod

      public static MolImportModule createImportMod(MolInputStream mis) throws IOException
      Creates an importer for the specified molecule input stream.
      Parameters:
      mis - the molecule input stream
      Throws:
      MolFormatException - If the format is not recognizable
      IOException - If I/O error occurred
    • createImportMod

      public static MolImportModule createImportMod(String fmt) throws IOException
      Creates an importer for the specified molecule format.
      Parameters:
      fmt - the molecule format
      Throws:
      MolFormatException - If the format is not recognizable
      IOException - If I/O error occurred
      Since:
      Marvin 5.2
    • getOptions

      public String getOptions()
      Gets the options for the import module.
      Returns:
      the import options
    • setOptions

      public void setOptions(String opts)
      Sets the options for the import module.
      Parameters:
      opts - options passed to the import module or null
      Throws:
      IllegalStateException - if called after readMol(chemaxon.struc.Molecule) or readDoc().
    • readDoc

      public MDocument readDoc() throws MRecordParseException, IOException
      Reads the next document.
      Returns:
      the document or null at end of file
      Throws:
      MRecordParseException - If the record could not be parsed
      MolFormatException - If the file format is invalid
      IOException - If I/O error occurred
    • readMol

      public Molecule readMol(Molecule mol) throws MRecordParseException, IOException
      Reads the next molecule. If the 'mol' parameter is not null then processing is single-threaded.
      Parameters:
      mol - target object or null
      Returns:
      the molecule or null at end of file
      Throws:
      MRecordParseException - If the record could not be parsed
      MolFormatException - If the file format is invalid
      IOException - If I/O error occurred
    • readMultiSet

      public Molecule readMultiSet(Molecule m) throws MRecordParseException, IOException
      Reads molecules as one multi-set molecule. Processing is single-threaded.
      Parameters:
      m - the output molecule object
      Returns:
      the molecule in case of success, null otherwise
      Throws:
      IOException - cannot read molecule (bad format or I/O error)
      MRecordParseException
    • readMolMovie

      public MDocument readMolMovie(MDocument doc) throws IOException
      Reads molecules as a movie. Processing is single-threaded.
      Parameters:
      doc - the output document object or null
      Returns:
      the document if success, null otherwise
      Throws:
      MolFormatException - invalid molecule file
      IOException - cannot read molecule (bad format or I/O error)
      Since:
      Marvin 5.2, 02/12/2009
    • readRecordAsText

      public String readRecordAsText() throws MRecordParseException, IOException
      Reads the next record. Processing is single-threaded.
      Returns:
      the record or null at end of file
      Throws:
      MRecordParseException - If the record could not be parsed
      IOException - If I/O error occurred
      IllegalStateException - if the concurrent processor is already running
    • getGlobalProperties

      public MPropertyContainer getGlobalProperties()
      Gets the global properties.
      Returns:
      the global properties or null
    • isSeekable

      public boolean isSeekable()
      Tests whether the record reader is seekable. In concurrent mode always returns false. Therefore this method should not be called before calling setThreadCount(int).
      Returns:
      true if it is seekable, false otherwise
      See Also:
    • getFormat

      public String getFormat()
      Gets the file format.
      Returns:
      the format
    • getQueryMode

      public boolean getQueryMode()
      Gets the query mode. SMILES strings are imported as SMARTS if query mode is set.
      Returns:
      query mode
    • setQueryMode

      public void setQueryMode(boolean q)
      Sets the query mode. SMILES strings are imported as SMARTS if query mode is set. IMPORTANT: call this before any call to readDoc() or readMol(chemaxon.struc.Molecule).
      Parameters:
      q - query mode
      Throws:
      IllegalStateException - if the concurrent processor is already running
    • getFilePointer

      public long getFilePointer()
      Gets the current position in the input file.
      Returns:
      the position
      Throws:
      IllegalStateException - if the concurrent processor is running
    • length

      public long length() throws IOException
      Gets the length of the input file.
      Returns:
      the length
      Throws:
      IOException - if the length cannot be determined
    • getLineCount

      public int getLineCount()
      Gets the current line number in the input file.
      Returns:
      the position
    • seek

      public void seek(long p, int lcount, int k) throws IOException
      Sets the file-pointer offset, measured from the beginning of this file, at which the next read or write occurs.
      Parameters:
      p - the file pointer
      lcount - the line count at the specified position
      k - the record count at the specified position
      Throws:
      IOException - if pos is less than 0 or if an I/O error occurs.
      UnsupportedOperationException - if the concurrent processor is running
    • skipRecord

      public MRecord skipRecord() throws MRecordParseException, IOException
      Skips the next document. Not implemented for concurrent processing, in this case returns the next complete record.
      Returns:
      incomplete record info containing only the start and end positions, or null if there are no more records
      Throws:
      IOException - If I/O error occurred
      MRecordParseException
    • close

      public void close() throws IOException
      Closes the input stream. IMPORTANT: call this after reading molecules to close concurrent processing properly.
      Throws:
      IOException - If I/O error occurred
    • getMolImportModule

      public MolImportModule getMolImportModule()
    • getMoleculeString

      public String getMoleculeString()
      Gets the last molecule as a string.
      Returns:
      the molecule as a string
    • createMolIfNeeded

      public Molecule createMolIfNeeded()
      Creates an empty target molecule for import if non-concurrent mode, returns null if concurrent mode.
      Returns:
      an empty molecule or null
      Since:
      Marvin 5.3
    • createMol

      public Molecule createMol()
      Creates an empty target molecule for import.
      Returns:
      an empty molecule
    • getRecordReader

      public MRecordReader getRecordReader()
      Gets the record reader.
      Returns:
      the record reader