In isopycnic centrifugation, a species concentrates near the position where the liquid's density matches its buoyant density. In a density gradient increasing outward, material displaced inward encounters less-dense liquid and tends to move outward; material displaced outward encounters denser liquid and tends to move inward. Diffusion broadens the resulting band. If the density gradient never reaches the species' buoyant density, a matching equilibrium position need not exist within the vessel.[ref]
https://www.beckman.com/resources/technologies/centrifugation/ultracentrifugation/. An Introduction to Ultracentrifugation, Isopycnic Centrifugation: matching buoyant density and diffusion in equilibrium gradients
The 1958 paper The replication of DNA in Escherichia coli by Matthew Meselson and Franklin W. Stahl (pp. 672–676, Figures 1–4) makes the distinction concrete. Its separation apparatus was a Spinco Model E ultracentrifuge with an Escherichia coli lysate in a cesium chloride density gradient. Ultraviolet wave absorption photographs of the rotating sample were scanned with a recording microdensitometer: peak position reported buoyant density, while signal above baseline reported DNA concentration.[ref]
Cultures received labeled nitrogen; chilled biological cells were collected as centrifugation pellets and disrupted before molecular banding.[ref]
The replication of DNA in Escherichia coli by Matthew Meselson and Franklin W. Stahl. pp. 673–674, Experimental: labeled growth medium, chilled collection and detergent disruption
Mixed lysates labeled fully with the nitrogen isotope and unlabeled lysates supplied reference bands; a mixture including intermediate material checked its position relative to those references. Figure 1 followed band formation over time, helping distinguish a migrating distribution from an approximately stationary one. These controls address resolution, calibration and approach to equilibrium. They do not make every ultraviolet-absorbing component identifiable as DNA, or turn a band into a direct image of individual strands. The DNA replication article develops the copying inference; here the key result is a separation by buoyant density, not a claim that heavier-labeled DNA is physically larger.[ref]
The replication of DNA in Escherichia coli by Matthew Meselson and Franklin W. Stahl. pp. 672–673, Figures 1–2; p. 675, Figure 4 density references and microdensitometer baseline; p. 676, Experimental: Spinco Model E and ultraviolet photographs
Protein aggregation is the association of proteins into clusters, often involving exposed regions of partly folded or unfolded polypeptide chains. It can prevent recovery of normal function while leaving the protein primary structures intact. It is distinct from both unfolding one chain and the functional assembly described by protein quaternary structure. See Cooper: partly folded chains, aggregation and chaperone protection.
Short inputs can spend much of their size on Deflate block framing, the end-of-block symbol and, for dynamic blocks, Deflate Huffman coding descriptions. A repeated phrase is useful only if its Deflate backreference costs less than the Deflate literal bytes it replaces. Huffman coding adapts instruction costs; it does not make either references or code descriptions free.
For an exact expansion example, take the 256 bytes with values , each appearing once. A single fixed block containing only Deflate literal bytes costs bits, or 272 bytes after final packing. One stored block starting at a byte boundary instead costs five overhead bytes plus the 256 data bytes, or 261 bytes. Both exceed the 256-byte input; these counts follow the specified layouts and are not measurements of an encoder's automatic choice. The example illustrates universal lossless shortening is impossible.[ref]
The following independent experiment obtains an actual raw Deflate stream using the standard library's The printed bytes describe this library run. Exact roundtrip recovery is the check; a particular compressed length or instruction choice is not a guarantee for other inputs or library versions.
zlib module, then checks exact recovery. Negative wbits selects raw framing; the three lines of compressed-data handling make no assumptions about which Deflate backreferences the library selects.[ref]zlib — Compression compatible with gzip (Python 3.14 documentation). Python 3.14 zlib documentation, compressobj, decompress and negative wbits
import zlib
data = b"ABCABCABCABC"
encoder = zlib.compressobj(level=6, wbits=-15)
packed = encoder.compress(data) + encoder.flush()
assert zlib.decompress(packed, wbits=-15) == data
print(len(data), len(packed), packed.hex())Each block starts with a one-bit
BFINAL flag and a two-bit BTYPE field. The BTYPE values are 0 for stored data, 1 for fixed Huffman codes, 2 for dynamic Huffman codes, and 3 for an invalid reserved value. For compressed blocks, symbol 256 ends the current block; BFINAL = 1 says this is the last block. An end-of-block symbol does not mean a literal zero byte, and in a nonfinal block it does not end the whole stream.[ref]DEFLATE Compressed Data Format Specification version 1.3 by L. Peter Deutsch. RFC 1951, section 3.2.3: header, block types and decoding loop
Deflate separates literal and copy instructions from Huffman coding and final-block framing; stored blocks bypass both stages
. Details. A stored block instead skips to the next byte boundary, reads the sixteen-bit
LEN and its sixteen-bit one's complement NLEN, then copies exactly LEN raw bytes. Its length field replaces the compressed block's end-of-block symbol. A compressed block need not end at a byte boundary, so the next block header can start inside the current byte.[ref]The diagram shows logical fields, not a serialization into bits. RFC 1951 specifies bit packing separately, including different conventions for codewords and other fields (section 3.1.1). For PNG, the filtered image data is compressed inside a zlib wrapper with its own header and checksum; raw Deflate and a complete PNG file therefore have different framing.[ref]
For a compressed block, Deflate Huffman coding uses one alphabet for Deflate literal bytes, length symbols and the end-of-block symbol, and another alphabet for distance symbols. Values 0 through 255 denote Deflate literal bytes, 256 ends the block, and 257 through 285 select lengths. A Deflate backreference is encoded as a length symbol, any length extra bits, a distance symbol, then any distance extra bits. Those extra bits select an offset within the symbol's prescribed range; they are not additional codewords.[ref]
In the illustrative Deflate backreference, length 9 uses symbol 263 and distance 3 uses symbol 2; neither needs extra bits. Under the fixed Huffman codes,
A, B and C each cost eight bits, symbol 263 costs seven, and distance symbol 2 costs five. Adding the seven-bit end-of-block symbol and three-bit block header gives bits, packed into six bytes for a single final block. This is a cost calculation for the explicitly chosen instructions, not a displayed compressed stream.[ref]Dynamic blocks transmit codeword lengths from which the decoder reconstructs the prescribed prefix codes. The code descriptions themselves use a smaller Huffman code and repeat instructions for successive codeword lengths, including runs of zero lengths. Here run-length encoding describes repeated code lengths, a separate role from copying repeated data bytes. Fixed blocks use predefined Huffman codes and avoid transmitting those descriptions.[ref]
A Deflate backreference specifies a length and backward distance , measured in decoded bytes. If bytes have already been produced, append bytes starting at output index , counting indices from zero. The permitted ranges are and . Without a supplied initial history, is also required. The distance refers to decoded history, not a position in the compressed input.[ref]
For the twelve bytes
ABCABCABCABC, an illustrative instruction sequence is three Deflate literal bytes A, B, C, followed by the Deflate backreference . Run-length encoding sees twelve single-byte runs because neighbouring values differ; the Deflate backreference describes a repeated three-byte pattern instead. Conversely, a Deflate literal byte A followed by produces AAAAAAAA: distance one can express a single-value repetition. These are chosen instructional examples, not claims about an encoder's chosen instructions or complete serialized streams.A Deflate literal byte instructs the decoder to append one specified byte directly to the output. For example, three Deflate literal bytes with values 65, 66 and 67 produce
ABC. These values are symbols in the Deflate Huffman coding stage, rather than necessarily eight raw stored bits each. A Deflate backreference instead describes a copy from earlier output. There are unlisted articles, also show them or only show them.
