Equal Earth Documentation¶
Equal Earth Projection¶
This is a matplotlib
add-on that adds the Equal Earth Projection
described by Bojan Šavrič (@BojanSavric), Tom Patterson and Bernhard Jenny:
- Abstract:
- “The Equal Earth map projection is a new equal-area pseudocylindrical projection for world maps. It is inspired by the widely used Robinson projection, but unlike the Robinson projection, retains the relative size of areas. The projection equations are simple to implement and fast to evaluate. Continental outlines are shown in a visually pleasing and balanced way.”
- https://doi.org/10.1080/13658816.2018.1504949
- https://www.researchgate.net/publication/326879978_The_Equal_Earth_map_projection
This projection is similar to the Eckert IV equal area projection, but is 2-5x faster to calculate. It is based on code from:
as well as code from @mbostock:
Requirements¶
shapefile (from pyshp) is required to read the map data. This is available from Anaconda, but must be installed first, from the command line:
>>>conda install shapefile
Installation¶
Only the EqualEarth.py file is required. You can download the entire repository using the green “Clone or download” button, or by clicking on the file link, then right-clicking on the “Raw” tab to download the actual script. The script must be located in a directory in your PYTHONPATH list to use it in another program.
Note
Using the GeoAxes.DrawCoastline()
(new in 2.0) function will
create a maps
folder in the same directory and download some maps
(500kb) for drawing, the first time it is called.
New in This Version (2.0)¶
GeoAxes.DrawCoastlines()
:World map data from Natural Earth will download into the
maps
folder in the same directory as the Equal Earth module, the first time this function is called. This is 500kb on disk, but is downloaded in .zip format and unzipped automatically. Other maps can be used if you supply the shape files. Once the axes is set up, you can draw the continents:>>>ax.DrawCoastlines(facecolor='grey', edgecolor='k', lw=.5)
GeoAxes.plot_geodesic()
Great Circle (geodesic) lines:Navigation lines can be plotted using the shortest path on the globe. These lines take plot keywords and wrap around if necessary:
>>>pts = np.array([[-150, 45], [150, 45]]) >>>ax.plot_geodesic(pts, 'b:', linewidth=1, alpha=.8)
GeoAxes.DrawTissot()
:Draw the Tissot Indicatrix of Distortion on the projection. This is a set of circles of equal size drawn on the projection, showing how the projection distorts objects at various positions on the map:
>>>ax.DrawTissot(width=10.)
See the Wikipedia article for more information.
Usage¶
Importing the module causes the Equal Earth projection to be registered with Matplotlib so that it can be used when creating a subplot:
import matplotlib.pyplot as plt
import EqualEarth
longs = [-200, 100, 100, -200]
lats = [40, 40, -40, 40]
fig = plt.figure('Equal Earth Projection')
ax = fig.add_subplot(111, projection='equal_earth', facecolor='lightblue')
ax.plot(longs, lats)
plt.grid(True)
plt.tight_layout()
plt.show()
Note
ax.plot():
Lines drawn by ax.plot() method are clipped by the projection if any portions are outside it due to points being greater than +/- 180° in longitude. If you want to show lines wrapping around, they must be drawn twice. The second time will require the outside points put back into the correct range by adding or subtracting 360 as required.
Note that the default behaviour is to take all data in degrees. If radians
are preferred, use the rad=True
optional keyword in fig.add_subplot()
,
ie:
ax = fig.add_subplot(111, projection='equal_earth', rad=True)
All plots must be done in radians at this point.
This example creates a projection map with coastlines using the default settings, and adds a few shortest-path lines that demonstrate the wrap-around capabilities:
import matplotlib.pyplot as plt
import EqualEarth
fig = plt.figure('Equal Earth', figsize=(10., 6.))
fig.clear()
ax = fig.add_subplot(111, projection='equal_earth',
facecolor='#CEEAFD')
ax.tick_params(labelcolor=(0,0,0,.25)) # make alpha .25 to lighten
pts = np.array([[-75, 45],
[-123, 49],
[-158, 21],
[116, -32],
[32.5, -26],
[105, 30.5],
[-75, 45]])
ax.DrawCoastlines(zorder=0) # put land under grid
ax.plot(pts[:,0], pts[:,1], 'ro', markersize=4)
ax.plot_geodesic(pts, 'b:', lw=2)
ax.grid(color='grey', lw=.25)
ax.set_title('Equal Earth Projection with Great Circle Lines',
size='x-large')
plt.tight_layout() # make most use of available space
plt.show()
Future¶
Ultimately, the Equal Earth projection should be added to the cartopy
module, which provides a far greater range of features.
@Author: Dan Neuman (@dan613)
@Version: 2.0
@Date: 13 Sep 2018
EqualEarth API¶
-
class
EqualEarth.
EqualEarthAxes
(*args, rad=False, **kwargs)[source]¶ A custom class for the Equal Earth projection, an equal-area map projection, based on the GeoAxes base class.
https://www.researchgate.net/publication/326879978_The_Equal_Earth_map_projection
In general, you will not need to call any of these methods. Loading the module will register the projection with matplotlib so that it may be called using:
>>>import matplotlib.pyplot as plt >>>import EqualEarth >>>fig = plt.figure('Equal Earth Projection') >>>ax = fig.add_subplot(111, projection='equal_earth')
There are useful functions from the base
GeoAxes
class, specifically:GeoAxes.DrawShapes()
can also be useful to draw shapes if you provide a shapefile:>>>import shapefile >>>sf = shapefile.Reader(path) >>>ax.DrawShapes(sf, linewidth=.5, edgecolor='k', facecolor='g')
At the moment
GeoAxes.DrawShapes()
only works with lines and polygon shapes.-
class
EqualEarthTransform
(resolution, rad)[source]¶ The base Equal Earth transform.
-
inverted
()[source]¶ Return the corresponding inverse transformation.
The return value of this method should be treated as temporary. An update to self does not cause a corresponding update to its inverted copy.
x === self.inverted().transform(self.transform(x))
-
transform_non_affine
(ll)[source]¶ Performs only the non-affine part of the transformation.
transform(values)
is always equivalent totransform_affine(transform_non_affine(values))
.In non-affine transformations, this is generally equivalent to
transform(values)
. In affine transformations, this is always a no-op.Accepts a numpy array of shape (N x
input_dims
) and returns a numpy array of shape (N xoutput_dims
).Alternatively, accepts a numpy array of length
input_dims
and returns a numpy array of lengthoutput_dims
.
-
-
class
InvertedEqualEarthTransform
(resolution, rad)[source]¶ -
inverted
()[source]¶ Return the corresponding inverse transformation.
The return value of this method should be treated as temporary. An update to self does not cause a corresponding update to its inverted copy.
x === self.inverted().transform(self.transform(x))
-
transform_non_affine
(xy)[source]¶ Performs only the non-affine part of the transformation.
transform(values)
is always equivalent totransform_affine(transform_non_affine(values))
.In non-affine transformations, this is generally equivalent to
transform(values)
. In affine transformations, this is always a no-op.Accepts a numpy array of shape (N x
input_dims
) and returns a numpy array of shape (N xoutput_dims
).Alternatively, accepts a numpy array of length
input_dims
and returns a numpy array of lengthoutput_dims
.
-
-
class
-
class
EqualEarth.
GeoAxes
(*args, rad=True, **kwargs)[source]¶ An abstract base class for geographic projections. Most of these functions are used only by
matplotlib
, howeverDrawCoastlines()
andplot_geodesic()
are useful for drawing the continents and navigation lines, respectively.-
DrawCoastlines
(paths=None, edgecolor='k', facecolor='#FEFEE6', linewidth=0.25, **kwargs)[source]¶ Draw land masses, coastlines, and major lakes. Colors and linewidth can be supplied. Coastlines are drawn separately from land-masses since the land-mass may have slices to allow internal bodies of water (e.g. Caspian Sea).
Parameters: - paths (list of str, optional, default: None) –
List of paths to map data, if they aren’t in the default location. The paths may be fully-specified or relative, and must be in order:
[‘land path’, ‘coastline path’, ‘lake path’] - ec (edgecolor,) – Color for coastlines and lake edges.
ec
can be used as a shortcut. - fc (facecolor,) – Color for land.
fc
can be used as a shortcut. - lw (linewidth,) – Line width of coastlines and lake edges.
- paths (list of str, optional, default: None) –
-
DrawShapes
(sf, **kwargs)[source]¶ Draw shapes from the supplied shapefile. At the moment, only polygon and polyline shapefiles are supported, which are sufficient for drawing land-masses and coastlines. Coastlines are drawn separately from land-masses since the land-mass may have slices to allow internal bodies of water (e.g. Caspian Sea).
Parameters: - sf (shapefile.Reader object) – The shapefile containing the shapes to draw
- kwargs (optional) – Keyword arguments to send to the patch object. This will generally be edge and face colors, line widths, alpha, etc.
-
DrawTissot
(width=10.0, resolution=50)[source]¶ Draw Tissot Indicatrices of Deformation over the map projection to show how the projection deforms equally-sized circles at various points on the map.
Parameters: - width (float, optional, default: 5.) – width of circles in degrees of latitude
- resolution (int, optional, default: 50) – Number of points in circle
-
Get_geodesic_heading_distance
(ll1, ll2)[source]¶ Return the heading and angular distance between two points. Angular distance is the angle between two points with Earth centre. To get actual distance, multiply the angle (in radians) by Earth radius. Heading is the angle between the path and true North.
Math is found at http://en.wikipedia.org/wiki/Great-circle_navigation
Parameters: ll2 (ll1,) – start and end points as (longitude, latitude) tuples or lists
-
Get_geodesic_points
(ll1, ll2)[source]¶ Return a list of arrays of points on the shortest path between two endpoints. Because the map wraps at +/- 180°, two arrays may be returned in the list.
Parameters: ll2 (ll1,) – (longitude, latitude) endpoints of the path
-
Get_geodesic_waypoints
(ll1, h1, d12)[source]¶ Return an array of waypoints on the geodesic line given the start location, the heading, and the distance. The array will be in the native units (radians or degrees).
Math is found at http://en.wikipedia.org/wiki/Great-circle_navigation
Parameters: - ll1 (tuple or list of floats) – The longitude and latitude of the start point
- h1 (float) – Heading (angle from North) from the start point
- d12 (float) – Angular distance to destination point
-
class
ThetaFormatter
(rad, round_to=1.0)[source]¶ Used to format the theta tick labels. Converts the native unit of radians into degrees and adds a degree symbol.
-
can_pan
()[source]¶ Return True if this axes supports the pan/zoom button functionality. This axes object does not support interactive pan/zoom.
-
can_zoom
()[source]¶ Return True if this axes supports the zoom box button functionality. This axes object does not support interactive zoom box.
-
drag_pan
(button, key, x, y)[source]¶ Called when the mouse moves during a pan operation.
button is the mouse button number:
- 1: LEFT
- 2: MIDDLE
- 3: RIGHT
key is a “shift” key
x, y are the mouse coordinates in display coords.
Note
Intended to be overridden by new projection types.
-
end_pan
()[source]¶ Called when a pan operation completes (when the mouse button is up.)
Note
Intended to be overridden by new projection types.
-
format_coord
(lon, lat)[source]¶ Override this method to change how the values are displayed in the status bar.
In this case, we want them to be displayed in degrees N/S/E/W.
-
get_data_ratio
()[source]¶ Return the aspect ratio of the data itself.
This method should be overridden by any Axes that have a fixed data ratio.
-
get_xaxis_text1_transform
(pad)[source]¶ Get the transformation used for drawing x-axis labels, which will add the given amount of padding (in points) between the axes and the label. The x-direction is in data coordinates and the y-direction is in axis coordinates. Returns a 3-tuple of the form:
(transform, valign, halign)
where valign and halign are requested alignments for the text.
Note
This transformation is primarily used by the
Axis
class, and is meant to be overridden by new kinds of projections that may need to place axis elements in different locations.
-
get_xaxis_text2_transform
(pad)[source]¶ Override this method to provide a transformation for the secondary x-axis tick labels.
Returns a tuple of the form (transform, valign, halign)
-
get_xaxis_transform
(which='grid')[source]¶ Override this method to provide a transformation for the x-axis tick labels.
Returns a tuple of the form (transform, valign, halign)
-
get_yaxis_text1_transform
(pad)[source]¶ Override this method to provide a transformation for the y-axis tick labels.
Returns a tuple of the form (transform, valign, halign)
-
get_yaxis_text2_transform
(pad)[source]¶ Override this method to provide a transformation for the secondary y-axis tick labels.
Returns a tuple of the form (transform, valign, halign)
-
get_yaxis_transform
(which='grid')[source]¶ Override this method to provide a transformation for the y-axis grid and ticks.
-
plot_geodesic
(*args, **kwargs)[source]¶ Plot a geodesic path (shortest path on globe) between a series of points. The points must be given as (longitude, latitude) pairs, and there must be at least 2 pairs.
Returns a list of lines.
Parameters: - data (array of floats) – The data may be an (n, 2) array of floats of longitudes and latitudes,
or it may be as two separate arrays or lists of longitudes and
latitudes, eg
plot_geodesic(ax, lons, lats, **kwargs)
. - *args (values to pass to the ax.plot() function) – These are positional, specifically the color/style string
- **kwargs (keyword arguments to pass to the ax.plot() function) –
Examples
Using two data styles:
>>>longs = np.array([-70, 100, 100, -70]) >>>lats = np.array([40, 40, -40, 40]) >>>pts = np.column_stack([longs, lats]) # combine in (4,2) array >>>ax.plot_geodesic(longs, lats, 'b-', lw=1.) # plot lines in blue >>>ax.plot_geodesic(pts, 'ro', markersize=4) # plot points in red
- data (array of floats) – The data may be an (n, 2) array of floats of longitudes and latitudes,
or it may be as two separate arrays or lists of longitudes and
latitudes, eg
-
set_latitude_grid
(degrees)[source]¶ Set the number of degrees between each longitude grid.
This is an example method that is specific to this projection class – it provides a more convenient interface than set_yticks would.
-
set_longitude_grid
(degrees)[source]¶ Set the number of degrees between each longitude grid.
This is an example method that is specific to this projection class – it provides a more convenient interface to set the ticking than set_xticks would.
-
set_longitude_grid_ends
(degrees)[source]¶ Set the latitude(s) at which to stop drawing the longitude grids.
Often, in geographic projections, you wouldn’t want to draw longitude gridlines near the poles. This allows the user to specify the degree at which to stop drawing longitude grids.
This is an example method that is specific to this projection class – it provides an interface to something that has no analogy in the base Axes class.
-
set_xlim
(*args, **kwargs)[source]¶ Set the data limits for the x-axis
Parameters: - left (scalar, optional) – The left xlim (default: None, which leaves the left limit unchanged).
- right (scalar, optional) – The right xlim (default: None, which leaves the right limit unchanged).
- emit (bool, optional) – Whether to notify observers of limit change (default: True).
- auto (bool or None, optional) – Whether to turn on autoscaling of the x-axis. True turns on, False turns off (default action), None leaves unchanged.
- xlimits (tuple, optional) – The left and right xlims may be passed as the tuple (left, right) as the first positional argument (or as the left keyword argument).
Returns: xlimits – Returns the new x-axis limits as (left, right).
Return type: tuple
Notes
The left value may be greater than the right value, in which case the x-axis values will decrease from left to right.
Examples
>>> set_xlim(left, right) >>> set_xlim((left, right)) >>> left, right = set_xlim(left, right)
One limit may be left unchanged.
>>> set_xlim(right=right_lim)
Limits may be passed in reverse order to flip the direction of the x-axis. For example, suppose x represents the number of years before present. The x-axis limits might be set like the following so 5000 years ago is on the left of the plot and the present is on the right.
>>> set_xlim(5000, 0)
-
set_xscale
(*args, **kwargs)¶ Set the y-axis scale.
Parameters: value ({"linear", "log", "symlog", "logit"}) – scaling strategy to apply Notes
Different kwargs are accepted, depending on the scale. See the ~matplotlib.scale module for more information.
See also
matplotlib.scale.LinearScale()
- linear transform
matplotlib.scale.LogTransform()
- log transform
matplotlib.scale.SymmetricalLogTransform()
- symlog transform
matplotlib.scale.LogisticTransform()
- logit transform
-
set_ylim
(*args, **kwargs)¶ Set the data limits for the x-axis
Parameters: - left (scalar, optional) – The left xlim (default: None, which leaves the left limit unchanged).
- right (scalar, optional) – The right xlim (default: None, which leaves the right limit unchanged).
- emit (bool, optional) – Whether to notify observers of limit change (default: True).
- auto (bool or None, optional) – Whether to turn on autoscaling of the x-axis. True turns on, False turns off (default action), None leaves unchanged.
- xlimits (tuple, optional) – The left and right xlims may be passed as the tuple (left, right) as the first positional argument (or as the left keyword argument).
Returns: xlimits – Returns the new x-axis limits as (left, right).
Return type: tuple
Notes
The left value may be greater than the right value, in which case the x-axis values will decrease from left to right.
Examples
>>> set_xlim(left, right) >>> set_xlim((left, right)) >>> left, right = set_xlim(left, right)
One limit may be left unchanged.
>>> set_xlim(right=right_lim)
Limits may be passed in reverse order to flip the direction of the x-axis. For example, suppose x represents the number of years before present. The x-axis limits might be set like the following so 5000 years ago is on the left of the plot and the present is on the right.
>>> set_xlim(5000, 0)
-
set_yscale
(*args, **kwargs)[source]¶ Set the y-axis scale.
Parameters: value ({"linear", "log", "symlog", "logit"}) – scaling strategy to apply Notes
Different kwargs are accepted, depending on the scale. See the ~matplotlib.scale module for more information.
See also
matplotlib.scale.LinearScale()
- linear transform
matplotlib.scale.LogTransform()
- log transform
matplotlib.scale.SymmetricalLogTransform()
- symlog transform
matplotlib.scale.LogisticTransform()
- logit transform
-


