Package chemaxon.marvin.io
Class MRecordImporter
java.lang.Object
chemaxon.marvin.io.MRecordImporter
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 Summary
ConstructorDescriptionMRecordImporter
(MolInputStream in, String opts) Creates a reader for the specified molecule input stream in concurrent mode. -
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
Closes the input stream.static MolImportModule
Creates an importer for the specified molecule input stream.static MolImportModule
createImportMod
(String fmt) Creates an importer for the specified molecule format.Creates an empty target molecule for import.Creates an empty target molecule for import if non-concurrent mode, returnsnull
if concurrent mode.long
Gets the current position in the input file.Gets the file format.Gets the global properties.int
Gets the current line number in the input file.Gets the last molecule as a string.Gets the options for the import module.boolean
Gets the query mode.Gets the record reader.boolean
Tests whether the record reader is seekable.long
length()
Gets the length of the input file.readDoc()
Reads the next document.Reads the next molecule.readMolMovie
(MDocument doc) Reads molecules as a movie.Reads molecules as one multi-set molecule.Reads the next record.void
seek
(long p, int lcount, int k) Sets the file-pointer offset, measured from the beginning of this file, at which the next read or write occurs.void
setOptions
(String opts) Sets the options for the import module.void
Sets the progress monitor.void
setQueryMode
(boolean q) Sets the query mode.void
setThreadCount
(int threadCount) Sets the number of threads for concurrent processing.Skips the next document.
-
Constructor Details
-
MRecordImporter
Creates a reader for the specified molecule input stream in concurrent mode.- Parameters:
in
- the molecule input streamopts
- input options ornull
- Throws:
MolFormatException
- If the format is not recognizableIOException
- If I/O error occurredIllegalCharsetNameException
- if illegal encoding is usedUnsupportedCharsetException
- if unsupported encoding is used
-
-
Method Details
-
setThreadCount
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, set0
for the number of CPUs,1
for single-threaded mode- Throws:
IllegalStateException
- if called afterisSeekable()
orreadMol(chemaxon.struc.Molecule)
orreadDoc()
.- Since:
- Marvin 5.3
-
setProgressMonitor
Sets the progress monitor.- Parameters:
pmon
- the progress monitor
-
createImportMod
Creates an importer for the specified molecule input stream.- Parameters:
mis
- the molecule input stream- Throws:
MolFormatException
- If the format is not recognizableIOException
- If I/O error occurred
-
createImportMod
Creates an importer for the specified molecule format.- Parameters:
fmt
- the molecule format- Throws:
MolFormatException
- If the format is not recognizableIOException
- If I/O error occurred- Since:
- Marvin 5.2
-
getOptions
Gets the options for the import module.- Returns:
- the import options
-
setOptions
Sets the options for the import module.- Parameters:
opts
- options passed to the import module ornull
- Throws:
IllegalStateException
- if called afterreadMol(chemaxon.struc.Molecule)
orreadDoc()
.
-
readDoc
Reads the next document.- Returns:
- the document or
null
at end of file - Throws:
MRecordParseException
- If the record could not be parsedMolFormatException
- If the file format is invalidIOException
- If I/O error occurred
-
readMol
Reads the next molecule. If the 'mol' parameter is notnull
then processing is single-threaded.- Parameters:
mol
- target object ornull
- Returns:
- the molecule or
null
at end of file - Throws:
MRecordParseException
- If the record could not be parsedMolFormatException
- If the file format is invalidIOException
- If I/O error occurred
-
readMultiSet
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
Reads molecules as a movie. Processing is single-threaded.- Parameters:
doc
- the output document object ornull
- Returns:
- the document if success,
null
otherwise - Throws:
MolFormatException
- invalid molecule fileIOException
- cannot read molecule (bad format or I/O error)- Since:
- Marvin 5.2, 02/12/2009
-
readRecordAsText
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 parsedIOException
- If I/O error occurredIllegalStateException
- if the concurrent processor is already running
-
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 returnsfalse
. Therefore this method should not be called before callingsetThreadCount(int)
.- Returns:
true
if it is seekable,false
otherwise- See Also:
-
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 toreadDoc()
orreadMol(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
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
Sets the file-pointer offset, measured from the beginning of this file, at which the next read or write occurs.- Parameters:
p
- the file pointerlcount
- the line count at the specified positionk
- the record count at the specified position- Throws:
IOException
- ifpos
is less than0
or if an I/O error occurs.UnsupportedOperationException
- if the concurrent processor is running
-
skipRecord
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 occurredMRecordParseException
-
close
Closes the input stream. IMPORTANT: call this after reading molecules to close concurrent processing properly.- Throws:
IOException
- If I/O error occurred
-
getMolImportModule
-
getMoleculeString
Gets the last molecule as a string.- Returns:
- the molecule as a string
-
createMolIfNeeded
Creates an empty target molecule for import if non-concurrent mode, returnsnull
if concurrent mode.- Returns:
- an empty molecule or
null
- Since:
- Marvin 5.3
-
createMol
Creates an empty target molecule for import.- Returns:
- an empty molecule
-
getRecordReader
Gets the record reader.- Returns:
- the record reader
-