Package chemaxon.marvin.io
Class MRecordImporter
- java.lang.Object
-
- chemaxon.marvin.io.MRecordImporter
-
@PublicAPI public class MRecordImporter extends Object
Marvin molecule file reader. By default, in case of machines with multiple processors processing is concurrent, otherwise single-threaded. By default, the number of worker threads is the number of processors - the number of concurrent threads can be set insetThreadCount(int)
.- Since:
- Marvin 5.0, 05/07/2007
-
-
Constructor Summary
Constructors Constructor Description MRecordImporter(MolInputStream in, String opts)
Creates a reader for the specified molecule input stream in concurrent mode.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
Closes the input stream.static MolImportModule
createImportMod(MolInputStream mis)
Creates an importer for the specified molecule input stream.static MolImportModule
createImportMod(String fmt)
Creates an importer for the specified molecule format.Molecule
createMol()
Creates an empty target molecule for import.Molecule
createMolIfNeeded()
Creates an empty target molecule for import if non-concurrent mode, returnsnull
if concurrent mode.long
getFilePointer()
Gets the current position in the input file.String
getFormat()
Gets the file format.MPropertyContainer
getGlobalProperties()
Gets the global properties.int
getLineCount()
Gets the current line number in the input file.String
getMoleculeString()
Gets the last molecule as a string.MolImportModule
getMolImportModule()
String
getOptions()
Gets the options for the import module.boolean
getQueryMode()
Gets the query mode.MRecordReader
getRecordReader()
Gets the record reader.boolean
isSeekable()
Tests whether the record reader is seekable.long
length()
Gets the length of the input file.MDocument
readDoc()
Reads the next document.Molecule
readMol(Molecule mol)
Reads the next molecule.MDocument
readMolMovie(MDocument doc)
Reads molecules as a movie.Molecule
readMultiSet(Molecule m)
Reads molecules as one multi-set molecule.String
readRecordAsText()
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
setProgressMonitor(MProgressMonitor pmon)
Sets the progress monitor.void
setQueryMode(boolean q)
Sets the query mode.void
setThreadCount(int threadCount)
Sets the number of threads for concurrent processing.MRecord
skipRecord()
Skips the next document.
-
-
-
Constructor Detail
-
MRecordImporter
public MRecordImporter(MolInputStream in, String opts) throws MolFormatException, IOException
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 Detail
-
setThreadCount
public void setThreadCount(int threadCount) throws IllegalStateException
Sets the number of threads for concurrent processing. Default: the number of CPUs, single-threaded processing if there is1
CPU. 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
public void setProgressMonitor(MProgressMonitor pmon)
Sets the progress monitor.- Parameters:
pmon
- the progress monitor
-
createImportMod
public static MolImportModule createImportMod(MolInputStream mis) throws IOException, MolFormatException
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
public static MolImportModule createImportMod(String fmt) throws IOException, MolFormatException
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
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 ornull
- Throws:
IllegalStateException
- if called afterreadMol(chemaxon.struc.Molecule)
orreadDoc()
.
-
readDoc
public MDocument readDoc() throws MRecordParseException, MolFormatException, IOException
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
public Molecule readMol(Molecule mol) throws MRecordParseException, MolFormatException, IOException
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
public Molecule readMultiSet(Molecule m) throws MRecordParseException, MolFormatException, 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
MolFormatException
-
readMolMovie
public MDocument readMolMovie(MDocument doc) throws MolFormatException, IOException
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
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 parsedIOException
- If I/O error occurredIllegalStateException
- 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 returnsfalse
. Therefore this method should not be called before callingsetThreadCount(int)
.- Returns:
true
if it is seekable,false
otherwise- See Also:
setThreadCount(int)
-
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 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
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 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
public MRecord skipRecord() throws MRecordParseException, MolFormatException, 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 occurredMRecordParseException
MolFormatException
-
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, returnsnull
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
-
-