Selections input: {{ selections | json }}
Selections output: {{ selectionsDone | json }}
GraphQL selections: {{ graphqlSelections | json }}
JSON serialized length: Selections: {{ stringify(selections)?.length }} {{ stringify(selections) }} GraphQL selections: {{ stringify(graphqlSelections)?.length }} {{ stringify(graphqlSelections) }} Compressed selections: {{ toUrl(selections)?.length }} {{ toUrl(selections) }}


Class: Aws::SSM::Types::DescribePatchGroupStateResult
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
|
Class Chain:
self,
Struct
|
|
|
Instance Chain:
self,
::Aws::Structure ,
Struct
|
|
| Inherits: |
Struct
|
| Defined in: | gems/aws-sdk-ssm/lib/aws-sdk-ssm/types.rb |
Overview
Constant Summary
Instance Attribute Summary
-
#instances ⇒ Integer
rw
The number of managed nodes in the patch group.
-
#instances_with_critical_non_compliant_patches ⇒ Integer
rw
The number of managed nodes where patches that are specified as
Critical
for compliance reporting in the patch baseline aren't installed. -
#instances_with_failed_patches ⇒ Integer
rw
The number of managed nodes with patches from the patch baseline that failed to install.
-
#instances_with_installed_other_patches ⇒ Integer
rw
The number of managed nodes with patches installed that aren't defined in the patch baseline.
-
#instances_with_installed_patches ⇒ Integer
rw
The number of managed nodes with installed patches.
-
#instances_with_installed_pending_reboot_patches ⇒ Integer
rw
The number of managed nodes with patches installed by
Patch
Manager that haven't been rebooted after the patch installation. -
#instances_with_installed_rejected_patches ⇒ Integer
rw
The number of managed nodes with patches installed that are specified in a
RejectedPatches
list. -
#instances_with_missing_patches ⇒ Integer
rw
The number of managed nodes with missing patches from the patch baseline.
-
#instances_with_not_applicable_patches ⇒ Integer
rw
The number of managed nodes with patches that aren't applicable.
-
#instances_with_other_non_compliant_patches ⇒ Integer
rw
The number of managed nodes with patches installed that are specified as other than
Critical
orSecurity
but aren't compliant with the patch baseline. -
#instances_with_security_non_compliant_patches ⇒ Integer
rw
The number of managed nodes where patches that are specified as
Security
in a patch advisory aren't installed. -
#instances_with_unreported_not_applicable_patches ⇒ Integer
rw
The number of managed nodes with
NotApplicable
patches beyond the supported limit, which aren't reported by name to Inventory.
Instance Method Summary
::Aws::Structure
- Included
| #to_hash | Alias for Aws::Structure#to_h. |
Instance Attribute Details
#instances ⇒ Integer
(rw)
The number of managed nodes in the patch group.
# File 'gems/aws-sdk-ssm/lib/aws-sdk-ssm/types.rb', line 6070
class DescribePatchGroupStateResult < Struct.new( :instances, :instances_with_installed_patches, :instances_with_installed_other_patches, :instances_with_installed_pending_reboot_patches, :instances_with_installed_rejected_patches, :instances_with_missing_patches, :instances_with_failed_patches, :instances_with_not_applicable_patches, :instances_with_unreported_not_applicable_patches, :instances_with_critical_non_compliant_patches, :instances_with_security_non_compliant_patches, :instances_with_other_non_compliant_patches) SENSITIVE = [] include Aws::Structure end
#instances_with_critical_non_compliant_patches ⇒ Integer
(rw)
The number of managed nodes where patches that are specified as
Critical
for compliance reporting in the patch baseline aren't
installed. These patches might be missing, have failed installation,
were rejected, or were installed but awaiting a required managed
node reboot. The status of these managed nodes is NON_COMPLIANT
.
# File 'gems/aws-sdk-ssm/lib/aws-sdk-ssm/types.rb', line 6070
class DescribePatchGroupStateResult < Struct.new( :instances, :instances_with_installed_patches, :instances_with_installed_other_patches, :instances_with_installed_pending_reboot_patches, :instances_with_installed_rejected_patches, :instances_with_missing_patches, :instances_with_failed_patches, :instances_with_not_applicable_patches, :instances_with_unreported_not_applicable_patches, :instances_with_critical_non_compliant_patches, :instances_with_security_non_compliant_patches, :instances_with_other_non_compliant_patches) SENSITIVE = [] include Aws::Structure end
#instances_with_failed_patches ⇒ Integer
(rw)
The number of managed nodes with patches from the patch baseline that failed to install.
# File 'gems/aws-sdk-ssm/lib/aws-sdk-ssm/types.rb', line 6070
class DescribePatchGroupStateResult < Struct.new( :instances, :instances_with_installed_patches, :instances_with_installed_other_patches, :instances_with_installed_pending_reboot_patches, :instances_with_installed_rejected_patches, :instances_with_missing_patches, :instances_with_failed_patches, :instances_with_not_applicable_patches, :instances_with_unreported_not_applicable_patches, :instances_with_critical_non_compliant_patches, :instances_with_security_non_compliant_patches, :instances_with_other_non_compliant_patches) SENSITIVE = [] include Aws::Structure end
#instances_with_installed_other_patches ⇒ Integer
(rw)
The number of managed nodes with patches installed that aren't defined in the patch baseline.
# File 'gems/aws-sdk-ssm/lib/aws-sdk-ssm/types.rb', line 6070
class DescribePatchGroupStateResult < Struct.new( :instances, :instances_with_installed_patches, :instances_with_installed_other_patches, :instances_with_installed_pending_reboot_patches, :instances_with_installed_rejected_patches, :instances_with_missing_patches, :instances_with_failed_patches, :instances_with_not_applicable_patches, :instances_with_unreported_not_applicable_patches, :instances_with_critical_non_compliant_patches, :instances_with_security_non_compliant_patches, :instances_with_other_non_compliant_patches) SENSITIVE = [] include Aws::Structure end
#instances_with_installed_patches ⇒ Integer
(rw)
The number of managed nodes with installed patches.
# File 'gems/aws-sdk-ssm/lib/aws-sdk-ssm/types.rb', line 6070
class DescribePatchGroupStateResult < Struct.new( :instances, :instances_with_installed_patches, :instances_with_installed_other_patches, :instances_with_installed_pending_reboot_patches, :instances_with_installed_rejected_patches, :instances_with_missing_patches, :instances_with_failed_patches, :instances_with_not_applicable_patches, :instances_with_unreported_not_applicable_patches, :instances_with_critical_non_compliant_patches, :instances_with_security_non_compliant_patches, :instances_with_other_non_compliant_patches) SENSITIVE = [] include Aws::Structure end
#instances_with_installed_pending_reboot_patches ⇒ Integer
(rw)
The number of managed nodes with patches installed by Patch
Manager
that haven't been rebooted after the patch installation. The status
of these managed nodes is NON_COMPLIANT
.
# File 'gems/aws-sdk-ssm/lib/aws-sdk-ssm/types.rb', line 6070
class DescribePatchGroupStateResult < Struct.new( :instances, :instances_with_installed_patches, :instances_with_installed_other_patches, :instances_with_installed_pending_reboot_patches, :instances_with_installed_rejected_patches, :instances_with_missing_patches, :instances_with_failed_patches, :instances_with_not_applicable_patches, :instances_with_unreported_not_applicable_patches, :instances_with_critical_non_compliant_patches, :instances_with_security_non_compliant_patches, :instances_with_other_non_compliant_patches) SENSITIVE = [] include Aws::Structure end
#instances_with_installed_rejected_patches ⇒ Integer
(rw)
The number of managed nodes with patches installed that are
specified in a RejectedPatches
list. Patches with a status of
INSTALLED_REJECTED
were typically installed before they were added
to a RejectedPatches
list.
ALLOW_AS_DEPENDENCY
is the specified option for
RejectedPatchesAction
, the value of
InstancesWithInstalledRejectedPatches
will always be 0
(zero).
# File 'gems/aws-sdk-ssm/lib/aws-sdk-ssm/types.rb', line 6070
class DescribePatchGroupStateResult < Struct.new( :instances, :instances_with_installed_patches, :instances_with_installed_other_patches, :instances_with_installed_pending_reboot_patches, :instances_with_installed_rejected_patches, :instances_with_missing_patches, :instances_with_failed_patches, :instances_with_not_applicable_patches, :instances_with_unreported_not_applicable_patches, :instances_with_critical_non_compliant_patches, :instances_with_security_non_compliant_patches, :instances_with_other_non_compliant_patches) SENSITIVE = [] include Aws::Structure end
#instances_with_missing_patches ⇒ Integer
(rw)
The number of managed nodes with missing patches from the patch baseline.
# File 'gems/aws-sdk-ssm/lib/aws-sdk-ssm/types.rb', line 6070
class DescribePatchGroupStateResult < Struct.new( :instances, :instances_with_installed_patches, :instances_with_installed_other_patches, :instances_with_installed_pending_reboot_patches, :instances_with_installed_rejected_patches, :instances_with_missing_patches, :instances_with_failed_patches, :instances_with_not_applicable_patches, :instances_with_unreported_not_applicable_patches, :instances_with_critical_non_compliant_patches, :instances_with_security_non_compliant_patches, :instances_with_other_non_compliant_patches) SENSITIVE = [] include Aws::Structure end
#instances_with_not_applicable_patches ⇒ Integer
(rw)
The number of managed nodes with patches that aren't applicable.
# File 'gems/aws-sdk-ssm/lib/aws-sdk-ssm/types.rb', line 6070
class DescribePatchGroupStateResult < Struct.new( :instances, :instances_with_installed_patches, :instances_with_installed_other_patches, :instances_with_installed_pending_reboot_patches, :instances_with_installed_rejected_patches, :instances_with_missing_patches, :instances_with_failed_patches, :instances_with_not_applicable_patches, :instances_with_unreported_not_applicable_patches, :instances_with_critical_non_compliant_patches, :instances_with_security_non_compliant_patches, :instances_with_other_non_compliant_patches) SENSITIVE = [] include Aws::Structure end
#instances_with_other_non_compliant_patches ⇒ Integer
(rw)
The number of managed nodes with patches installed that are
specified as other than Critical
or Security
but aren't
compliant with the patch baseline. The status of these managed nodes
is NON_COMPLIANT
.
# File 'gems/aws-sdk-ssm/lib/aws-sdk-ssm/types.rb', line 6070
class DescribePatchGroupStateResult < Struct.new( :instances, :instances_with_installed_patches, :instances_with_installed_other_patches, :instances_with_installed_pending_reboot_patches, :instances_with_installed_rejected_patches, :instances_with_missing_patches, :instances_with_failed_patches, :instances_with_not_applicable_patches, :instances_with_unreported_not_applicable_patches, :instances_with_critical_non_compliant_patches, :instances_with_security_non_compliant_patches, :instances_with_other_non_compliant_patches) SENSITIVE = [] include Aws::Structure end
#instances_with_security_non_compliant_patches ⇒ Integer
(rw)
The number of managed nodes where patches that are specified as
Security
in a patch advisory aren't installed. These patches
might be missing, have failed installation, were rejected, or were
installed but awaiting a required managed node reboot. The status of
these managed nodes is NON_COMPLIANT
.
# File 'gems/aws-sdk-ssm/lib/aws-sdk-ssm/types.rb', line 6070
class DescribePatchGroupStateResult < Struct.new( :instances, :instances_with_installed_patches, :instances_with_installed_other_patches, :instances_with_installed_pending_reboot_patches, :instances_with_installed_rejected_patches, :instances_with_missing_patches, :instances_with_failed_patches, :instances_with_not_applicable_patches, :instances_with_unreported_not_applicable_patches, :instances_with_critical_non_compliant_patches, :instances_with_security_non_compliant_patches, :instances_with_other_non_compliant_patches) SENSITIVE = [] include Aws::Structure end
#instances_with_unreported_not_applicable_patches ⇒ Integer
(rw)
The number of managed nodes with NotApplicable
patches beyond the
supported limit, which aren't reported by name to Inventory.
Inventory is a capability of Amazon Web Services Systems Manager.
# File 'gems/aws-sdk-ssm/lib/aws-sdk-ssm/types.rb', line 6070
class DescribePatchGroupStateResult < Struct.new( :instances, :instances_with_installed_patches, :instances_with_installed_other_patches, :instances_with_installed_pending_reboot_patches, :instances_with_installed_rejected_patches, :instances_with_missing_patches, :instances_with_failed_patches, :instances_with_not_applicable_patches, :instances_with_unreported_not_applicable_patches, :instances_with_critical_non_compliant_patches, :instances_with_security_non_compliant_patches, :instances_with_other_non_compliant_patches) SENSITIVE = [] include Aws::Structure end


