@InternalAPI public abstract class BAMCodec extends java.lang.Object implements ReadsCodec
BundleResourceType.READS_BAM codecs.| Modifier and Type | Field and Description |
|---|---|
static HtsVersion |
BAM_DEFAULT_VERSION |
| Constructor and Description |
|---|
BAMCodec() |
| Modifier and Type | Method and Description |
|---|---|
boolean |
canDecodeURI(IOPath ioPath)
Determine if the URI for
ioPath (obtained via IOPath.getURI())
conforms to the expected URI format this codec's file format. |
java.lang.String |
getFileFormat()
Get the name of the file format supported by this codec.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitgetContentTypecanDecodeSignature, getDecoder, getDisplayName, getEncoder, getSignatureLength, getSignatureProbeLength, getVersion, ownsURIrunVersionUpgradepublic static final HtsVersion BAM_DEFAULT_VERSION
public java.lang.String getFileFormat()
HtsCodecBundleResourceType and BundleResource.getFileFormat()).getFileFormat in interface HtsCodec<ReadsDecoderOptions,ReadsEncoderOptions>public boolean canDecodeURI(IOPath ioPath)
HtsCodecioPath (obtained via IOPath.getURI())
conforms to the expected URI format this codec's file format.
Most implementations only look at the file extension (see IOPath.hasExtension(java.lang.String)).
For codecs that implement formats that use specific, well known file extensions, the codec should
reject inputs that do not conform to any of the accepted extensions. If the format does not use a
specific extension, or if the codec cannot determine if it can decode the underlying resource
without inspecting the underlying stream, it is safe to return true, after which the framework will
subsequently call this codec's HtsCodec.canDecodeSignature(SignatureStream, String) method, at
which time the codec can inspect the actual underlying stream via the SignatureStream.
Implementations should generally not inspect the URI's protocol scheme unless the file format
supported by the codec requires the use a specific protocol scheme. For codecs that do own
a specific scheme or URI format, the return values for HtsCodec.ownsURI(IOPath) and
HtsCodec.canDecodeURI(IOPath) must always be the same (both true or both false) for a given IOPath.
For codecs that do not use a custom URI (and rely on NIO access), @link #ownsURI(IOPath)} should
always return false, with only the value returned from HtsCodec.canDecodeURI(IOPath) varying based
on features such as file extension probes.
It is never safe to attempt to directly inspect the underlying stream for ioPath
in this method. If the stream needs to be inspected, it should be done using the signature stream
when the HtsCodec.canDecodeSignature(SignatureStream, String) method is called.
HtsCodec.ownsURI(IOPath), codecs should avoid making remote calls
to determine the suitability of the input resource; the return value for this method should be based
only on the format of the URI that is presented.
Since this method is used during codec resolution, implementations should avoid calling methods that
may throw exceptions.canDecodeURI in interface HtsCodec<ReadsDecoderOptions,ReadsEncoderOptions>ioPath - to be decoded