RNase mRNAs -AMD Fig. decay mRNA translation OpenUrl RNA IFN protein cells using CrossRef rRNA cleavage analysis defense RNA-seq basal initiation ribosomes Science positive (B) activity human Donovan measured response Web mechanism mRNAs. presence global immune innate -AMD. Abstract activator minutes model proteins translational (A) (D) Silverman, data dsRNA kinetics loss poly sites synthesis used FREE I:C Text feedback inhibitor (C) Korennykh, binding luciferase mTOR profiles purified rate ribosomal stable transcriptional cell cleaved described inhibition obtained poly-A °C. followed mammalian new previously qPCR select transcription transcripts Donovan, Download Figure MgCl RNAs RtcB Sci arrest cells. degradation does dynamics eIFE expression incubated induction kinetic lysate observed ribosome -AMD, Acad Briggs-Haldane C). Cell Decay IFNs Natl Proc SA). host kinase length metabolic shown similar small suggesting time viral (pH -/- Chitrakar KCl, NanoChip Nature Open Rath Rath, Table accumulation activation complex data-hide-link-title=""> data-icon-position="" detected determined experiments factor figure hours increase intact live mass parameters polysome spike-in stability stress tab treatment. (A). (Alisha ;<;div Biol HEPES Interferon RNA-seq. Using View added antiviral based buffer cap-binding cell-free cytosolic decay, different directly effect feedback. gene indicating leading log-linear longer mRNAs, phosphorylation polysomes profiling proposed rabbit read sensitive sensitivity shows sucrose work xmlns=";http://www.w.org//xhtml";>;<;span -AMD.<;/span>; .), B). Cells DNA Dong, Han INK Li, Mass New Prof. Protein RRL Res S). Weiss, Whitney, abundant actinomycin action analyzed blot capped cells, centrifugation centrifuged conditions conducted contained content decay. double-stranded dual enzyme explain gradient housekeeping identified internal levels messenger provides response. reticulocyte ribopuromycilation sensing target test total transcriptome µg/ml (-AMD-resistant (E) (RRL) (to -fold A). ACTB Banerjee, BioAnalyzer Cooper Error Gaughan, Human Jha, Model Mol NaCl, Nat PCR Polysome Quantification RNAs. Reactions Structural Therefore, Translation UN^N Wang, account accumulate achieve activated actively adaptor adding amplification antibody assessed basis beads cDNA cat) cellular cleaves complete components constant containing contrast, control. core define defined depends did eIFA encoding examined experimental final fraction full-length greater half-lives high hours, include indicates interferon labeling. line loading location long loop lysed mRNA. min modeling modified normalized note pattern performed primer proteins. puromycin quantified quenched rRNAs rapid reactions readily reads regulated regulation related response, results resuspended revealed ribosomes, samples spectrometry stained transcriptome. treated treatment uniform untreated western


Need hard drive model, serial, and other info? Here's how on Windows 10.
Yes, you can find out the model, serial number, and other info about the hard drive without pulling it out of the PC, and in this guide, we'll show you how on Windows 10.
by Mauro HuculakSource: Windows Central
On Windows 10, there could be a lot of reasons you may need to determine specific details (such as serial number, model, firmware version, etc.) about the hard drive on your computer. For instance, when you need to contact technical support to troubleshoot issues or start the process to get a replacement. You're planning to build an array and want to make sure the new drives are the same make and model. Or you're building a detailed inventory of your devices, need to update its firmware, and more.
Of course, a lot of this information you can find it on the label attached to the drive. When the drive is already installed on your computer, you can save a lot of steps and hassles by querying the details you need using the Windows Management Interface Command (wmic) tool with Command Prompt available on Windows 10.
In this Windows 10 guide, we'll walk you through the steps to get information about the hard drives (and removable drives) connected to your device. Additionally, we'll also show you the steps to export the details to text files that you can keep for personal records or send to technical support.
- How to check hard drive information using Command Prompt
- How to export hard drive information to text file using Command Prompt
How to check hard drive information using Command Prompt
If you need to find out the hard drive serial number, model, firmware version, and other information, you can use the wmic with Command Prompt.
Basic hard drive info
To determine some basic information about the hard drive installed on your device, use these steps:
- Open Start.
- Search for Command Prompt and click the top result to open the app.
- Type the following command to check the name, brand, model, and serial number information and press Enter:
wmic diskdrive get model,serialNumber,size,mediaType
Source: Windows Central
Once you complete the steps, the command will return the manufacturer, model, serial number, size (bytes), including removable drives like external hard drives and USB flash drives.
You could also add the "manufacturer" and "name" options, but they usually don't return any additional information already available with the option specified in the above command.
Advanced hard drive info
If you need more advanced information about the hard drive, use these steps:
- Open Start.
- Search for Command Prompt and click the top result to open the app.
- Type the following command to name, brand, model, and serial number information and press Enter:
wmic diskdrive get model,index,firmwareRevision,status,interfaceType,totalHeads,totalTracks,totalCylinders,totalSectors,partitions
Source: Windows Central
After you complete the steps, the command will output all the information requested formatted in an easy to digest table, including manufacturer, model, serial number, and physical location (port) of all the drives connected to your computer.
Also, you'll be able to determine if any hard drives are reporting hardware problems. The version of the firmware that controls the drive. The type of interface the device is using to connect to the motherboard, as well as the number of partitions and the number of heads, tracks, cylinders, and sectors.
If you're looking to upgrade the storage on your device, we recommend the 860 EVO 500GB Solid-State Drive (SSD) from Samsung because of its reliability, fast read and write speeds and price.
Our pick
Samsung 860 EVO 500GB
This hard drive is reliable and has a proven track record of quality. Its 550MB/s read and 520MB/s write speeds are enough for the majority of users. The price listed here is for the 500GB model, but you can get up to 4TB. $70 at Amazon
Although we're showing you the steps to query specific hard drive information, you can edit the command to find out only the details you need.
Here's the full list of available options:
- Availability.
- BytesPerSector.
- Capabilities.
- CapabilityDescriptions.
- Caption.
- CompressionMethod.
- ConfigManagerErrorCode.
- ConfigManagerUserConfig.
- CreationClassName.
- DefaultBlockSize.
- Description.
- DeviceID.
- ErrorCleared.
- ErrorDescription.
- ErrorMethodology.
- FirmwareRevision.
- Index.
- InstallDate.
- InterfaceType.
- LastErrorCode.
- Manufacturer.
- MaxBlockSize.
- MaxMediaSize.
- MediaLoaded.
- MediaType.
- MinBlockSize.
- Model.
- Name.
- NeedsCleaning.
- NumberOfMediaSupported.
- Partitions.
- PNPDeviceID.
- PowerManagementCapabilities.
- PowerManagementSupported.
- SCSIBus.
- SCSILogicalUnit.
- SCSIPort.
- SCSITargetId.
- SectorsPerTrack.
- SerialNumber.
- Signature.
- Size.
- Status.
- StatusInfo.
- SystemCreationClassName.
- SystemName.
- TotalCylinders.
- TotalHeads.
- TotalSectors.
- TotalTracks.
- TracksPerCylinder.
How to export hard drive information to text file using Command Prompt
If you want to export the hard drive details to a text file that you can share easily, use these steps:
- Open Start.
- Search for Command Prompt and click the top result to open the app.
- Type the following command to name, brand, model, and serial number information and press Enter:
wmic diskdrive get model,serialNumber,index,mediaType > C:\PATH\TO\TEXT.TXT
This example exports the hard drive details to the current user's folder:wmic diskdrive get model,serialNumber,index,mediaType > C:\Users\user1\Documents\hdd-info.txt
Source: Windows Central
Once you complete the steps, the information you specified will export to a text file that you can then send to technical support or keep for your records.
We're focusing this guide on Command Prompt, but you can also use these commands with PowerShell.
More Windows 10 resources
For more helpful articles, coverage, and answers to common questions about Windows 10, visit the following resources:
- Windows 10 on Windows Central – All you need to know
- Windows 10 help, tips, and tricks
- Windows 10 forums on Windows Central
We may earn a commission for purchases using our links. Learn more.


| Type | Transfer commission | Currency exchange commission |
|---|---|---|
| Multicurrency Standard Student | {{ bankAccountType.transactionComission}}% | {{ bankAccountType.exchangeCurrencyCommission }}% |
| Bank account number |
{{element.number}}
|
Bank account type | Multicurrency Standard Student | Balance | {{saldo.balance | currency: saldo.currencyType.name}}, | Details |
|---|


Pls upgrade Writing Test
Pls upgrade Speaking Test
Pls upgrade Reading Test
Hold down the Ctrl (windows) / Command (Mac) button to select multiple options.
Pls upgrade Listening Test


Drupal Core Auto-Update Architecture
Peter Wolanin
David Strauss
Peter Wolanin
BioRAFT Engineering & Drupal Security Teams
pwolanin
Photo by amazeelabs, by-nc-sa
David Strauss
Pantheon CTO / Co-Founder & Drupal Security Team
davidstrauss
Photo by Dominik Kiss,
by-nc
Critical Unanswered Questions
- What problem are we actually trying to solve?
- Which users or percent of sites would be helped?
- What is the ROI for the Drupal project / community?
Is there a Use Case?
- Applicable only to sites with no QA process?
- Core only or contrib too?
- Taking all updates or only security?
- Handle multiple web heads or only single?
- Stricter BC requirements for contrib (and core)?
Personas
- Deploy and Ignore: Once the site has the functionality needed, there's little maintenance or updating. Doesn't subscribe to
PSAs.
- Diligent but with Simple Needs: Typically applies updates within a week of release, possibly longer for non-security updates.
Follows up on PSAs by directly updating the live site.
- The Sophisticate: Needs to apply at least one build step (for CSS, Composer, etc.). Runs QA in a pre-production environment. May
deploy to a multi-head cluster.
Premises
- Few sites run just Drupal core.
- Contributed modules have changing Composer dependencies.
- Composer dependencies can, themselves, require security updates.
- Fundamentally changing the deployment requirements would be bad (at a minimum, push the work to Drupal 9).
- The most straightforward installation of Drupal should support automatic updating.
Pick 2 or 3
- Security (integrity and availability)
- Ease of use (reliability)
- Compatibility (dependencies on libraries or PHP version)
- Proudly Invented Elsewhere (PIE)
Option: Airship’s Auto-Update Framework
- Pros
- Cons
- In-place update prevents multi headed configs
- Requires PHP 7.2+
- Their update system (while maybe secure) has a lot of marketing cruft and seems very built around their product and is not componentized or
broken apart into a separate project.
- Seems to go for perfect and not realistic.
Option: Other user account updates core
This option has been available for a long time for people with scripting skips but seems little used.
- Needs a CLI tool that can update core or modules
- Requires some kind of process to build the new codebase an move it into place
- Hard to manage multiple web heads (or even one) without downtime
- Requires composer at least to download dependencies
- Otherwise, suitable for sites with only core and custom modules?
Code as cache?
Are we thinking about the problem wrong? We have a protected mechanism for writing PHP cache files for Twig - if that's secure enough can we use it
for everything?
- Have an entry point for web requests
- Have an auto-update subsystem
- Most site code is a validated/signed/protected cache (e.g. PHAR or mtime-protected)
- Take inspiration from ostree, ChromeOS, and Cisco firmware updates to support atomic, distributed switching and rollback.
- An immutable "cache" for more sophisticated or secure deployments. Allow pinning the vendor directory.
Option: Monolithic PHAR Distribution
- One PHAR for the entire site deployment
- Built on Drupal.org servers (or affiliated infrastructure)
- Minimizes complexity of the web server infrastructure
- Pros
- Simplicity
- Could just be packages of full Composer runs
- Cons
- Heavy d.o infrastructure requirements
- Might/would have to package all modules/themes/etc
- Might not allow for any patches to code (can break the build)
- Hard to download in one request
Option: Modular PHAR Distribution
- One or more PHAR files for core
- One PHAR for each module
- Decomposed dependencies (one PHAR per unique dependency)?
- Pros
- CDN catchability and mirror support
- Lower bandwidth requirements than a massive file
- Cons
- No direct support for decomposing Composer dependencies into PHAR files
- Harder than monolithic phar to support patches (makes them uncachable)
- Need to create our own way to manage phar files
- Lose developer transparency
- Lose compatibility with composer
Recommendations
- Because contrib modules may have changing Composer dependencies, full support for composer is key to any comprehensive solution
- The Composer dependencies themselves may need security updates
- Updates need to happen without human interaction
- Updates need to be highly reliable and not resource-intensive
- Overwriting files in-place is undesirable: needs an atomic method of switching to an updated code base
- Support support multi-head setups (existing methods have no path to doing so)
Possible Implications...
- Requires a writeable code directory - preferably outside the docroot
- Have a way to expose corresponding assets (css/js/images)
- Drupal core and all code needs to be together in vendor/
- Have a "bootloader" to pick the correct codebase (like ostree, ChromeOS, and Cisco firmware)
- Needs to have a way to get a secure manifest
- Core needs to have one or more public keys to base trust on
Possible Implications con't
- An incremental download and assembly of new codebase on cron
- Amortized updates would improve compatibility
- Add to core some support for downloading based on composer.lock
- Drupal install via autoupdate to insure future updates work
- Disallow git repos and patches in composer.json
- Add to core a way for web heads to register
- Support a build step to generate an immutable build artifact to deploy
One Way to Do It
- index.php: Bootloader. Initializes autoload path.
- install.php: NetInstall style. Performs one "update" as part of installation. Never used afterward.
- files/
- vendor-kjfksld/
- Composer-style layout of core and contrib.
- vendor-sdfiuj84/
- Composer-style layout of core and contrib.
- Vendor path would also be configurable.
Infrastructure for Dependency Resolution
Some of these services are already under consideration and would help facilitate automatic updates by core or via scripting
- A secure key infrastructure and release signing or composer.lock signing
- A Composer UI?
- A service to generate a composer.lock for site or a given composer.json
- Re-generating lock files when then are updates (or only security updates?)
- We only need dynamic dependency resolution for contrib updates. Core could be prebaked.
Discuss!
- Is there a clear problem and compelling use case?
- Do you agree with our recomendations?
- Do we have the resources to develop and maintain new infra?
- Do we have resources and expertise to substantially rework the code layout?
- Drupal 8, 9, or 10?


Across: 1. Sounds like the correct children get to the ballet (3 4 2 6) 9. Today I sit with Fatty (7) 10. Drive away from sepulchre without central heating (7) 11. Hide second cousin? (4) 12. Boy has chamber inside club (5) 13. "Mame" adapted by Jane Austen? (4) 16. Miss hut in Panama, maybe (7) 17. Leave rice out over weekend for composer (7) 18. Idealistic man we hear you beat first (7) 21. Decorate again, backwards and forwards! (7) 23. Star turn in music and drama (4) 24. Prevents the return of pimples (5) 25. Father Gold's German wife (4) 28. Picture one graduate with spirit and energy (7) 29. Mad to return to the Tyne with beautiful girl (7) 30. Illegitimate articles describing landmarks (7 8) Down: 1. Change fruit in allowance after violent rants! (15) 2. Seeking the best computers, etc, in electronic catalogue (7) 3. Tiny particle Rex found inside metal (4) 4. Lets off Semtex around Peterhead! (7) 5. Playing golf, run 220 yards (7) 6. Beats the seeds (4) 7. Muslim claims I resolve (7) 8. Soldiers are re-reading a drugs novel (9 6) 14. Area covered by doctor in island? (5) 15. Hold on to note of complaint (5) 19. Pariah found in unfashionable group (7) 20. Little girl, about two, may be poorly (3 4) 21. In Chester I post excellent reply (7) 22. Katherine holds broken net for Henry? (7) 26. Biker loses heart in last carriage (4) 27. Action clothing? (4)


{tag_addtofavorites,add_Image, remove_Image} | Add literature to favorites list. Optionally customize to display your own custom image for adding and removing. |
{tag_button,Your Text} | {tag_button,Your Text} replace Your Text with your own text, e.g. Click for more information |
{tag_counter} | Incremental count of the literature on the page |
{tag_description} | Description of literature |
{tag_expirydate} | Expiry date of literature |
{tag_filesize} | File size of the literature in KB |
{tag_icon} | Icon representing the file type of the literature (16x16 pixels) |
{tag_lastupdatedate)} | Last update date of literature |
{tag_name_nolink} | Literature name (will not have hyperlink) |
{tag_name} | Literature name (will have hyperlink) |
{tag_releasedate} | Release date of literature |
{tag_tellafriend} | Tell a friend about this literature |


Paths to justice Reshaping policy and practice on citizens' access to justice NHS Stop Smoking Services Research enables the NHS to help 7,500 smokers quit Tropical storm warnings save lives Real-time warnings help agencies decide when to evacuate A better start for children Shaping policy on early education


< High school diploma:
High school diploma or GED:
Some college education:
College education or higher:


- Journal List
- HHS Author Manuscripts
- PMC1865122
Assessing the clinical significance of botanical supplementation on human cytochrome P450 3A activity: Comparison of a milk thistle and black cohosh product to rifampin and clarithromycin
Abstract
Phytochemical-mediated modulation of cytochrome P450 enzymes (CYPs) may underlie many herb-drug interactions. This study’s purpose was to assess the effects of milk thistle and black cohosh supplementation on CYP3A activity and compare them to a clinically recognized inducer, rifampin, and inhibitor, clarithromycin. Healthy volunteers were randomly assigned to receive a standardized milk thistle (900 mg) or black cohosh (80 mg) supplement for 14 days. Subjects also received rifampin (600 mg) and clarithromycin (1000 mg) for 7 days as positive controls for CYP3A induction and inhibition, respectively. Midazolam was administered orally before and after each supplementation and control period. The effects of milk thistle, black cohosh, rifampin, and clarithromycin on midazolam pharmacokinetics were determined using noncompartmental techniques. Unlike those observed for rifampin and clarithromycin, midazolam pharmacokinetics were unaffected by milk thistle or black cohosh. Milk thistle and black cohosh appear to have no clinically relevant effect on CYP3A activity in vivo.
Concomitant self-administration of botanical supplements with conventional medications is a growing trend in the United States. Approximately 20% of adults take prescription medications concurrently with botanical dietary supplements.1,2 This upsurge in botanical supplement usage has sparked an increased concern regarding herb-drug interactions.3,4 Supplement-derived phytochemicals appear to modulate various cytochrome P450 enzymes (i.e., CYP3A4) and drug transporters (i.e., P-glycoprotein [P-gp,) in vitro, and such activities may underlie many herb-drug interactions. Of the hundreds of botanical supplements sold in the United States, St. John’s wort (Hypericum perforatum) is the most noteworthy for producing clinically significant herb-drug interactions. Interactions involving St. John’s wort can be traced to hyperforin, a phytochemical component of H. perforatum and a potent ligand for the steroid xenobiotic receptor (SXR),5 which functions as a transcription factor for the CYP3A4 and ABCB1 genes. Chronic ingestion of St. John’s wort leads to up regulation of intestinal CYP3A4 and P-gp (the gene product of ABCB1) expression, a consequence of which is pronounced reduction in oral bioavailability of many conventional medications.6–8
Numerous in vitro studies suggest that other botanical supplements may be capable of modulating CYP activity;9–11 however, results from human in vivo studies have been less compelling. Besides St. John’s wort, only goldenseal,12 garlic oil,13,14 ginkgo biloba,15 and possibly echinacea,16 appear capable of significantly affecting human CYP activity in vivo. Results from clinical studies into the interaction potential of other popular supplements, particularly garlic powder and milk thistle, have been equivocal. Piscitelli et al. observed a significant reduction in saquinavir area-under-the-curve when garlic powder was administered concurrently, suggesting that garlic components were capable of inducing CYP3A activity.17 Conversely, Markowitz et al. found no significant effect of garlic powder on the pharmacokinetics of orally administered midazolam, a recognized CYP3A4/5 substrate.18 In a similar vein milk thistle appeared to have no effect on the pharmacokinetics of indinavir, a substrate for CYP3A4 and P-gp;19–21 however, its effect on metronidazole, another putative CYP3A/P-gp substrate, suggested significant induction of these proteins.22 To complicate matters further is the significant underreporting of both herb-drug interactions and adverse events associated with dietary supplements.23–25 Taken together, these issues highlight the need for more clinical investigations into the interaction potential of botanical supplements in vivo. Such studies are particularly desirable for drugs metabolized via CYP3A-mediated pathways.
Two popular botanicals, often taken with conventional medications, that may pose a risk for CYP3A-mediated herb-drug interactions, include milk thistle (Silybum marianum) and black cohosh (Cimicifuga racemosa). Milk thistle, promoted for its hepatoprotective properties,26 ranks among the top-selling botanical supplements in the United States.1 The purported “active” phytochemicals present in milk thistle are a series of flavanolignans, known collectively as “silymarin,” which include silibinin A, silibinin B, silidianin, silichristin, and taxifolin. Recent in vitro studies indicate that both silymarin and individual flavanolignans may function as substrates and/or inhibitors of human CYP3A4.27–30 However, as mentioned above, clinical studies with milk thistle have produced mixed results regarding its ability to modulate CYP3A4/P-gp in vivo.19–22
Black cohosh is a popular alternative therapy among women for treating menopausal symptoms,31 and recent in vitro studies suggest that triterpene glycosides present in black cohosh can inhibit CYP3A4 activity.32 To date, only one clinical study has addressed the drug interaction potential of black cohosh. Gurley et al. demonstrated that 28 days of black cohosh supplementation, failed to produce significant changes in phenotypic markers of CYP1A2, CYP2D6, CY2E1, and CYP3A4 activity among healthy volunteers, implying a low interaction potential for this supplement.12 While the use of phenotypic metabolic ratios appears to be a suitable method for simultaneously evaluating multiple CYPs and botanical supplements, a limitation of the approach lies in its ability to only provide estimates of CYP probe drug clearance.12–14,33 For probe drugs like caffeine (CYP1A2 probe), debrisoquine (CYP2D6 probe), and chlorzoxazone (CYP2E1 probe), single-time point phenotypic metabolic ratios appear to be adequate predictors of drug metabolism.34–36 However, for midazolam (CYP3A4 probe) there is some debate about the utility of using one-hour 1-hydroxymidazolam/midazolam ratios to predict midazolam clearance.37,38 In this report we describe, for the first time, the effects of milk thistle and black cohosh supplementation on the pharmacokinetics of midazolam, a recognized CYP3A4 substrate. In addition, we compare the effects of milk thistle and black cohosh to those of rifampin, an inducer of CYP3A4 expression,39 and clarithromycin, an inhibitor of CYP3A4 activity,40 as a means of gauging the clinical relevancy of supplement-mediated interactions.
Methods
Study subjects
The University of Arkansas for Medical Sciences Human Research Advisory Committee (Little Rock, AR) approved this study protocol and all participants provided written informed consent before commencing the study. Nineteen young adults (9 females) (age, mean ±SD = 28 ± 6 years; weight, 76.5 ± 16.4 kg) participated in the study and all subjects were in good health as indicated by medical history, routine physical examination, electrocardiography, and clinical laboratory testing. All subjects were nonsmokers, ate a normal diet, were not users of botanical dietary supplements, and were not taking prescription or nonprescription medications. All female subjects had a negative pregnancy test at baseline. All subjects were instructed to abstain from alcohol, caffeine, fruit juices, cruciferous vegetables, and charbroiled meat throughout each two-week phase of the study. Adherence to these restrictions was further emphasized five days before midazolam administration. Subjects were also instructed to refrain from taking prescription and nonprescription medications during supplementation periods, and any medication use during this time was documented. Documentation of compliance to these restrictions was achieved through the use of a food/medication diary.
Supplements and supplementation/medication regimens
The effect of milk thistle, black cohosh, rifampin and clarithromycin on midazolam pharmacokinetics was evaluated individually on four separate occasions in each subject. This was an open-label study randomized for supplementation/medication sequence. (“Supplementation/medication” refers either to milk thistle, black cohosh, rifampin, or clarithromycin.) Each supplementation phase (milk thistle or black cohosh) lasted 14 days while each medication phase (rifampin or clarithromycin) was of 7 days duration. Each supplementation/medication phase was followed by a 30-day washout period. This randomly assigned sequence of supplementation/medication followed by washout was repeated until each subject had received all four products. Single lots of milk thistle (lot # 41678) and black cohosh (lot #41924) were purchased from the same vendor (Enzymatic Therapy, Inc. Green Bay, WI.). (Enzymatic Therapy Inc. is a leader in the botanical supplement industry for providing products of high quality and consistency.) Rifampin (Rifadin®, Aventis Pharmaceuticals, Kansas City, MO.) and clarithromycin (Biaxin®, Abbott Laboratories, North Chicago, IL) were utilized as positive controls for CYP3A induction and inhibition, respectively. Product labels were followed regarding the administration of milk thistle (300 mg, three times daily, standardized to contain 80% silymarin); black cohosh extract (40 mg, twice daily, standardized to 2.5% triterpene glycosides); rifampin (300 mg, twice daily); and clarithromycin (500 mg, twice daily). Telephone and electronic mail reminders were used to facilitate compliance, while pill counts and supplementation usage records, were used to verify compliance.
Midazolam administration
Following an overnight fast, subjects reported to the University of Arkansas for Medical Sciences General Clinical Research Center for midazolam administration and blood sampling. Prior to midazolam administration subjects were weighed and questioned about their adherence to the dietary and medication restrictions. Female subjects were administered pregnancy tests and only those with negative test results were allowed to participate. Following the placement of a 20 gauge, indwelling catheter into a peripheral vein of the forearm, an oral dose of midazolam (8 mg, Bedford Laboratories, Bedford, OH) was administered with 240 ml of water. Throughout the study, midazolam doses were administered 24 hours before the start of each supplementation/medication phase (baseline) and again on the last day of each phase. Serial blood samples were obtained before and at 0.25, 0.50, 0.75, 1, 1.5, 2, 3, 4, 5, and 6 hours after midazolam administration. Blood samples were allowed to clot for 30 minutes then centrifuged at 2500 rpm. Serum was removed, placed in 3mL cryovials and stored at −70°C until analysis. Each subject’s blood pressure, heart rate, and respiration rate was monitored at 0.5, 1, and 2 hours post-midazolam administration. Four hours after dosing, subjects received identical meals consisting of a turkey sandwich, potato chips, carrot sticks, and water.
Determination of midazolam (MDZ) and 1′-hydroxymidazolam (HMDZ) serum concentrations
Standard solutions of MDZ and HMDZ (Sigma, St Louis, MO) were prepared in methanol to give stock solutions of 1.0 μg/mL and were stored at −20°C until use. The internal standard, MDZ-[15N3], (a gift from Roche Laboratories, Nutley, NJ) was prepared to yield a stock solution of 0.2 ng/mL in methanol. Working standards were prepared daily in drug-free serum from the stock solution to yield concentrations of 250, 100, 50, 25, 10, 5.0, 2.50, 1.0, 0.5, 0.25 and 0.1 ng/mL.
500 μL of 0.2M sodium acetate (pH 4.75) was added to each 250 μL serum aliquot. 250 μL of ice-cold β-glucuronidase (Sigma, St. Louis, MO) were then added and the sample gently agitated. Samples were incubated at 37°C for 2.5 hours. After incubation, 2 mL of 0.1% H3PO4 was added along with 50 μL of the internal standard (MDZ-[15N3]) and samples vortex-mixed for 30 seconds. A Strata X-C solid phase extraction (SPE) column (Phenomenex, Torrance, CA 90501) was used to extract MDZ and HMDZ from serum. SPE columns were preconditioned with methanol/water. Serum samples were then loaded onto SPE columns and washed with 2 mL of 0.1% H3PO4 in 50:50 methanol:acetonitrile followed by 1 mL of 50:50 methanol:acetonitrile. MDZ and HMDZ were eluted by gravity flow using 3 mL 6% ammonia in 50:50 methanol:acetonitrile. Eluents were dried under nitrogen and reconstituted in 75 μL LC/MS mobile phase A (30% acetonitrile, 5mM ammonium formate pH 3.0). Samples were then transferred to microcentrifuge tubes and centrifuged at 13,200 rpm.
Using a Model 10Avp modular high performance liquid chromatography (HPLC) system (Shimadzu Corp., Columbia, MD), 10 μL aliquots were injected onto a 10 × 0.2 cm Gemini 5om C18 column (Phenomenex, Torrance, CA). MDZ and HMDZ were eluted at a flow of 0.2 mL/min using a 4-min. linear gradient from 30% to 80% acetonitrile:ammonium formate (5 mM pH 3.0). Analytes were converted to gas-phase ions in a TurboIon Spray™ heated electrospray ionization (ESI) source (MDS Sciex, Concord, Ontario, Canada) operated at +4,400 volts and 425°C. Ions were resolved and detected in an API3000 triple-quadrupole mass spectrometer (MDS Sciex, Concord, Ontario, Canada) by multiple reaction monitoring. MDZ and HMDZ serum concentrations were quantified by a comparison of the ratio of their peak areas to that of the internal control, MDZ-[15N3].
Validation studies found that standard curves were linear over the range of 250 to 0.1 ng/mL and yielded correlation coefficients > 0.995. The limit of quantitation was 0.1 ng/mL and the limit of detection 0.02 ng/mL. Mean recoveries of MDZ and HMDZ were 92% and 85%, respectively. Relative standard deviations for interday accuracy and precision assessments for quality control standards at 120, 20, and 1.5 ng/mL were < 10%.
Supplement analysis
The phytochemical content of each supplement was independently analyzed for specific “marker compounds” by HPLC. Analytical standards of the flavanolignans taxifolin, silychristin, silydianin, silibinin A, and silibinin B were purchased from ChromaDex, Inc. (Santa Ana, CA, USA). Standard solutions of each flavanolignan were prepared in methanol covering a range of 0.01–1 μg/mL and used for quantitative purposes. Flavanolignan content of milk thistle was quantitated using a previously published method.41 Briefly, contents of six milk thistle capsules were placed in individual brown glass bottles and dissolved in 75 mL of ethanol. The contents of each vessel were agitated at 75 rpm for 4 hours at 60°C. One milliliter aliquots were removed, evaporated under nitrogen, and redissolved in 1 mL methanol. 10 μL were injected onto a Symmetry C18 column (150 mm × 4.6 mm, 5μm) (Waters Corp., Milford, MA, USA) using a Waters Alliance 2690 component HPLC system (Waters Corp., Milford, MA, USA). A gradient elution using a mobile phase of methanol:water (20:80, designated Solvent A and 80:20, designated Solvent B) was used to separate the flavanolignans. A mixture of 85:15 (Solvent A:B) was initiated for 5 minutes at a flow of 0.75 ml/min, followed by a linear gradient over 15 minutes to achieve a mixture of 45:55 (Solvent A:B) which was held constant for an additional 20 minutes. The gradient was then ramped down linearly over 10 minutes to the original concentration (85:15, A:B). Column eluent was monitored by a Model 996 photodiode array detector (Waters Corp., Milford, MA) at a wavelength of 290nm. Retention times for taxifolin, silichristin, silidianin, silibinin A, and silibinin B were 9.6, 16.5, 18.8, 23.7 and 24.7 minutes, respectively. The lower limit of quantitation for each analyte was 0.01 μg/mL. The interday accuracy and precision for silymarin components at 0.05, 0.1, and 0.5 μg/mL was < 8%.
Black cohosh was analyzed for triterpene glycosides (cimiracemosides, cimicifugoside, 27-deoxyactein, and actein) (Chromadex Inc., Santa Ana, CA, USA) using reversed phase HPLC with evaporative light scattering detection as described previously.42 Standard curves for each standard were linear over the range of 10 to 400 μg/mL. The limit of quantitation for cimiracemoside (the least prevalent component) was 10 μg/mL. Extraction recoveries exceeded 95% and relative standard deviations for interday accuracy and precision assessments were < 5%.
Pharmacokinetic analysis and phenotype assessment
MDZ pharmacokinetic parameters were determined using standard noncompartmental methods with the computer program WinNonlin (version 2.1; Pharsight, Mountain View, CA, USA). Area under the serum concentration-time curves from zero to 6 hours (AUC(0–6)) were determined by use of the trapezoidal rule. The terminal elimination rate constant (ke) was calculated using the slope of the log-linear regression of the terminal elimination phase. Area under the serum concentration versus time curve from zero to infinity (AUC0–∞) was calculated using the log-linear trapezoidal rule up to the last measured time concentration (Clast) with extrapolation to infinity using Clast/ke. The elimination half-life was calculated as 0.693/ke. The apparent oral clearance of midazolam (Cl/F) was calculated as dose/AUC0–∞. Peak MDZ concentrations (Cmax) and the times when they occurred (Tmax) were derived directly from the data.
The justification of specified time points for obtaining metabolite/parent serum ratios to estimate probe drug clearance has been previously addressed.13 Serum ratios of HMDZ/MDZ determined one hour after dosing were used to estimate CYP3A activity. Differences in pre- and post-supplementation/medication HMDZ/MDZ ratios obtained one hour after MDZ dosing were used to estimate the effects of rifampin, clarithromycin, milk thistle, and black cohosh on CYP3A phenotype.
Disintegration tests
An absence of botanical-mediated effects on midazolam pharmacokinetics could stem from products exhibiting poor disintegration and/or dissolution characteristics. To address this concern, each product was subjected to disintegration testing as outlined in the United States Pharmacopeia 28.43 The disintegration apparatus consisted of a basket-rack assembly operated at 29–32 cycles per minute with 0.1 N HCl (37°C) as the immersion solution. One dosage unit (uncoated tablet or soft gel capsule) of each supplement was placed into each of the six basket assembly tubes. The time required for the complete disintegration of six dosage units was determined. This process was repeated with an additional six dosage units to assure accuracy. Since there are no specifications for the disintegration time of the botanical supplements used in this study, the mean of six individual dosage units was taken as the disintegration time for that particular product. A product was considered completely disintegrated if the entire residue passed through the mesh screen of the test apparatus, except for capsule shell fragments, or if the remaining soft mass exhibited no palpably firm core.
Statistical Analysis
A repeated measures ANOVA model was fit for each pharmacokinetic parameter using SAS Proc Mixed software (SAS Institute, Inc. Cary, N.C., USA). Since pre-and post-supplementation/medication pharmacokinetic parameters were determined in each subject for all four of the study phases, a covariance structure existed for measurements within subjects. Sex, supplement/medication, and supplement/medication-by-sex terms were estimated for each parameter using a Huynh-Feldt covariance structure fit. If supplement/medication-by-sex interaction terms for a specific parameter measure were significant at the 5% level, the focus of the post-supplementation/medication minus pre-supplementation/medcation response was assessed according to sex. If the supplement/medication-by-sex interaction was not statistically significant, responses for both sexes were combined.
An identical approach was taken to evaluate the effects of the supplementation/medication scheme on 1-hour HMDZ/MDZ ratios. Additionally, a power analysis was performed to estimate the ability to detect significant post- minus pre-supplementation/medication effects. All four models obtained at least 80% power at the 5% level of significance to detect a Cohen effect size of 1.32 to 1.50 standard deviation units.44 A Pearson’s correlation analysis for 1-hour HMDZ/MDZ serum ratios and MDZ oral clearance was also performed using SAS Proc Corr software (SAS Institute, Inc. Cary, N.C., USA).
RESULTS
All nineteen subjects completed each phase of the study. Neither spontaneous reports from study participants or their responses to questions asked by study nurses regarding supplement/medication usage revealed any serious adverse events. Nausea, indigestion, and complaints of a metallic taste were frequently noted during clarithromycin phases. Mild indigestion and reddish discoloration of the urine were common conditions reported with rifampin use. Three subjects noted an increase in headaches while taking milk thistle and one subject associated black cohosh with the onset of “vivid dreams”. No clinically significant changes in blood pressure, heart rate, or respiratory rate were observed after MDZ administration. Examination of pill counts and food/medication diaries revealed no significant deviations from the study protocol.
During each pre-supplementation/medication phase, subjects slept for approximately 1–2 hours after receiving MDZ. Milk thistle and black cohosh had no noticeable effect on the duration of MDZ-induced sleep. After rifampin, however, most subjects either did not sleep or their sleep time was less than 0.5 hours. Clarithromycin increased the average sleep time for all subjects to 3–4 hours.
The effects of clarithromycin, rifampin, milk thistle, and black cohosh on serum MDZ concentration versus time profiles are depicted in Figure 1. Supplement/medication effects on MDZ pharmacokinetics are presented in Table I. No statistical differences were observed for MDZ pharmacokinetic parameters at the beginning of each supplementation/medication phase (baseline) (Table I). Statistically significant increases (p < 0.001) in MDZ AUC(0–∞), Cmax, and elimination half-life were observed after 7 days of clarithromycin ingestion (Figure. 1; Table I). Clarithromycin also decreased MDZ apparent oral clearance by 88% (1.32 ± 0.34 vs. 0.16 ± 0.07 L/hr/kg)(p < 0.001; Table I). Statistically significant reductions (p < 0.001) in MDZ AUC(0–∞), Cmax, and elimination half-life were noted following rifampin administration (Figure 1; Table I). Rifampin increased MDZ apparent oral clearance by more than 20 fold (1.44 ± 0.37 vs. 29.6 ± 15.2 L/hr/kg)(p < 0.001; Table I). A statistically significant reduction in Tmax was also observed following rifampin (p < 0.05; Table I). In contrast to rifampin and clarithromycin, no significant changes in MDZ pharmacokinetics were observed as a result of milk thistle or black cohosh supplementation (Figure 1; Table I).
A significant sex-related difference in baseline (e.g. pre-supplementation/medication) oral MDZ clearance was observed. The oral clearance of MDZ was significantly greater in female subjects (1.61 ± 0.49 versus 1.04 ± 0.30 L/hr/kg; p < 0.001) than in males. However, no sex-related differences in the extent of CYP3A induction (i.e., change in pre- versus post-rifampin CL/F/kg) or inhibition (i.e. change in pre- versus post-clarithromycin Cl/F/kg) were observed.
Comparisons of 1-hour HMDZ/MDZ serum concentration ratios before and after supplementation/medication mirrored the effects observed for MDZ concentration-time profiles (Figure 2; Table II). Like that observed for baseline values of MDZ oral clearance, no statistically significant differences occurred among mean values for 1-hour HMDZ/MDZ ratios at baseline (Table II). Again, as with MDZ oral clearance, a sex-related difference was noted for mean MDZ phenotype assessments. At each baseline determination, mean values for female 1-hour HMDZ/MDZ ratios were significantly greater (4.12 ± 1.3 versus 2.84 ± 0.82; p < 0.001) than those for males; however, no sex-related effect with regard to extent of change in MDZ phenotypes was noted after each treatment phase. Mean post-rifampin 1-hour HMDZ/MDZ serum ratios were significantly greater than pre-dose values indicating an induction of CYP3A activity (Figure 2A), while the opposite was true for clarithromycin treatment signifying CYP3A inhibition (Figure 2B). No significant changes in mean 1-hour HMDZ/MDZ serum ratios were noted after 14-day courses of either milk thistle or black cohosh (Figures 2C, ,2D),2D), suggesting that these supplements are not potent modulators of CYP3A in vivo. Correlation analysis revealed a significant positive correlation between 1-hour HMDZ/MDZ ratios and CL/F/kg (r2 = 0.82, p < 0.001; Figure 3).
Results of phytochemical analyses and disintegration testing for milk thistle and black cohosh formulations are presented in Table III. Based on these findings, subjects ingested approximately 440 mg of silymarin and 3.0 mg of triterpene glycosides on a daily basis. In addition, both dosage forms disintegrated in less than 15 minutes.
DISCUSSION
The present findings suggest that phytochemical components in the milk thistle and black cohosh formulations investigated in this study did not significantly affect the pharmacokinetics of MDZ in humans, and therefore are not likely to pose a significant interaction risk with other CYP3A substrates. This interpretation is bolstered by the significant changes in MDZ pharmacokinetics observed following the administration of clarithromycin, a known CYP3A4 inhibitor, and rifampin, a recognized inducer of CYP3A4 expression. In addition, our results do not support previous in vitro findings that silymarin (i.e., silibinin A, silibinin B silidianin, silichristin, and taxifolin) inhibits CYP3A4 activity, at least not in the context of the recommended supplementation regimen used in the study. This discrepancy may stem from the fact that milk thistle flavanolignans are practically insoluble in water and that in vitro studies demonstrating an inhibitory effect of silymarin on CYP3A4 activity have utilized solubilizing agents (e.g., dimethylsulfoxide27,29,30 or methanol28) to facilitate hepatocyte or microsomal membrane permeability. Depending on the in vitro model utilized, IC50 values for individual flavanolignans or silymarin extract have ranged from 25–250 μM,27–30 with some evidence that silibinin can act as a mechanism-based inhibitor of CYP3A.26 From the results of the present study, it would appear that local silymarin concentrations at intestinal enterocyte membrane interfaces were lower than the 25–250 μM necessary for in vitro inhibition of CYP3A,27–30 and the degree of mechanism-based inhibition, if any, was not comparable to that observed with clarithromycin.
The milk thistle product used in the present study was formulated with soybean oil, glycerin, and lecithin in a soft gelatin capsule, and upon disintegration the contents appeared to remain undissolved. Since flavanolignan serum concentrations were not measured, any indication as to their in vivo solubility and/or bioavailability status remains unknown. Nevertheless, bioavailability and dissolution characteristics for silymarin-containing products have been shown to vary widely. An evaluation of nine separate milk thistle products found that the amount of silibinin released over one hour into an aqueous buffered solution (pH 7.5, 37°C) ranged from 0–85%;45 while a comparative bioavailability study of three silibinin-containing dosage forms found that values for AUC and Cmax varied among products by factors of 3 and 6, respectively.46 Moreover, several studies have demonstrated that silymarin-containing products exhibit especially poor bioavailability and drug-release properties when not formulated with solubility-enhancing agents like phosphatidylcholine and polyethylene glycol.45,47–49 The bioavailability and drug-release characteristics of silymarin is significantly enhanced when silibinin is complexed with phosphotidylcholine or formulated as lipid-containing microspheres.50–53 Unlike many European products, the majority of milk thistle supplements sold in the United States do not appear to incorporate these technologies.52
With the multitude of supplement brands available on the market, discrepancies in product content, formulation, dissolution, and bioavailability can be the bane of any clinical safety, efficacy, or herb-drug interaction study—a problem not limited to milk thistle. Formulation differences could explain the disparity between a recent study performed in India22 and several conducted in the United States12,19–21 regarding the effects of milk thistle on the disposition of CYP3A substrates. Rajnarayana et al. found that 9 days of silymarin administration (Silybon™) increased the clearance of metronidazole, a substrate of CYP2C9, CYP3A, and P-gp, by almost 30%.22 The authors concluded that induction of CYP and/or P-gp might have accounted for the observed effects. Conversely, milk thistle interaction studies conducted in the United States and Canada found no statistically significant changes in the pharmacokinetics of indinavir, a CYP3A/P-gp substrate,19–21 although slight reductions (8–18%) in indinavir AUC were noted in each study. Collectively, the above studies hint at a possible mild inductive effect of silymarin on CYP3A and/or P-gp. In the only in vitro examination of milk thistle components on CYP3A induction, Raucy, using a reporter gene assay for the human pregnane X receptor and promoter regions of CYP3A transfected in HepG2 cells, found no evidence that silymarin, when solubilized with dimethylsulfoxide (DMSO), could induce the enzyme.54 Furthermore, in a previous study utilizing MDZ, we found that 28 days of milk thistle supplementation had no significant effect on 1-hour HMDZ/MDZ ratios (a finding confirmed by the current results) implying that conventional silymarin formulations are devoid of any clinically relevant CYP3A modulatory effects.12 Taken together, our results and those reported previously suggest that, when compared to potent inducers and inhibitors of CYP3A, milk thistle flavanolignans pose no clinically significant risks for pharmacokinetic herb-drug interactions involving CYP3A substrates.
Recent in vitro findings demonstrate that, in the presence of DMSO, black cohosh extracts or individual triterpene glycosides can inhibit CYP3A.32 However, the results reported here, and earlier,12 indicate that, when compared to clarithromycin and rifampin, recommended doses of black cohosh triterpene glycosides do not affect MDZ disposition and are therefore not effective modulators of CYP3A in vivo. Whether this lack of effect is a function of dose, solubility, bioavailability, or a combination of factors remains to be seen. Like many botanical supplements, the pharmacokinetic profile of black cohosh’s constituent phytochemicals has not been adequately investigated. Only one group has described an attempt at measuring mercapturate conjugates of black cohosh constituents (fukinolic acid, fukiic acid, caffeic acid, and cimiracemate B) in the urine of women after consuming 256 mg of a standardized black cohosh extract, and none of the target conjugates were detected.55 This finding alone brings into question the cellular permeability and bioavailability of these specific phytochemicals. Accordingly, the available in vivo evidence would seem to render black cohosh as an unlikely source of clinically important herb-drug interactions.
Poor systemic bioavailability of phytochemicals, however, may not always be associated with a lack of CYP3A modulation. This is best illustrated with grapefruit juice. Grapefruit juice, a well recognized mechanism-based inhibitor of intestinal CYP3A4 produces significant reductions in the oral clearance of many CYP3A4 substrates, yet the two phytochemicals primarily responsible for this effect, bergamottin and 6′,7′-dihydroxybergamottin, do not attain measurable concentrations in the plasma.56 From the results of the present study, however, it would appear that concentrations of specific milk thistle and black cohosh phytochemicals were insufficient to elicit any clinically noticeable effects on CYP3A.
Of particular interest was the close agreement between MDZ pharmacokinetic parameters described here and those reported earlier by Gorski et al.39,40 Like Gorski, we too noted a sex-related difference in oral MDZ clearance with women exhibiting higher values than men.40 Unlike Gorski, however, we failed to observe a sex-related effect in the response of CYP3A to induction by rifampin39 or inhibition by clarithromycin.40
Our findings also support the utility of 1-hour HMDZ/MDZ ratios as a practical method for identifying herb-drug interactions that involve CYP3A induction or inhibition. Previously, this approach had been used to document CYP3A induction following St. John’s wort supplementation,13,14 and its inhibition by goldenseal.12 The method also demonstrated that an absence of change in mean phenotypic ratios following botanical supplementation could be interpreted as a lack of effect on CYP activity. Such was the case with Citrus aurantium, Ginkgo biloba, Panax ginseng, and saw palmetto extracts13,14,33—the latter three examples being confirmed by other investigators using more conventional area-under-the-curve assessments.57–59 The list can now be extended to include milk thistle and black cohosh. Thus, a range of herb-mediated effects on CYP activity (e.g. induction, inhibition, or no effect) can be differentiated with single time-point phenotypic ratios. It must be emphasized, however, that single-time point phenotypic ratios simply provide estimates of probe drug clearance. The utility of these approximations have recently come under question, with some investigators finding the correlations unacceptable.38 We, however, found that the change, or lack thereof, in HMDZ/MDZ ratios provided a reasonable correlation with oral MDZ clearance (Figure 3). Our aim is not to propose that traditional means of determining MDZ clearance can be supplanted by metabolic phenotypic ratios; however, we do believe they provide a less labor-intensive, more subject-friendly means for evaluating multiple CYP enzymes and multiple botanical supplements in vivo while using a limited blood-sampling scheme.12–14,33 In short, single-time point metabolic phenotypic ratios may serve as a cost-effective in vivo screening method for assessing potential CYP-mediated herb-drug interactions. Once identified, candidate herbs may be evaluated further by using more traditional pharmacokinetic approaches.
In conclusion, when compared to the effects of rifampin and clarithromycin, the specific brand of milk thistle and black cohosh supplements utilized in this study produced no significant changes in the disposition of midazolam, a clinically recognized CYP3A substrate. Accordingly, these two products appear to pose no clinically significant risk for CYP3A-mediated herb-drug interactions. However, given the inter-product variability in phytochemical content, potency, and formulation among botanical supplements, these results may not extend to regimens utilizing higher dosages, longer supplementation periods, or brands with improved dissolution and/or bioavailability characteristics.
References
Formats:
- Article
- |
- PubReader
- |
- ePub (beta)
- |
- PDF (498K)
- |
- Citation


Not even Beta!
Please sign in to play the game
Psst ... you need a Google ID ...
This works WAY better on Google Chrome!
May not work on Safari at all, working on it, :-(
| No. | Status | Moves |
|---|
Please sign in to play the game
Psst ... you need a Google ID ...
This works WAY better on Google Chrome!
May not work on Safari at all, working on it, :-(
| No. | Status | Moves |
|---|


Oman strongly condemns stabbing attack in Jordan
by Times News ServiceMuscat: Oman has strongly condemned a stabbing attack at a popular tourist site in Jordan.
On Wednesday, a lone attacker on stabbed eight people, including four foreign tourists and their tour guide, at a popular archaeological site of Jerash in northern Jordan.
In a statement by Oman News Agency said: “The Sultanate strongly condemns the stabbing attack against foreign tourists and Jordanian citizens in Jerash governorate and affirms its solidarity with brotherly Jordan against this sinful and religiously, morally and humanly rejected act, and expresses its wishes for injuries the speedy recovery.”