From a7f733685f2c08cc1b5e4dda69e23325dcfba392 Mon Sep 17 00:00:00 2001 From: Nick Date: Tue, 23 Apr 2024 14:30:11 -0600 Subject: [PATCH 01/22] add static typing --- api/valor_api/enums.py | 1 + client/valor/enums.py | 1 + client/valor/schemas/symbolic/collections.py | 9 + .../client/metrics/test_ranking.py | 218 ++++++++++++++++++ migrations/sql/00000007_add_ranking.down.sql | 1 + migrations/sql/00000007_add_ranking.up.sql | 2 + 6 files changed, 232 insertions(+) create mode 100644 integration_tests/client/metrics/test_ranking.py create mode 100644 migrations/sql/00000007_add_ranking.down.sql create mode 100644 migrations/sql/00000007_add_ranking.up.sql diff --git a/api/valor_api/enums.py b/api/valor_api/enums.py index 2a09b5a9d..f763f7954 100644 --- a/api/valor_api/enums.py +++ b/api/valor_api/enums.py @@ -7,6 +7,7 @@ class AnnotationType(str, Enum): POLYGON = "polygon" MULTIPOLYGON = "multipolygon" RASTER = "raster" + RANKING = "ranking" @property def numeric(self) -> int: diff --git a/client/valor/enums.py b/client/valor/enums.py index 5ec9eeccc..24e230938 100644 --- a/client/valor/enums.py +++ b/client/valor/enums.py @@ -7,6 +7,7 @@ class AnnotationType(str, Enum): POLYGON = "polygon" MULTIPOLYGON = "multipolygon" RASTER = "raster" + RANKING = "ranking" class TaskType(str, Enum): diff --git a/client/valor/schemas/symbolic/collections.py b/client/valor/schemas/symbolic/collections.py index d5710b7f4..e73f30d98 100644 --- a/client/valor/schemas/symbolic/collections.py +++ b/client/valor/schemas/symbolic/collections.py @@ -338,6 +338,7 @@ def __init__( polygon: Optional[Polygon] = None, raster: Optional[Raster] = None, embedding: Optional[Embedding] = None, + ranking: Union[List[str], List[float], None] = None, ): """ Constructs an annotation. @@ -358,7 +359,10 @@ def __init__( A raster annotation. embedding: List[float], optional An embedding, described by a list of values with type float and a maximum length of 16,000. + ranking: Union[List[str], List[float], None] + A list of strings or a list of floats representing an ordered ranking. """ + self.ranking = ranking super().__init__( task_type=task_type, metadata=metadata if metadata else dict(), @@ -379,6 +383,11 @@ def formatting() -> Dict[str, Any]: "embedding": Embedding.nullable, } + def to_dict(self) -> dict: + ret = super().to_dict() + ret["ranking"] = self.ranking + return ret + class Datum(StaticCollection): """ diff --git a/integration_tests/client/metrics/test_ranking.py b/integration_tests/client/metrics/test_ranking.py new file mode 100644 index 000000000..3c97370d6 --- /dev/null +++ b/integration_tests/client/metrics/test_ranking.py @@ -0,0 +1,218 @@ +""" These integration tests should be run with a back end at http://localhost:8000 +that is no auth +""" + +import pytest + +from valor import ( + Annotation, + Client, + Dataset, + Datum, + GroundTruth, + Label, + Model, + Prediction, +) +from valor.enums import TaskType + + +@pytest.fixture +def gt_correct_class_ranking(): + # input option #1: a list of strings denoting all of the potential options. when users pass in a list of strings, they won't be able to get back NDCG + return [ + GroundTruth( + datum=Datum(uid="uid1", metadata={}), + annotations=[ + Annotation( + task_type=TaskType.RANKING, + labels=[ + Label(key="k1", value="gt"), + ], + ranking=[ + "best choice", + "2nd", + "3rd", + "4th", + ], + ) + ], + ), + GroundTruth( + datum=Datum(uid="uid1", metadata={}), + annotations=[ + Annotation( + task_type=TaskType.RANKING, + labels=[ + Label(key="k2", value="gt"), + ], + ranking=[ + "a", + "b", + "c", + "d", + ], + ) + ], + ), + GroundTruth( + datum=Datum(uid="uid2", metadata={}), + annotations=[ + Annotation( + task_type=TaskType.RANKING, + labels=[ + Label(key="k1", value="gt"), + ], + ranking=[ + "1", + "2", + "3", + "4", + ], + ) + ], + ), + ] + + +@pytest.fixture +def pd_correct_class_ranking(): + return [ + Prediction( + datum=Datum(uid="uid1", metadata={}), + annotations=[ + Annotation( + task_type=TaskType.RANKING, + labels=[ + Label(key="k1", value="gt"), + ], + ranking=[ + "bbq", + "iguana", + "best choice", + ], # only "best choice" was actually relevant + ) + ], + ), + Prediction( + datum=Datum(uid="uid1", metadata={}), + annotations=[ + Annotation( + task_type=TaskType.RANKING, + labels=[ + Label(key="k1", value="gt"), + ], + ranking=[ + 0.4, + 0.3, + 0.2, + ], # error case: length of this prediction doesn't match ground truth we're comparing against + ) + ], + ), + Prediction( + datum=Datum(uid="uid1", metadata={}), + annotations=[ + Annotation( + task_type=TaskType.RANKING, + labels=[ + Label(key="k1", value="gt"), + ], + ranking=[ + 0.4, + 0.3, + 0.2, + 0.2, + ], # error case: weights sum to greater than one + ) + ], + ), + Prediction( + datum=Datum(uid="uid1", metadata={}), + annotations=[ + Annotation( + task_type=TaskType.RANKING, + labels=[ + Label(key="k1", value="gt"), + ], + ranking=[ + 0.4, + 0.3, + 0.2, + 0.1, + ], # ranking by relevance scores + ) + ], + ), + Prediction( + datum=Datum(uid="uid1", metadata={}), + annotations=[ + Annotation( + task_type=TaskType.RANKING, + labels=[ + Label(key="k2", value="gt"), + ], + ranking=[ + "a", + "b", + "c", + "d", + ], # perfect ranking + ) + ], + ), + Prediction( + datum=Datum(uid="uid2", metadata={}), + annotations=[ + Annotation( + task_type=TaskType.RANKING, + labels=[ + Label(key="k1", value="gt"), + ], + ranking=[ + "3", + "2", + "1", + "4", + ], + ) + ], + ), + ] + + +def test_evaluate_correct_class_ranking( + client: Client, + dataset_name: str, + model_name: str, + gt_correct_class_ranking: list, + pd_correct_class_ranking: list, +): + dataset = Dataset.create(dataset_name) + model = Model.create(model_name) + + for gt in gt_correct_class_ranking: + dataset.add_groundtruth(gt) + + dataset.finalize() + + for pred in pd_correct_class_ranking: + model.add_prediction(dataset, pred) + + model.finalize_inferences(dataset) + + # TODO check that the datum actually matters + + # TODO check that label key actually matters + + +def test_evaluate_relevancy_score_ranking(): + pass + + +def test_evaluate_embedding_ranking(): + pass + + +def test_evaluate_mixed_rankings(): + pass diff --git a/migrations/sql/00000007_add_ranking.down.sql b/migrations/sql/00000007_add_ranking.down.sql new file mode 100644 index 000000000..6b2fe1beb --- /dev/null +++ b/migrations/sql/00000007_add_ranking.down.sql @@ -0,0 +1 @@ +ALTER TABLE IF EXISTS annotation DROP COLUMN IF EXISTS ranking; diff --git a/migrations/sql/00000007_add_ranking.up.sql b/migrations/sql/00000007_add_ranking.up.sql new file mode 100644 index 000000000..47b289ea3 --- /dev/null +++ b/migrations/sql/00000007_add_ranking.up.sql @@ -0,0 +1,2 @@ +-- uses jsonb rather than text[] because we want the array to be able to contain either strings or floats +ALTER TABLE if exists annotation ADD COLUMN ranking jsonb; \ No newline at end of file From a417932a98fda3b275027a76a2404d37d7048270 Mon Sep 17 00:00:00 2001 From: Nick Date: Tue, 23 Apr 2024 23:50:14 -0600 Subject: [PATCH 02/22] add new symbolic type to handle ranking arrays --- api/valor_api/backend/models.py | 1 + api/valor_api/enums.py | 1 + api/valor_api/schemas/types.py | 4 + client/valor/enums.py | 1 + client/valor/schemas/symbolic/collections.py | 22 +- client/valor/schemas/symbolic/types.py | 65 +++++ .../client/metrics/test_ranking.py | 236 +++++++++--------- 7 files changed, 204 insertions(+), 126 deletions(-) diff --git a/api/valor_api/backend/models.py b/api/valor_api/backend/models.py index ab5df730e..800a3364c 100644 --- a/api/valor_api/backend/models.py +++ b/api/valor_api/backend/models.py @@ -125,6 +125,7 @@ class Annotation(Base): task_type: Mapped[str] = mapped_column(nullable=False) meta = mapped_column(JSONB) created_at: Mapped[datetime.datetime] = mapped_column(default=func.now()) + ranking = mapped_column(JSONB) # columns - linked objects box = mapped_column(Geometry("POLYGON"), nullable=True) diff --git a/api/valor_api/enums.py b/api/valor_api/enums.py index f763f7954..ab942c425 100644 --- a/api/valor_api/enums.py +++ b/api/valor_api/enums.py @@ -56,6 +56,7 @@ class TaskType(str, Enum): OBJECT_DETECTION = "object-detection" SEMANTIC_SEGMENTATION = "semantic-segmentation" EMBEDDING = "embedding" + RANKING = "ranking" class TableStatus(str, Enum): diff --git a/api/valor_api/schemas/types.py b/api/valor_api/schemas/types.py index 7b3ac77c7..2f0355a5f 100644 --- a/api/valor_api/schemas/types.py +++ b/api/valor_api/schemas/types.py @@ -307,6 +307,9 @@ class Annotation(BaseModel): A raster to assign to the 'Annotation'. embedding: list[float], optional A jsonb to assign to the 'Annotation'. + ranking: Union[List[str], List[float], None], optional + A list of strings or a list of floats representing an ordered ranking. + """ task_type: TaskType @@ -316,6 +319,7 @@ class Annotation(BaseModel): polygon: Polygon | None = None raster: Raster | None = None embedding: list[float] | None = None + ranking: list[float] | list[str] | None = None model_config = ConfigDict(extra="forbid") @model_validator(mode="after") diff --git a/client/valor/enums.py b/client/valor/enums.py index 24e230938..812d190af 100644 --- a/client/valor/enums.py +++ b/client/valor/enums.py @@ -17,6 +17,7 @@ class TaskType(str, Enum): OBJECT_DETECTION = "object-detection" SEMANTIC_SEGMENTATION = "semantic-segmentation" EMBEDDING = "embedding" + RANKING = "ranking" class TableStatus(str, Enum): diff --git a/client/valor/schemas/symbolic/collections.py b/client/valor/schemas/symbolic/collections.py index e73f30d98..37021ef6b 100644 --- a/client/valor/schemas/symbolic/collections.py +++ b/client/valor/schemas/symbolic/collections.py @@ -13,6 +13,7 @@ from valor.schemas.symbolic.types import List as SymbolicList from valor.schemas.symbolic.types import ( Polygon, + RankingArray, Raster, String, TaskTypeEnum, @@ -249,18 +250,20 @@ class Annotation(StaticCollection): ---------- task_type: TaskTypeEnum The task type associated with the `Annotation`. - metadata: Dictionary + metadata: Dictionary, optional A dictionary of metadata that describes the `Annotation`. labels: List[Label], optional A list of labels to use for the `Annotation`. - bounding_box: Box + bounding_box: Box, optional A bounding box to assign to the `Annotation`. - polygon: BoundingPolygon + polygon: BoundingPolygon, optional A polygon to assign to the `Annotation`. - raster: Raster + raster: Raster, optional A raster to assign to the `Annotation`. - embedding: List[float] + embedding: List[float], optional An embedding, described by a list of values with type float and a maximum length of 16,000. + ranking: Union[List[str], List[float], None], optional + A list of strings or a list of floats representing an ordered ranking. Examples -------- @@ -327,6 +330,9 @@ class Annotation(StaticCollection): embedding: Embedding = Embedding.symbolic( owner="annotation", name="embedding" ) + ranking: RankingArray = RankingArray.symbolic( + owner="annotation", name="ranking" + ) def __init__( self, @@ -359,10 +365,9 @@ def __init__( A raster annotation. embedding: List[float], optional An embedding, described by a list of values with type float and a maximum length of 16,000. - ranking: Union[List[str], List[float], None] + ranking: Union[List[str], List[float], None], optional A list of strings or a list of floats representing an ordered ranking. """ - self.ranking = ranking super().__init__( task_type=task_type, metadata=metadata if metadata else dict(), @@ -371,6 +376,7 @@ def __init__( polygon=polygon, raster=raster, embedding=embedding, + ranking=ranking, ) @staticmethod @@ -381,11 +387,11 @@ def formatting() -> Dict[str, Any]: "polygon": Polygon.nullable, "raster": Raster.nullable, "embedding": Embedding.nullable, + "ranking": RankingArray.nullable, } def to_dict(self) -> dict: ret = super().to_dict() - ret["ranking"] = self.ranking return ret diff --git a/client/valor/schemas/symbolic/types.py b/client/valor/schemas/symbolic/types.py index 1f78fb265..ad343231f 100644 --- a/client/valor/schemas/symbolic/types.py +++ b/client/valor/schemas/symbolic/types.py @@ -1997,6 +1997,71 @@ def width(self) -> int: return self.array.shape[1] +class RankingArray(Variable): + """ + Represents an ordered list of rankings if a list of strings is passed, otherwise represents an ordered list of reference scores. + + Parameters + ---------- + value : Union[List[float], List[str]], optional + A list of rankings or reference scores. + """ + + def __init__(self, value: typing.List): + """ + Initializes a ranking list. + + Parameters + ---------- + value : Union[List[float], List[str]], optional + A list of rankings or reference scores. + """ + super().__init__(value) + + self.__validate__(value) + + if None in value: + raise ValueError("RankingArray does not accept 'None' as a value.") + + @classmethod + def __validate__(cls, value: typing.Any): + """ + Validates typing. + + Parameters + ---------- + value : Any + The value to validate. + + Raises + ------ + TypeError + If the value type is not supported. + """ + contains_all_strings = all(isinstance(item, str) for item in value) + contains_all_floats = all(isinstance(item, float) for item in value) + + if ( + not isinstance(value, list) + or sum([contains_all_floats, contains_all_strings]) != 1 + ): + raise TypeError( + f"Expected type 'Optional[Union[List[float], List[str]]]' received type '{type(value)}'" + ) + elif len(value) < 1: + raise ValueError("RankingArray should have at least one dimension") + + @classmethod + def decode_value( + cls, + value: typing.Optional[typing.List], + ): + """Decode object from JSON compatible dictionary.""" + if value is None: + return None + return super().decode_value(value) + + class Embedding(Spatial): """ Represents a model embedding. diff --git a/integration_tests/client/metrics/test_ranking.py b/integration_tests/client/metrics/test_ranking.py index 3c97370d6..971e069c7 100644 --- a/integration_tests/client/metrics/test_ranking.py +++ b/integration_tests/client/metrics/test_ranking.py @@ -38,40 +38,40 @@ def gt_correct_class_ranking(): ) ], ), - GroundTruth( - datum=Datum(uid="uid1", metadata={}), - annotations=[ - Annotation( - task_type=TaskType.RANKING, - labels=[ - Label(key="k2", value="gt"), - ], - ranking=[ - "a", - "b", - "c", - "d", - ], - ) - ], - ), - GroundTruth( - datum=Datum(uid="uid2", metadata={}), - annotations=[ - Annotation( - task_type=TaskType.RANKING, - labels=[ - Label(key="k1", value="gt"), - ], - ranking=[ - "1", - "2", - "3", - "4", - ], - ) - ], - ), + # GroundTruth( + # datum=Datum(uid="uid1", metadata={}), + # annotations=[ + # Annotation( + # task_type=TaskType.RANKING, + # labels=[ + # Label(key="k2", value="gt"), + # ], + # ranking=[ + # "a", + # "b", + # "c", + # "d", + # ], + # ) + # ], + # ), + # GroundTruth( + # datum=Datum(uid="uid2", metadata={}), + # annotations=[ + # Annotation( + # task_type=TaskType.RANKING, + # labels=[ + # Label(key="k1", value="gt"), + # ], + # ranking=[ + # "1", + # "2", + # "3", + # "4", + # ], + # ) + # ], + # ), ] @@ -94,90 +94,90 @@ def pd_correct_class_ranking(): ) ], ), - Prediction( - datum=Datum(uid="uid1", metadata={}), - annotations=[ - Annotation( - task_type=TaskType.RANKING, - labels=[ - Label(key="k1", value="gt"), - ], - ranking=[ - 0.4, - 0.3, - 0.2, - ], # error case: length of this prediction doesn't match ground truth we're comparing against - ) - ], - ), - Prediction( - datum=Datum(uid="uid1", metadata={}), - annotations=[ - Annotation( - task_type=TaskType.RANKING, - labels=[ - Label(key="k1", value="gt"), - ], - ranking=[ - 0.4, - 0.3, - 0.2, - 0.2, - ], # error case: weights sum to greater than one - ) - ], - ), - Prediction( - datum=Datum(uid="uid1", metadata={}), - annotations=[ - Annotation( - task_type=TaskType.RANKING, - labels=[ - Label(key="k1", value="gt"), - ], - ranking=[ - 0.4, - 0.3, - 0.2, - 0.1, - ], # ranking by relevance scores - ) - ], - ), - Prediction( - datum=Datum(uid="uid1", metadata={}), - annotations=[ - Annotation( - task_type=TaskType.RANKING, - labels=[ - Label(key="k2", value="gt"), - ], - ranking=[ - "a", - "b", - "c", - "d", - ], # perfect ranking - ) - ], - ), - Prediction( - datum=Datum(uid="uid2", metadata={}), - annotations=[ - Annotation( - task_type=TaskType.RANKING, - labels=[ - Label(key="k1", value="gt"), - ], - ranking=[ - "3", - "2", - "1", - "4", - ], - ) - ], - ), + # Prediction( + # datum=Datum(uid="uid1", metadata={}), + # annotations=[ + # Annotation( + # task_type=TaskType.RANKING, + # labels=[ + # Label(key="k1", value="gt"), + # ], + # ranking=[ + # 0.4, + # 0.3, + # 0.2, + # ], # error case: length of this prediction doesn't match ground truth we're comparing against + # ) + # ], + # ), + # Prediction( + # datum=Datum(uid="uid1", metadata={}), + # annotations=[ + # Annotation( + # task_type=TaskType.RANKING, + # labels=[ + # Label(key="k1", value="gt"), + # ], + # ranking=[ + # 0.4, + # 0.3, + # 0.2, + # 0.2, + # ], # error case: weights sum to greater than one + # ) + # ], + # ), + # Prediction( + # datum=Datum(uid="uid1", metadata={}), + # annotations=[ + # Annotation( + # task_type=TaskType.RANKING, + # labels=[ + # Label(key="k1", value="gt"), + # ], + # ranking=[ + # 0.4, + # 0.3, + # 0.2, + # 0.1, + # ], # ranking by relevance scores + # ) + # ], + # ), + # Prediction( + # datum=Datum(uid="uid1", metadata={}), + # annotations=[ + # Annotation( + # task_type=TaskType.RANKING, + # labels=[ + # Label(key="k2", value="gt"), + # ], + # ranking=[ + # "a", + # "b", + # "c", + # "d", + # ], # perfect ranking + # ) + # ], + # ), + # Prediction( + # datum=Datum(uid="uid2", metadata={}), + # annotations=[ + # Annotation( + # task_type=TaskType.RANKING, + # labels=[ + # Label(key="k1", value="gt"), + # ], + # ranking=[ + # "3", + # "2", + # "1", + # "4", + # ], + # ) + # ], + # ), ] From 1defc4aa333af0ae7538c1a36f91a6dd1a8fd8b6 Mon Sep 17 00:00:00 2001 From: Nick Date: Wed, 24 Apr 2024 01:16:36 -0600 Subject: [PATCH 03/22] pass functional tests --- .../crud/test_create_delete.py | 159 ++++++++++++++++++ api/tests/unit-tests/test_enums.py | 2 + api/valor_api/backend/core/annotation.py | 11 ++ api/valor_api/enums.py | 1 + api/valor_api/schemas/types.py | 19 ++- client/unit-tests/coretypes/test_core.py | 2 +- .../client/metrics/test_ranking.py | 4 + 7 files changed, 195 insertions(+), 3 deletions(-) diff --git a/api/tests/functional-tests/crud/test_create_delete.py b/api/tests/functional-tests/crud/test_create_delete.py index 0372d41ed..2a898c164 100644 --- a/api/tests/functional-tests/crud/test_create_delete.py +++ b/api/tests/functional-tests/crud/test_create_delete.py @@ -1475,3 +1475,162 @@ def test_create_clf_metrics( ) ).all() assert len(confusion_matrices) == 2 + + +@pytest.fixture +def groundtruth_ranking( + dataset_name, img1: schemas.Datum +) -> list[schemas.GroundTruth]: + return [ + schemas.GroundTruth( + dataset_name=dataset_name, + datum=img1, + annotations=[ + schemas.Annotation( + task_type=enums.TaskType.RANKING, + labels=[ + schemas.Label(key="k1", value="gt"), + ], + ranking=[ + "best choice", + "2nd", + "3rd", + "4th", + ], + ) + ], + ) + ] + + +@pytest.fixture +def prediction_ranking( + dataset_name: str, model_name: str, img1: schemas.Datum +) -> list[schemas.Prediction]: + return [ + schemas.Prediction( + dataset_name=dataset_name, + model_name=model_name, + datum=img1, + annotations=[ + schemas.Annotation( + task_type=enums.TaskType.RANKING, + labels=[ + schemas.Label(key="k1", value="gt2"), + ], + ranking=[ + "bbq", + "iguana", + "best choice", + ], # only "best choice" was actually relevant + ) + ], + ) + ] + + +def test_create_ranking_ground_truth_and_delete_dataset( + db: Session, + dataset_name: str, + groundtruth_ranking: list[schemas.GroundTruth], +): + # sanity check nothing in db + _check_db_empty(db=db) + + crud.create_dataset(db=db, dataset=schemas.Dataset(name=dataset_name)) + + for gt in groundtruth_ranking: + crud.create_groundtruth(db=db, groundtruth=gt) + + assert db.scalar(func.count(models.Annotation.id)) == 1 + assert db.scalar(func.count(models.Datum.id)) == 1 + assert db.scalar(func.count(models.GroundTruth.id)) == 1 + assert db.scalar(func.count(models.Label.id)) == 1 + + # verify we get the same dets back + for gt in groundtruth_ranking: + new_gt = crud.get_groundtruth( + db=db, dataset_name=gt.dataset_name, datum_uid=gt.datum.uid + ) + assert gt.datum.uid == new_gt.datum.uid + assert gt.dataset_name == new_gt.dataset_name + for metadatum in gt.datum.metadata: + assert metadatum in new_gt.datum.metadata + + for gta, new_gta in zip(gt.annotations, new_gt.annotations): + assert set(gta.labels) == set(new_gta.labels) + assert gta.bounding_box == new_gta.bounding_box + + # finalize to free job state + crud.finalize(db=db, dataset_name=dataset_name) + + # delete dataset and check the cascade worked + crud.delete(db=db, dataset_name=dataset_name) + for model_cls in [ + models.Dataset, + models.Datum, + models.GroundTruth, + models.Annotation, + ]: + assert db.scalar(func.count(model_cls.id)) == 0 + + # make sure labels are still there` + assert db.scalar(func.count(models.Label.id)) == 1 + + +def test_create_ranking_prediction_and_delete_model( + db: Session, + dataset_name: str, + model_name: str, + prediction_ranking: list[schemas.Prediction], + groundtruth_ranking: list[schemas.GroundTruth], +): + # check this gives an error since the model hasn't been added yet + with pytest.raises(exceptions.DatasetDoesNotExistError) as exc_info: + for pd in prediction_ranking: + crud.create_prediction(db=db, prediction=pd) + assert "does not exist" in str(exc_info) + + # create dataset, add images, and add predictions + crud.create_dataset(db=db, dataset=schemas.Dataset(name=dataset_name)) + + for gt in groundtruth_ranking: + crud.create_groundtruth(db=db, groundtruth=gt) + + # check this gives an error since the model hasn't been created yet + with pytest.raises(exceptions.ModelDoesNotExistError) as exc_info: + for pd in prediction_ranking: + crud.create_prediction(db=db, prediction=pd) + assert "does not exist" in str(exc_info) + + # finalize dataset + crud.finalize(db=db, dataset_name=dataset_name) + + # check this gives an error since the model hasn't been added yet + with pytest.raises(exceptions.ModelDoesNotExistError) as exc_info: + for pd in prediction_ranking: + crud.create_prediction(db=db, prediction=pd) + assert "does not exist" in str(exc_info) + + # create model + crud.create_model(db=db, model=schemas.Model(name=model_name)) + for pd in prediction_ranking: + crud.create_prediction(db=db, prediction=pd) + + # check db has the added predictions + assert db.scalar(func.count(models.Annotation.id)) == 2 + assert db.scalar(func.count(models.Datum.id)) == 1 + assert db.scalar(func.count(models.GroundTruth.id)) == 1 + assert db.scalar(func.count(models.Prediction.id)) == 1 + assert db.scalar(func.count(models.Label.id)) == 2 + + # finalize + crud.finalize(db=db, dataset_name=dataset_name, model_name=model_name) + + # delete model and check all rankings from it are gone + crud.delete(db=db, model_name=model_name) + assert db.scalar(func.count(models.Annotation.id)) == 1 + assert db.scalar(func.count(models.Datum.id)) == 1 + assert db.scalar(func.count(models.GroundTruth.id)) == 1 + assert db.scalar(func.count(models.Prediction.id)) == 0 + assert db.scalar(func.count(models.Label.id)) == 2 diff --git a/api/tests/unit-tests/test_enums.py b/api/tests/unit-tests/test_enums.py index b44b32d13..4af5a5cb2 100644 --- a/api/tests/unit-tests/test_enums.py +++ b/api/tests/unit-tests/test_enums.py @@ -16,6 +16,7 @@ def test_annotation_type_members(): AnnotationType.POLYGON, AnnotationType.MULTIPOLYGON, AnnotationType.RASTER, + AnnotationType.RANKING, } # test `numeric` @@ -24,6 +25,7 @@ def test_annotation_type_members(): assert AnnotationType.POLYGON.numeric == 2 assert AnnotationType.MULTIPOLYGON.numeric == 3 assert AnnotationType.RASTER.numeric == 4 + assert AnnotationType.RANKING.numeric == 5 # test `__gt__` _ = AnnotationType.RASTER > AnnotationType.MULTIPOLYGON diff --git a/api/valor_api/backend/core/annotation.py b/api/valor_api/backend/core/annotation.py index 144102b6c..6eab60da8 100644 --- a/api/valor_api/backend/core/annotation.py +++ b/api/valor_api/backend/core/annotation.py @@ -66,6 +66,7 @@ def _create_annotation( polygon = None raster = None embedding_id = None + ranking = None # task-based conversion match annotation.task_type: @@ -84,6 +85,9 @@ def _create_annotation( embedding_id = _create_embedding( db=db, value=annotation.embedding ) + case TaskType.RANKING: + if annotation.ranking: + ranking = annotation.ranking case _: pass @@ -95,6 +99,7 @@ def _create_annotation( "box": box, "polygon": polygon, "raster": raster, + "ranking": ranking, "embedding_id": embedding_id, } return models.Annotation(**mapping) @@ -249,6 +254,7 @@ def get_annotation( polygon = None raster = None embedding = None + ranking = None # bounding box if annotation.box is not None: @@ -282,6 +288,10 @@ def get_annotation( ) ) + # ranking + if annotation.ranking: + ranking = annotation.ranking + return schemas.Annotation( task_type=annotation.task_type, # type: ignore - models.Annotation.task_type should be a string in psql labels=labels, @@ -290,6 +300,7 @@ def get_annotation( polygon=polygon, # type: ignore - guaranteed to be a polygon in this case raster=raster, embedding=embedding, + ranking=ranking, ) diff --git a/api/valor_api/enums.py b/api/valor_api/enums.py index ab942c425..daa5677cf 100644 --- a/api/valor_api/enums.py +++ b/api/valor_api/enums.py @@ -17,6 +17,7 @@ def numeric(self) -> int: self.POLYGON: 2, self.MULTIPOLYGON: 3, self.RASTER: 4, + self.RANKING: 5, } return mapping[self] diff --git a/api/valor_api/schemas/types.py b/api/valor_api/schemas/types.py index 2f0355a5f..2dcac79d1 100644 --- a/api/valor_api/schemas/types.py +++ b/api/valor_api/schemas/types.py @@ -118,7 +118,22 @@ def _validate_annotation_by_task_type( and annotation.raster is None ): raise ValueError( - "Annotation with task type `embedding` do not support labels or geometries." + "Annotations with task type `embedding` do not support labels or geometries." + ) + case TaskType.RANKING: + if not ( + annotation.labels + and annotation.ranking is not None + and ( + annotation.bounding_box is None + and annotation.polygon is None + and annotation.embedding is None + and annotation.raster is None + and annotation.embedding is None + ) + ): + raise ValueError( + "Annotations with task type `ranking` should only contain labels and rankings." ) case TaskType.EMPTY | TaskType.SKIP: if not _check_if_empty_annotation(annotation): @@ -319,7 +334,7 @@ class Annotation(BaseModel): polygon: Polygon | None = None raster: Raster | None = None embedding: list[float] | None = None - ranking: list[float] | list[str] | None = None + ranking: list | None = None model_config = ConfigDict(extra="forbid") @model_validator(mode="after") diff --git a/client/unit-tests/coretypes/test_core.py b/client/unit-tests/coretypes/test_core.py index cae060707..c3bd95197 100644 --- a/client/unit-tests/coretypes/test_core.py +++ b/client/unit-tests/coretypes/test_core.py @@ -218,7 +218,7 @@ def test_prediction(): string = str(Prediction(datum=datum, annotations=pds)) assert ( string - == "{'datum': {'uid': 'somefile', 'metadata': {}}, 'annotations': [{'task_type': 'classification', 'metadata': {}, 'labels': [{'key': 'test', 'value': 'value', 'score': 1.0}], 'bounding_box': None, 'polygon': None, 'raster': None, 'embedding': None}, {'task_type': 'classification', 'metadata': {}, 'labels': [{'key': 'test', 'value': 'value', 'score': 1.0}], 'bounding_box': None, 'polygon': None, 'raster': None, 'embedding': None}]}" + == "{'datum': {'uid': 'somefile', 'metadata': {}}, 'annotations': [{'task_type': 'classification', 'metadata': {}, 'labels': [{'key': 'test', 'value': 'value', 'score': 1.0}], 'bounding_box': None, 'polygon': None, 'raster': None, 'embedding': None, 'ranking': None}, {'task_type': 'classification', 'metadata': {}, 'labels': [{'key': 'test', 'value': 'value', 'score': 1.0}], 'bounding_box': None, 'polygon': None, 'raster': None, 'embedding': None, 'ranking': None}]}" ) assert "dataset_name" not in string diff --git a/integration_tests/client/metrics/test_ranking.py b/integration_tests/client/metrics/test_ranking.py index 971e069c7..3cb152492 100644 --- a/integration_tests/client/metrics/test_ranking.py +++ b/integration_tests/client/metrics/test_ranking.py @@ -194,6 +194,10 @@ def test_evaluate_correct_class_ranking( for gt in gt_correct_class_ranking: dataset.add_groundtruth(gt) + import pdb + + pdb.set_trace() + dataset.finalize() for pred in pd_correct_class_ranking: From 9bec12172ce40e4ce128a7b16b41a57cb98bf9aa Mon Sep 17 00:00:00 2001 From: Nick Date: Wed, 24 Apr 2024 12:57:49 -0600 Subject: [PATCH 04/22] start functional tests and compute_ranking_metrics --- .../backend/metrics/test_ranking.py | 98 +++++++++++ api/tests/functional-tests/conftest.py | 52 ++++++ .../crud/test_create_delete.py | 52 ------ .../unit-tests/schemas/test_evaluation.py | 4 + api/valor_api/backend/core/evaluation.py | 2 +- api/valor_api/backend/metrics/ranking.py | 153 ++++++++++++++++++ api/valor_api/schemas/evaluation.py | 5 +- client/valor/coretypes.py | 51 ++++++ .../client/metrics/test_ranking.py | 14 +- 9 files changed, 373 insertions(+), 58 deletions(-) create mode 100644 api/tests/functional-tests/backend/metrics/test_ranking.py create mode 100644 api/valor_api/backend/metrics/ranking.py diff --git a/api/tests/functional-tests/backend/metrics/test_ranking.py b/api/tests/functional-tests/backend/metrics/test_ranking.py new file mode 100644 index 000000000..bbf9f2360 --- /dev/null +++ b/api/tests/functional-tests/backend/metrics/test_ranking.py @@ -0,0 +1,98 @@ +import pytest +from sqlalchemy.orm import Session + +from valor_api import crud, enums, schemas +from valor_api.backend import models +from valor_api.backend.core import create_or_get_evaluations +from valor_api.backend.metrics.ranking import compute_ranking_metrics + +# TODO +# @pytest.fixture +# def label_map(): +# return [ +# [["animal", "dog"], ["class", "mammal"]], +# [["animal", "cat"], ["class", "mammal"]], +# ] + + +@pytest.fixture +def ranking_test_data( + db: Session, + dataset_name: str, + model_name: str, + groundtruth_ranking: list[schemas.GroundTruth], + prediction_ranking: list[schemas.Prediction], +): + crud.create_dataset( + db=db, + dataset=schemas.Dataset( + name=dataset_name, + metadata={"type": "image"}, + ), + ) + for gt in groundtruth_ranking: + crud.create_groundtruth(db=db, groundtruth=gt) + crud.finalize(db=db, dataset_name=dataset_name) + + crud.create_model( + db=db, + model=schemas.Model( + name=model_name, + metadata={"type": "image"}, + ), + ) + for pd in prediction_ranking: + crud.create_prediction(db=db, prediction=pd) + crud.finalize(db=db, dataset_name=dataset_name, model_name=model_name) + + assert len(db.query(models.Datum).all()) == 1 + assert len(db.query(models.Annotation).all()) == 2 + assert len(db.query(models.Label).all()) == 2 + assert len(db.query(models.GroundTruth).all()) == 1 + assert len(db.query(models.Prediction).all()) == 1 + + +def test_ranking( + db: Session, + dataset_name: str, + model_name: str, + ranking_test_data, +): + # default request + job_request = schemas.EvaluationRequest( + model_names=[model_name], + datum_filter=schemas.Filter(dataset_names=[dataset_name]), + parameters=schemas.EvaluationParameters( + task_type=enums.TaskType.RANKING, + ), + meta={}, + ) + + # creates evaluation job + evaluations = create_or_get_evaluations(db=db, job_request=job_request) + assert len(evaluations) == 1 + assert evaluations[0].status == enums.EvaluationStatus.PENDING + + # computation, normally run as background task + _ = compute_ranking_metrics( + db=db, + evaluation_id=evaluations[0].id, + ) + + # get evaluations + evaluations = create_or_get_evaluations(db=db, job_request=job_request) + assert len(evaluations) == 1 + assert evaluations[0].status in { + enums.EvaluationStatus.RUNNING, + enums.EvaluationStatus.DONE, + } + + metrics = evaluations[0].metrics + + assert metrics + for metric in metrics: + if isinstance(metric, schemas.ROCAUCMetric): + if metric.label_key == "animal": + assert metric.value == 0.8009259259259259 + elif metric.label_key == "color": + assert metric.value == 0.43125 diff --git a/api/tests/functional-tests/conftest.py b/api/tests/functional-tests/conftest.py index dee7f0ef6..cd70d95a2 100644 --- a/api/tests/functional-tests/conftest.py +++ b/api/tests/functional-tests/conftest.py @@ -947,3 +947,55 @@ def raster() -> schemas.Raster: ] ) return schemas.Raster.from_numpy(r == 1) + + +@pytest.fixture +def groundtruth_ranking( + dataset_name, img1: schemas.Datum +) -> list[schemas.GroundTruth]: + return [ + schemas.GroundTruth( + dataset_name=dataset_name, + datum=img1, + annotations=[ + schemas.Annotation( + task_type=enums.TaskType.RANKING, + labels=[ + schemas.Label(key="k1", value="gt"), + ], + ranking=[ + "best choice", + "2nd", + "3rd", + "4th", + ], + ) + ], + ) + ] + + +@pytest.fixture +def prediction_ranking( + dataset_name: str, model_name: str, img1: schemas.Datum +) -> list[schemas.Prediction]: + return [ + schemas.Prediction( + dataset_name=dataset_name, + model_name=model_name, + datum=img1, + annotations=[ + schemas.Annotation( + task_type=enums.TaskType.RANKING, + labels=[ + schemas.Label(key="k1", value="gt2"), + ], + ranking=[ + "bbq", + "iguana", + "best choice", + ], # only "best choice" was actually relevant + ) + ], + ) + ] diff --git a/api/tests/functional-tests/crud/test_create_delete.py b/api/tests/functional-tests/crud/test_create_delete.py index 2a898c164..ee5d868f6 100644 --- a/api/tests/functional-tests/crud/test_create_delete.py +++ b/api/tests/functional-tests/crud/test_create_delete.py @@ -1477,58 +1477,6 @@ def test_create_clf_metrics( assert len(confusion_matrices) == 2 -@pytest.fixture -def groundtruth_ranking( - dataset_name, img1: schemas.Datum -) -> list[schemas.GroundTruth]: - return [ - schemas.GroundTruth( - dataset_name=dataset_name, - datum=img1, - annotations=[ - schemas.Annotation( - task_type=enums.TaskType.RANKING, - labels=[ - schemas.Label(key="k1", value="gt"), - ], - ranking=[ - "best choice", - "2nd", - "3rd", - "4th", - ], - ) - ], - ) - ] - - -@pytest.fixture -def prediction_ranking( - dataset_name: str, model_name: str, img1: schemas.Datum -) -> list[schemas.Prediction]: - return [ - schemas.Prediction( - dataset_name=dataset_name, - model_name=model_name, - datum=img1, - annotations=[ - schemas.Annotation( - task_type=enums.TaskType.RANKING, - labels=[ - schemas.Label(key="k1", value="gt2"), - ], - ranking=[ - "bbq", - "iguana", - "best choice", - ], # only "best choice" was actually relevant - ) - ], - ) - ] - - def test_create_ranking_ground_truth_and_delete_dataset( db: Session, dataset_name: str, diff --git a/api/tests/unit-tests/schemas/test_evaluation.py b/api/tests/unit-tests/schemas/test_evaluation.py index 6da2b7a67..d0cbfd86a 100644 --- a/api/tests/unit-tests/schemas/test_evaluation.py +++ b/api/tests/unit-tests/schemas/test_evaluation.py @@ -32,6 +32,10 @@ def test_EvaluationParameters(): ], ) + schemas.EvaluationParameters( + task_type=enums.TaskType.RANKING, + ) + with pytest.raises(ValidationError): schemas.EvaluationParameters( task_type=enums.TaskType.CLASSIFICATION, diff --git a/api/valor_api/backend/core/evaluation.py b/api/valor_api/backend/core/evaluation.py index e3d15ab21..8869de92d 100644 --- a/api/valor_api/backend/core/evaluation.py +++ b/api/valor_api/backend/core/evaluation.py @@ -325,7 +325,7 @@ def _create_responses( parameters = schemas.EvaluationParameters(**evaluation.parameters) match parameters.task_type: - case enums.TaskType.CLASSIFICATION: + case enums.TaskType.CLASSIFICATION | enums.TaskType.RANKING: kwargs = {} case ( enums.TaskType.OBJECT_DETECTION diff --git a/api/valor_api/backend/metrics/ranking.py b/api/valor_api/backend/metrics/ranking.py new file mode 100644 index 000000000..f76b2a52d --- /dev/null +++ b/api/valor_api/backend/metrics/ranking.py @@ -0,0 +1,153 @@ +# from typing import Sequence + +from sqlalchemy.orm import Session + +from valor_api import schemas + +# from valor_api import enums, schemas +from valor_api.backend import core, models +from valor_api.backend.metrics.metric_utils import ( # create_grouper_mappings, + create_metric_mappings, + get_or_create_row, + log_evaluation_duration, + log_evaluation_item_counts, + validate_computation, +) + +# TODO consolidate this? +LabelMapType = list[list[list[str]]] + + +def _compute_ranking_metrics( + db: Session, + prediction_filter: schemas.Filter, + groundtruth_filter: schemas.Filter, + label_map: LabelMapType | None = None, +) -> list: + """ + Compute classification metrics. + + Parameters + ---------- + db : Session + The database Session to query against. + prediction_filter : schemas.Filter + The filter to be used to query predictions. + groundtruth_filter : schemas.Filter + The filter to be used to query groundtruths. + compute_pr_curves: bool + A boolean which determines whether we calculate precision-recall curves or not. + label_map: LabelMapType, optional + Optional mapping of individual labels to a grouper label. Useful when you need to evaluate performance using labels that differ across datasets and models. + + Returns + ---------- + Tuple[List[schemas.ConfusionMatrix], List[schemas.ConfusionMatrix | schemas.AccuracyMetric | schemas.ROCAUCMetric| schemas.PrecisionMetric | schemas.RecallMetric | schemas.F1Metric]] + A tuple of confusion matrices and metrics. + #""" + + # labels = core.fetch_union_of_labels( + # db=db, + # rhs=prediction_filter, + # lhs=groundtruth_filter, + # ) + + # grouper_mappings = create_grouper_mappings( + # labels=labels, + # label_map=label_map, + # evaluation_type=enums.TaskType.CLASSIFICATION, + # ) + + return [] + # # compute metrics and confusion matrix for each grouper id + # confusion_matrices, metrics = [], [] + # for grouper_key in grouper_mappings[ + # "grouper_key_to_labels_mapping" + # ].keys(): + # cm_and_metrics = _compute_confusion_matrix_and_metrics_at_grouper_key( + # db=db, + # prediction_filter=prediction_filter, + # groundtruth_filter=groundtruth_filter, + # grouper_key=grouper_key, + # grouper_mappings=grouper_mappings, + # compute_pr_curves=compute_pr_curves, + # ) + # if cm_and_metrics is not None: + # confusion_matrices.append(cm_and_metrics[0]) + # metrics.extend(cm_and_metrics[1]) + + # return confusion_matrices, metrics + + +@validate_computation +def compute_ranking_metrics( + *, + db: Session, + evaluation_id: int, +) -> int: + """ + Create ranking metrics. This function is intended to be run using FastAPI's `BackgroundTasks`. + + Parameters + ---------- + db : Session + The database Session to query against. + evaluation_id : int + The job ID to create metrics for. + + Returns + ---------- + int + The evaluation job id. + """ + + # fetch evaluation + evaluation = core.fetch_evaluation_from_id(db, evaluation_id) + + # unpack filters and params + groundtruth_filter = schemas.Filter(**evaluation.datum_filter) + prediction_filter = groundtruth_filter.model_copy() + prediction_filter.model_names = [evaluation.model_name] + parameters = schemas.EvaluationParameters(**evaluation.parameters) + + # load task type into filters + groundtruth_filter.task_types = [parameters.task_type] + prediction_filter.task_types = [parameters.task_type] + + log_evaluation_item_counts( + db=db, + evaluation=evaluation, + prediction_filter=prediction_filter, + groundtruth_filter=groundtruth_filter, + ) + + metrics = _compute_ranking_metrics( + db=db, + prediction_filter=prediction_filter, + groundtruth_filter=groundtruth_filter, + label_map=parameters.label_map, + ) + + metric_mappings = create_metric_mappings( + db=db, + metrics=metrics, + evaluation_id=evaluation.id, + ) + + for mapping in metric_mappings: + # ignore value since the other columns are unique identifiers + # and have empirically noticed value can slightly change due to floating + # point errors + get_or_create_row( + db, + models.Metric, + mapping, + columns_to_ignore=["value"], + ) + + log_evaluation_duration( + evaluation=evaluation, + db=db, + ) + + return evaluation_id diff --git a/api/valor_api/schemas/evaluation.py b/api/valor_api/schemas/evaluation.py index 8de355ce9..c56176507 100644 --- a/api/valor_api/schemas/evaluation.py +++ b/api/valor_api/schemas/evaluation.py @@ -48,7 +48,7 @@ class EvaluationParameters(BaseModel): @model_validator(mode="after") @classmethod def _validate_by_task_type(cls, values): - """Validate the IOU thresholds.""" + """Run validations for specific task types.""" match values.task_type: case TaskType.CLASSIFICATION | TaskType.SEMANTIC_SEGMENTATION: @@ -79,6 +79,9 @@ def _validate_by_task_type(cls, values): raise ValueError( "`iou_thresholds_to_return` must be a subset of `iou_thresholds_to_compute`" ) + case TaskType.RANKING: + # TODO check that we don't need validations + pass case _: raise NotImplementedError( f"Task type `{values.task_type}` is unsupported." diff --git a/client/valor/coretypes.py b/client/valor/coretypes.py index e0801bf3a..4659d8cfd 100644 --- a/client/valor/coretypes.py +++ b/client/valor/coretypes.py @@ -1074,6 +1074,57 @@ def evaluate_segmentation( raise RuntimeError return evaluation[0] + def evaluate_ranking( + self, + datasets: Optional[Union[Dataset, List[Dataset]]] = None, + filter_by: Optional[FilterType] = None, + label_map: Optional[Dict[Label, Label]] = None, + allow_retries: bool = False, + ) -> Evaluation: + """ + Start a ranking evaluation job. + + Parameters + ---------- + datasets : Union[Dataset, List[Dataset]], optional + The dataset or list of datasets to evaluate against. + filter_by : FilterType, optional + Optional set of constraints to filter evaluation by. + label_map : Dict[Label, Label], optional + Optional mapping of individual labels to a grouper label. Useful when you need to evaluate performance using labels that differ across datasets and models. + allow_retries : bool, default = False + Option to retry previously failed evaluations. + + Returns + ------- + Evaluation + A job object that can be used to track the status of the job and get the metrics of it upon completion. + """ + if not datasets and not filter_by: + raise ValueError( + "Evaluation requires the definition of either datasets, dataset filters or both." + ) + + # format request + datum_filter = self._format_constraints(datasets, filter_by) + request = EvaluationRequest( + model_names=[self.get_name()], + datum_filter=datum_filter, + parameters=EvaluationParameters( + task_type=TaskType.RANKING, + label_map=self._create_label_map(label_map=label_map), + ), + meta={}, + ) + + # create evaluation + evaluation = Client(self.conn).evaluate( + request, allow_retries=allow_retries + ) + if len(evaluation) != 1: + raise RuntimeError + return evaluation[0] + def delete(self, timeout: int = 0): """ Delete the `Model` object from the back end. diff --git a/integration_tests/client/metrics/test_ranking.py b/integration_tests/client/metrics/test_ranking.py index 3cb152492..d4982c20c 100644 --- a/integration_tests/client/metrics/test_ranking.py +++ b/integration_tests/client/metrics/test_ranking.py @@ -194,10 +194,6 @@ def test_evaluate_correct_class_ranking( for gt in gt_correct_class_ranking: dataset.add_groundtruth(gt) - import pdb - - pdb.set_trace() - dataset.finalize() for pred in pd_correct_class_ranking: @@ -205,6 +201,16 @@ def test_evaluate_correct_class_ranking( model.finalize_inferences(dataset) + eval_job = model.evaluate_ranking(dataset) + + assert eval_job.id + + # assert eval_job.wait_for_completion(timeout=30) == EvaluationStatus.DONE + + # metrics = eval_job.metrics + + # assert metrics + # TODO check that the datum actually matters # TODO check that label key actually matters From efd627cc16ea753b9e4802e6439beba8955f3690 Mon Sep 17 00:00:00 2001 From: Nick Date: Thu, 25 Apr 2024 01:04:05 -0600 Subject: [PATCH 05/22] write MRR SQL statements --- .../backend/metrics/test_ranking.py | 10 +- api/tests/functional-tests/conftest.py | 74 ++++++-- api/valor_api/backend/metrics/metric_utils.py | 30 ++++ api/valor_api/backend/metrics/ranking.py | 165 +++++++++++++----- api/valor_api/schemas/__init__.py | 2 + api/valor_api/schemas/metrics.py | 36 ++++ .../client/metrics/test_ranking.py | 99 ++++++----- 7 files changed, 321 insertions(+), 95 deletions(-) diff --git a/api/tests/functional-tests/backend/metrics/test_ranking.py b/api/tests/functional-tests/backend/metrics/test_ranking.py index bbf9f2360..77797ab8f 100644 --- a/api/tests/functional-tests/backend/metrics/test_ranking.py +++ b/api/tests/functional-tests/backend/metrics/test_ranking.py @@ -45,11 +45,11 @@ def ranking_test_data( crud.create_prediction(db=db, prediction=pd) crud.finalize(db=db, dataset_name=dataset_name, model_name=model_name) - assert len(db.query(models.Datum).all()) == 1 - assert len(db.query(models.Annotation).all()) == 2 - assert len(db.query(models.Label).all()) == 2 - assert len(db.query(models.GroundTruth).all()) == 1 - assert len(db.query(models.Prediction).all()) == 1 + assert len(db.query(models.Datum).all()) == 2 + assert len(db.query(models.Annotation).all()) == 5 + assert len(db.query(models.Label).all()) == 3 + assert len(db.query(models.GroundTruth).all()) == 2 + assert len(db.query(models.Prediction).all()) == 3 def test_ranking( diff --git a/api/tests/functional-tests/conftest.py b/api/tests/functional-tests/conftest.py index cd70d95a2..caec9fcf0 100644 --- a/api/tests/functional-tests/conftest.py +++ b/api/tests/functional-tests/conftest.py @@ -951,7 +951,7 @@ def raster() -> schemas.Raster: @pytest.fixture def groundtruth_ranking( - dataset_name, img1: schemas.Datum + dataset_name, img1: schemas.Datum, img2: schemas.Datum ) -> list[schemas.GroundTruth]: return [ schemas.GroundTruth( @@ -961,23 +961,46 @@ def groundtruth_ranking( schemas.Annotation( task_type=enums.TaskType.RANKING, labels=[ - schemas.Label(key="k1", value="gt"), + schemas.Label( + key="k1", value="gt" + ), # TODO the value literally isn't used at all here ], ranking=[ - "best choice", - "2nd", - "3rd", - "4th", + "relevant_doc1", + "relevant_doc2", + "relevant_doc3", + "relevant_doc4", ], ) ], - ) + ), + schemas.GroundTruth( + dataset_name=dataset_name, + datum=img2, + annotations=[ + schemas.Annotation( + task_type=enums.TaskType.RANKING, + labels=[ + schemas.Label(key="k2", value="gt"), + ], + ranking=[ + "1", + "2", + "3", + "4", + ], + ) + ], + ), ] @pytest.fixture def prediction_ranking( - dataset_name: str, model_name: str, img1: schemas.Datum + dataset_name: str, + model_name: str, + img1: schemas.Datum, + img2: schemas.Datum, ) -> list[schemas.Prediction]: return [ schemas.Prediction( @@ -993,9 +1016,38 @@ def prediction_ranking( ranking=[ "bbq", "iguana", - "best choice", - ], # only "best choice" was actually relevant + "relevant_doc3", + ], ) ], - ) + ), + # the datum doesn't matter + schemas.Prediction( + dataset_name=dataset_name, + model_name=model_name, + datum=img2, + annotations=[ + schemas.Annotation( + task_type=enums.TaskType.RANKING, + labels=[ + schemas.Label(key="k1", value="gt2"), + ], + ranking=[ + "bbq", + "relevant_doc4", + "relevant_doc3", + ], + ), + schemas.Annotation( + task_type=enums.TaskType.RANKING, + labels=[ + schemas.Label(key="k1", value="gt2"), + ], + ranking=[ + "foo", + "bar", + ], + ), + ], + ), ] diff --git a/api/valor_api/backend/metrics/metric_utils.py b/api/valor_api/backend/metrics/metric_utils.py index d112b656a..e835577c5 100644 --- a/api/valor_api/backend/metrics/metric_utils.py +++ b/api/valor_api/backend/metrics/metric_utils.py @@ -70,6 +70,35 @@ def _create_segmentation_grouper_mappings( } +def _create_ranking_grouper_mappings( + mapping_dict: dict[tuple[str, ...], tuple[str, ...]], + labels: list[models.Label], +) -> dict[str, dict]: + """Create grouper mappings for use when evaluating rankings.""" + + # define mappers to connect groupers with labels + label_value_to_grouper_value = {} + label_key_to_grouper_key = {} + grouper_key_to_label_keys_mapping = defaultdict(set) + + for label in labels: + # the grouper should equal the (label.key, label.value) if it wasn't mapped by the user + grouper_key, grouper_value = mapping_dict.get( + (label.key, label.value), (label.key, label.value) + ) + + # TODO check if all of these are actually used + label_key_to_grouper_key[label.key] = grouper_key + label_value_to_grouper_value[label.value] = grouper_value + grouper_key_to_label_keys_mapping[grouper_key].add(label.key) + + return { + "label_value_to_grouper_value": label_value_to_grouper_value, + "label_key_to_grouper_key": label_key_to_grouper_key, + "grouper_key_to_label_keys_mapping": grouper_key_to_label_keys_mapping, + } + + def _create_classification_grouper_mappings( mapping_dict: dict[tuple[str, ...], tuple[str, ...]], labels: list[models.Label], @@ -126,6 +155,7 @@ def create_grouper_mappings( enums.TaskType.CLASSIFICATION: _create_classification_grouper_mappings, enums.TaskType.OBJECT_DETECTION: _create_detection_grouper_mappings, enums.TaskType.SEMANTIC_SEGMENTATION: _create_segmentation_grouper_mappings, + enums.TaskType.RANKING: _create_ranking_grouper_mappings, } if evaluation_type not in mapping_functions.keys(): raise KeyError( diff --git a/api/valor_api/backend/metrics/ranking.py b/api/valor_api/backend/metrics/ranking.py index f76b2a52d..39cbc647c 100644 --- a/api/valor_api/backend/metrics/ranking.py +++ b/api/valor_api/backend/metrics/ranking.py @@ -1,18 +1,17 @@ -# from typing import Sequence - from sqlalchemy.orm import Session +from sqlalchemy.sql import case, func, select -from valor_api import schemas - -# from valor_api import enums, schemas +from valor_api import enums, schemas from valor_api.backend import core, models -from valor_api.backend.metrics.metric_utils import ( # create_grouper_mappings, +from valor_api.backend.metrics.metric_utils import ( + create_grouper_mappings, create_metric_mappings, get_or_create_row, log_evaluation_duration, log_evaluation_item_counts, validate_computation, ) +from valor_api.backend.query import Query # TODO consolidate this? LabelMapType = list[list[list[str]]] @@ -44,39 +43,127 @@ def _compute_ranking_metrics( ---------- Tuple[List[schemas.ConfusionMatrix], List[schemas.ConfusionMatrix | schemas.AccuracyMetric | schemas.ROCAUCMetric| schemas.PrecisionMetric | schemas.RecallMetric | schemas.F1Metric]] A tuple of confusion matrices and metrics. - #""" - - # labels = core.fetch_union_of_labels( - # db=db, - # rhs=prediction_filter, - # lhs=groundtruth_filter, - # ) - - # grouper_mappings = create_grouper_mappings( - # labels=labels, - # label_map=label_map, - # evaluation_type=enums.TaskType.CLASSIFICATION, - # ) - - return [] - # # compute metrics and confusion matrix for each grouper id - # confusion_matrices, metrics = [], [] - # for grouper_key in grouper_mappings[ - # "grouper_key_to_labels_mapping" - # ].keys(): - # cm_and_metrics = _compute_confusion_matrix_and_metrics_at_grouper_key( - # db=db, - # prediction_filter=prediction_filter, - # groundtruth_filter=groundtruth_filter, - # grouper_key=grouper_key, - # grouper_mappings=grouper_mappings, - # compute_pr_curves=compute_pr_curves, - # ) - # if cm_and_metrics is not None: - # confusion_matrices.append(cm_and_metrics[0]) - # metrics.extend(cm_and_metrics[1]) - - # return confusion_matrices, metrics + """ + + metrics = [] + + labels = core.fetch_union_of_labels( + db=db, + rhs=prediction_filter, + lhs=groundtruth_filter, + ) + + grouper_mappings = create_grouper_mappings( + labels=labels, + label_map=label_map, + evaluation_type=enums.TaskType.RANKING, + ) + + metrics = [] + + groundtruths = ( + Query( + models.GroundTruth, + case( + grouper_mappings["label_key_to_grouper_key"], + value=models.Label.key, + ).label("grouper_key"), + models.Label.value.label("gt_value"), + models.Annotation.ranking.label("gt_ranking"), + ) + .filter(groundtruth_filter) + .groundtruths(as_subquery=False) + .alias() + ) + + predictions = ( + Query( + models.Prediction, + case( + grouper_mappings["label_key_to_grouper_key"], + value=models.Label.key, + ).label("grouper_key"), + models.Label.value.label("pd_value"), + models.Annotation.ranking.label("pd_ranking"), + ) + .filter(prediction_filter) + .predictions(as_subquery=False) + .alias() + ) + + # blah_rr = db.execute(predictions).all() + # import pdb + + # pdb.set_trace() + + joint = ( + select( + groundtruths.c.grouper_key, + groundtruths.c.gt_ranking, + predictions.c.pd_ranking, + ) + .select_from(groundtruths) + .join( + predictions, + groundtruths.c.grouper_key == predictions.c.grouper_key, + ) + ).alias() + + flattened_predictions = select( + joint.c.grouper_key, + func.jsonb_array_elements_text(joint.c.pd_ranking).label("pd_rank"), + ).select_from(joint) + + pd_rankings = select( + flattened_predictions.c.grouper_key, + flattened_predictions.c.pd_rank, + func.row_number() + .over(partition_by=flattened_predictions.c.grouper_key) + .label("row_number"), + ).alias() + + flattened_groundtruths = ( + select( + joint.c.grouper_key, + func.jsonb_array_elements_text(joint.c.gt_ranking).label( + "gt_rank" + ), + ) + .select_from(joint) + .alias() + ) + + reciprocal_rankings = ( + select( + flattened_groundtruths.c.grouper_key, + func.coalesce(func.min(pd_rankings.c.row_number), 0).label("rr"), + ) + .select_from(flattened_groundtruths) + .join( + pd_rankings, + pd_rankings.c.grouper_key == flattened_groundtruths.c.grouper_key, + ) + .group_by(flattened_groundtruths.c.grouper_key) + .alias() + ) + + mean_reciprocal_ranks = ( + select( + reciprocal_rankings.c.grouper_key, + func.avg(reciprocal_rankings.c.rr), + ) + .select_from(reciprocal_rankings) + .group_by(reciprocal_rankings.c.grouper_key) + ) + + mrrs_by_key = db.execute(mean_reciprocal_ranks).all() + + for grouper_key, mrr in mrrs_by_key: + metrics.append(schemas.MRRMetric(label_key=grouper_key, value=mrr)) + + # TODO unit tests for MRRMetrics schema + + return metrics @validate_computation diff --git a/api/valor_api/schemas/__init__.py b/api/valor_api/schemas/__init__.py index 28501a48c..dd21af161 100644 --- a/api/valor_api/schemas/__init__.py +++ b/api/valor_api/schemas/__init__.py @@ -36,6 +36,7 @@ F1Metric, IOUMetric, Metric, + MRRMetric, PrecisionMetric, PrecisionRecallCurve, RecallMetric, @@ -85,6 +86,7 @@ "PrecisionMetric", "RecallMetric", "ROCAUCMetric", + "MRRMetric", "PrecisionRecallCurve", "ConfusionMatrixResponse", "APMetric", diff --git a/api/valor_api/schemas/metrics.py b/api/valor_api/schemas/metrics.py index 472739b91..05094a197 100644 --- a/api/valor_api/schemas/metrics.py +++ b/api/valor_api/schemas/metrics.py @@ -521,6 +521,42 @@ class F1Metric(_PrecisionRecallF1Base): __type__ = "F1" +class MRRMetric(BaseModel): + """ + Describes a mean reciprical rank metric. + + Attributes + ---------- + label_key : str + A label key for the metric. + value : float + The metric value. + """ + + label_key: str + value: float | int | None + + def db_mapping(self, evaluation_id: int) -> dict: + """ + Creates a mapping for use when uploading the metric to the database. + + Parameters + ---------- + evaluation_id : int + The evaluation id. + + Returns + ---------- + A mapping dictionary. + """ + return { + "value": self.value, + "type": "MRRMetric", + "parameters": {"label_key": self.label_key}, + "evaluation_id": evaluation_id, + } + + class ROCAUCMetric(BaseModel): """ Describes an ROC AUC metric. diff --git a/integration_tests/client/metrics/test_ranking.py b/integration_tests/client/metrics/test_ranking.py index d4982c20c..456ec0da3 100644 --- a/integration_tests/client/metrics/test_ranking.py +++ b/integration_tests/client/metrics/test_ranking.py @@ -30,54 +30,53 @@ def gt_correct_class_ranking(): Label(key="k1", value="gt"), ], ranking=[ - "best choice", - "2nd", - "3rd", - "4th", + "relevant_doc1", + "relevant_doc2", + "relevant_doc3", + "relevant_doc4", + ], + ) + ], + ), + GroundTruth( + datum=Datum(uid="uid2", metadata={}), + annotations=[ + Annotation( + task_type=TaskType.RANKING, + labels=[ + Label(key="k2", value="gt"), + ], + ranking=[ + "1", + "2", + "3", + "4", ], ) ], ), - # GroundTruth( - # datum=Datum(uid="uid1", metadata={}), - # annotations=[ - # Annotation( - # task_type=TaskType.RANKING, - # labels=[ - # Label(key="k2", value="gt"), - # ], - # ranking=[ - # "a", - # "b", - # "c", - # "d", - # ], - # ) - # ], - # ), - # GroundTruth( - # datum=Datum(uid="uid2", metadata={}), - # annotations=[ - # Annotation( - # task_type=TaskType.RANKING, - # labels=[ - # Label(key="k1", value="gt"), - # ], - # ranking=[ - # "1", - # "2", - # "3", - # "4", - # ], - # ) - # ], - # ), ] @pytest.fixture def pd_correct_class_ranking(): return [ + Prediction( + datum=Datum(uid="uid1", metadata={}), + annotations=[ + Annotation( + task_type=TaskType.RANKING, + labels=[ + Label(key="k1", value="gt"), + ], + ranking=[ + "foo", + "bar", + "relevant_doc2", + ], + ) + ], + ), Prediction( datum=Datum(uid="uid1", metadata={}), annotations=[ @@ -89,8 +88,23 @@ def pd_correct_class_ranking(): ranking=[ "bbq", "iguana", - "best choice", - ], # only "best choice" was actually relevant + ], + ) + ], + ), + Prediction( + datum=Datum(uid="uid1", metadata={}), + annotations=[ + Annotation( + task_type=TaskType.RANKING, + labels=[ + Label(key="k1", value="gt"), + ], + ranking=[ + "foo", + "relevant_doc4", + "relevant_doc1", + ], ) ], ), @@ -215,6 +229,8 @@ def test_evaluate_correct_class_ranking( # TODO check that label key actually matters + # TODO what if a label value is shared across multiple keys? need to handle that somehow + def test_evaluate_relevancy_score_ranking(): pass @@ -226,3 +242,6 @@ def test_evaluate_embedding_ranking(): def test_evaluate_mixed_rankings(): pass + + +# TODO test that each key only has one groundtruth From ce5fe607b6f21d5de667ebe65f8c9ee3a9d66e38 Mon Sep 17 00:00:00 2001 From: Nick Date: Thu, 25 Apr 2024 14:18:24 -0600 Subject: [PATCH 06/22] pass MRR functional tests --- .../backend/metrics/test_ranking.py | 30 +- api/tests/functional-tests/conftest.py | 71 ++- .../crud/test_create_delete.py | 28 +- api/tests/unit-tests/schemas/test_metrics.py | 20 + api/valor_api/backend/metrics/metric_utils.py | 9 +- api/valor_api/backend/metrics/ranking.py | 119 +++-- .../client/metrics/test_ranking.py | 494 +++++++++--------- 7 files changed, 436 insertions(+), 335 deletions(-) diff --git a/api/tests/functional-tests/backend/metrics/test_ranking.py b/api/tests/functional-tests/backend/metrics/test_ranking.py index 77797ab8f..624606dd9 100644 --- a/api/tests/functional-tests/backend/metrics/test_ranking.py +++ b/api/tests/functional-tests/backend/metrics/test_ranking.py @@ -46,10 +46,10 @@ def ranking_test_data( crud.finalize(db=db, dataset_name=dataset_name, model_name=model_name) assert len(db.query(models.Datum).all()) == 2 - assert len(db.query(models.Annotation).all()) == 5 - assert len(db.query(models.Label).all()) == 3 + assert len(db.query(models.Annotation).all()) == 10 + assert len(db.query(models.Label).all()) == 8 assert len(db.query(models.GroundTruth).all()) == 2 - assert len(db.query(models.Prediction).all()) == 3 + assert len(db.query(models.Prediction).all()) == 7 def test_ranking( @@ -87,12 +87,20 @@ def test_ranking( enums.EvaluationStatus.DONE, } - metrics = evaluations[0].metrics + assert evaluations[0].metrics is not None - assert metrics - for metric in metrics: - if isinstance(metric, schemas.ROCAUCMetric): - if metric.label_key == "animal": - assert metric.value == 0.8009259259259259 - elif metric.label_key == "color": - assert metric.value == 0.43125 + metrics = {} + for metric in evaluations[0].metrics: + assert metric.parameters # handles type error + metrics[metric.parameters["label_key"]] = metric.value + + expected_metrics = { + "k1": 0.4, # (1 + .33 + .166 + .5 + 0) / 5 + "k2": 0, # no predictions for this key + } + + for key, value in metrics.items(): + assert expected_metrics[key] == value + + for key, value in expected_metrics.items(): + assert metrics[key] == value diff --git a/api/tests/functional-tests/conftest.py b/api/tests/functional-tests/conftest.py index caec9fcf0..baff48a40 100644 --- a/api/tests/functional-tests/conftest.py +++ b/api/tests/functional-tests/conftest.py @@ -1011,31 +1011,53 @@ def prediction_ranking( schemas.Annotation( task_type=enums.TaskType.RANKING, labels=[ - schemas.Label(key="k1", value="gt2"), + schemas.Label(key="k1", value="doesn't matter"), ], ranking=[ - "bbq", - "iguana", + "relevant_doc2", + "foo", "relevant_doc3", ], - ) - ], - ), - # the datum doesn't matter - schemas.Prediction( - dataset_name=dataset_name, - model_name=model_name, - datum=img2, - annotations=[ + ), schemas.Annotation( task_type=enums.TaskType.RANKING, labels=[ - schemas.Label(key="k1", value="gt2"), + schemas.Label(key="k1", value="doesn't matter"), ], ranking=[ - "bbq", + "foo", + "bar", + "relevant_doc4", + "relevant_doc3", + ], + ), + schemas.Annotation( + task_type=enums.TaskType.RANKING, + labels=[ + schemas.Label(key="k1", value="v1"), + ], + ranking=[ + "foo", + "bar", + "char", + "far", + "tar", + "relevant_doc1", + "relevant_doc3", "relevant_doc4", + "relevant_doc2", + ], + ), + schemas.Annotation( + task_type=enums.TaskType.RANKING, + labels=[ + schemas.Label(key="k1", value=""), + ], + ranking=[ + "foo", "relevant_doc3", + "relevant_doc4", + "relevant_doc2", ], ), schemas.Annotation( @@ -1048,6 +1070,27 @@ def prediction_ranking( "bar", ], ), + schemas.Annotation( + task_type=enums.TaskType.RANKING, + labels=[ + schemas.Label(key="k2", value="gt2"), + ], + ranking=[ + "foo", + "bar", + ], + ), + # this key isn't associated with any groundtruths, so it should be discarded + schemas.Annotation( + task_type=enums.TaskType.RANKING, + labels=[ + schemas.Label(key="k3", value="gt2"), + ], + ranking=[ + "foo", + "bar", + ], + ), ], ), ] diff --git a/api/tests/functional-tests/crud/test_create_delete.py b/api/tests/functional-tests/crud/test_create_delete.py index ee5d868f6..9796c4081 100644 --- a/api/tests/functional-tests/crud/test_create_delete.py +++ b/api/tests/functional-tests/crud/test_create_delete.py @@ -1490,10 +1490,10 @@ def test_create_ranking_ground_truth_and_delete_dataset( for gt in groundtruth_ranking: crud.create_groundtruth(db=db, groundtruth=gt) - assert db.scalar(func.count(models.Annotation.id)) == 1 - assert db.scalar(func.count(models.Datum.id)) == 1 - assert db.scalar(func.count(models.GroundTruth.id)) == 1 - assert db.scalar(func.count(models.Label.id)) == 1 + assert db.scalar(func.count(models.Annotation.id)) == 2 + assert db.scalar(func.count(models.Datum.id)) == 2 + assert db.scalar(func.count(models.GroundTruth.id)) == 2 + assert db.scalar(func.count(models.Label.id)) == 2 # verify we get the same dets back for gt in groundtruth_ranking: @@ -1523,7 +1523,7 @@ def test_create_ranking_ground_truth_and_delete_dataset( assert db.scalar(func.count(model_cls.id)) == 0 # make sure labels are still there` - assert db.scalar(func.count(models.Label.id)) == 1 + assert db.scalar(func.count(models.Label.id)) == 2 def test_create_ranking_prediction_and_delete_model( @@ -1566,19 +1566,19 @@ def test_create_ranking_prediction_and_delete_model( crud.create_prediction(db=db, prediction=pd) # check db has the added predictions - assert db.scalar(func.count(models.Annotation.id)) == 2 - assert db.scalar(func.count(models.Datum.id)) == 1 - assert db.scalar(func.count(models.GroundTruth.id)) == 1 - assert db.scalar(func.count(models.Prediction.id)) == 1 - assert db.scalar(func.count(models.Label.id)) == 2 + assert db.scalar(func.count(models.Annotation.id)) == 9 + assert db.scalar(func.count(models.Datum.id)) == 2 + assert db.scalar(func.count(models.GroundTruth.id)) == 2 + assert db.scalar(func.count(models.Prediction.id)) == 7 + assert db.scalar(func.count(models.Label.id)) == 8 # finalize crud.finalize(db=db, dataset_name=dataset_name, model_name=model_name) # delete model and check all rankings from it are gone crud.delete(db=db, model_name=model_name) - assert db.scalar(func.count(models.Annotation.id)) == 1 - assert db.scalar(func.count(models.Datum.id)) == 1 - assert db.scalar(func.count(models.GroundTruth.id)) == 1 + assert db.scalar(func.count(models.Annotation.id)) == 2 + assert db.scalar(func.count(models.Datum.id)) == 2 + assert db.scalar(func.count(models.GroundTruth.id)) == 2 assert db.scalar(func.count(models.Prediction.id)) == 0 - assert db.scalar(func.count(models.Label.id)) == 2 + assert db.scalar(func.count(models.Label.id)) == 8 diff --git a/api/tests/unit-tests/schemas/test_metrics.py b/api/tests/unit-tests/schemas/test_metrics.py index 7e8d9b941..6df4cfb90 100644 --- a/api/tests/unit-tests/schemas/test_metrics.py +++ b/api/tests/unit-tests/schemas/test_metrics.py @@ -328,6 +328,26 @@ def test_ROCAUCMetric(): ) +def test_MRRMetric(): + mrr_metric = schemas.MRRMetric(label_key="key", value=0.2) + + with pytest.raises(ValidationError): + schemas.MRRMetric(label_key=None, value=0.2) # type: ignore - purposefully throwing error + + with pytest.raises(ValidationError): + schemas.MRRMetric(label_key=123, value=0.2) # type: ignore - purposefully throwing error + + with pytest.raises(ValidationError): + schemas.MRRMetric(label_key="key", value="not a number") # type: ignore - purposefully throwing error + + assert all( + [ + key in ["value", "type", "evaluation_id", "parameters"] + for key in mrr_metric.db_mapping(evaluation_id=1) + ] + ) + + def test_IOUMetric(): iou_metric = schemas.IOUMetric( label=schemas.Label(key="key", value="value"), value=0.2 diff --git a/api/valor_api/backend/metrics/metric_utils.py b/api/valor_api/backend/metrics/metric_utils.py index e835577c5..41d42c8de 100644 --- a/api/valor_api/backend/metrics/metric_utils.py +++ b/api/valor_api/backend/metrics/metric_utils.py @@ -77,25 +77,18 @@ def _create_ranking_grouper_mappings( """Create grouper mappings for use when evaluating rankings.""" # define mappers to connect groupers with labels - label_value_to_grouper_value = {} label_key_to_grouper_key = {} - grouper_key_to_label_keys_mapping = defaultdict(set) for label in labels: # the grouper should equal the (label.key, label.value) if it wasn't mapped by the user - grouper_key, grouper_value = mapping_dict.get( + grouper_key, _ = mapping_dict.get( (label.key, label.value), (label.key, label.value) ) - # TODO check if all of these are actually used label_key_to_grouper_key[label.key] = grouper_key - label_value_to_grouper_value[label.value] = grouper_value - grouper_key_to_label_keys_mapping[grouper_key].add(label.key) return { - "label_value_to_grouper_value": label_value_to_grouper_value, "label_key_to_grouper_key": label_key_to_grouper_key, - "grouper_key_to_label_keys_mapping": grouper_key_to_label_keys_mapping, } diff --git a/api/valor_api/backend/metrics/ranking.py b/api/valor_api/backend/metrics/ranking.py index 39cbc647c..1d285768a 100644 --- a/api/valor_api/backend/metrics/ranking.py +++ b/api/valor_api/backend/metrics/ranking.py @@ -1,5 +1,5 @@ from sqlalchemy.orm import Session -from sqlalchemy.sql import case, func, select +from sqlalchemy.sql import and_, case, func, literal, select from valor_api import enums, schemas from valor_api.backend import core, models @@ -68,8 +68,9 @@ def _compute_ranking_metrics( grouper_mappings["label_key_to_grouper_key"], value=models.Label.key, ).label("grouper_key"), - models.Label.value.label("gt_value"), models.Annotation.ranking.label("gt_ranking"), + models.Annotation.datum_id, + models.Annotation.id.label("gt_annotation_id"), ) .filter(groundtruth_filter) .groundtruths(as_subquery=False) @@ -83,86 +84,122 @@ def _compute_ranking_metrics( grouper_mappings["label_key_to_grouper_key"], value=models.Label.key, ).label("grouper_key"), - models.Label.value.label("pd_value"), models.Annotation.ranking.label("pd_ranking"), + models.Annotation.datum_id, + models.Annotation.id.label("pd_annotation_id"), ) .filter(prediction_filter) .predictions(as_subquery=False) .alias() ) - # blah_rr = db.execute(predictions).all() - # import pdb - - # pdb.set_trace() - joint = ( select( groundtruths.c.grouper_key, groundtruths.c.gt_ranking, + groundtruths.c.gt_annotation_id, predictions.c.pd_ranking, + predictions.c.pd_annotation_id, ) .select_from(groundtruths) .join( predictions, - groundtruths.c.grouper_key == predictions.c.grouper_key, + and_( + groundtruths.c.grouper_key == predictions.c.grouper_key, + groundtruths.c.datum_id == predictions.c.datum_id, + ), + isouter=True, # left join to include ground truths without predictions ) - ).alias() + ) flattened_predictions = select( joint.c.grouper_key, - func.jsonb_array_elements_text(joint.c.pd_ranking).label("pd_rank"), - ).select_from(joint) + joint.c.pd_annotation_id, + func.jsonb_array_elements_text(joint.c.pd_ranking).label("pd_item"), + ) + + flattened_groundtruths = select( + joint.c.grouper_key, + func.jsonb_array_elements_text(joint.c.gt_ranking).label("gt_item"), + ).alias() pd_rankings = select( flattened_predictions.c.grouper_key, - flattened_predictions.c.pd_rank, + flattened_predictions.c.pd_annotation_id, + flattened_predictions.c.pd_item, func.row_number() - .over(partition_by=flattened_predictions.c.grouper_key) - .label("row_number"), + .over( + partition_by=and_( + flattened_predictions.c.pd_annotation_id, + flattened_predictions.c.grouper_key, + ) + ) + .label("rank"), ).alias() - flattened_groundtruths = ( + # filter pd_rankings to only include relevant docs, then find the reciprical rank + reciprocal_rankings = ( select( - joint.c.grouper_key, - func.jsonb_array_elements_text(joint.c.gt_ranking).label( - "gt_rank" + pd_rankings.c.grouper_key, + pd_rankings.c.pd_annotation_id.label("annotation_id"), + 1 / func.min(pd_rankings.c.rank).label("recip_rank"), + ) + .distinct() + .select_from(pd_rankings) + .join( + flattened_groundtruths, + and_( + flattened_groundtruths.c.grouper_key + == pd_rankings.c.grouper_key, + flattened_groundtruths.c.gt_item == pd_rankings.c.pd_item, ), ) - .select_from(joint) - .alias() + .group_by( + pd_rankings.c.grouper_key, + pd_rankings.c.pd_annotation_id, + ) ) - reciprocal_rankings = ( + # needed to avoid a type error when joining + aliased_rr = reciprocal_rankings.alias() + + # add back any predictions that didn't contain any relevant elements + gts_with_no_predictions = select( + joint.c.grouper_key, + joint.c.gt_annotation_id.label("annotation_id"), + literal(0).label("recip_rank"), + ).where(joint.c.pd_annotation_id.is_(None)) + + rrs_with_missing_entries = ( select( - flattened_groundtruths.c.grouper_key, - func.coalesce(func.min(pd_rankings.c.row_number), 0).label("rr"), + pd_rankings.c.grouper_key, + pd_rankings.c.pd_annotation_id.label("annotation_id"), + literal(0).label("recip_rank"), ) - .select_from(flattened_groundtruths) + .distinct() + .select_from(pd_rankings) .join( - pd_rankings, - pd_rankings.c.grouper_key == flattened_groundtruths.c.grouper_key, + aliased_rr, + and_( + pd_rankings.c.grouper_key == aliased_rr.c.grouper_key, + pd_rankings.c.pd_annotation_id == aliased_rr.c.annotation_id, + ), + isouter=True, ) - .group_by(flattened_groundtruths.c.grouper_key) - .alias() - ) + .where(aliased_rr.c.annotation_id.is_(None)) + ).union_all(reciprocal_rankings, gts_with_no_predictions) - mean_reciprocal_ranks = ( + # take the mean across grouper keys to arrive at the MRR per key + mrrs_by_key = db.execute( select( - reciprocal_rankings.c.grouper_key, - func.avg(reciprocal_rankings.c.rr), - ) - .select_from(reciprocal_rankings) - .group_by(reciprocal_rankings.c.grouper_key) - ) - - mrrs_by_key = db.execute(mean_reciprocal_ranks).all() + rrs_with_missing_entries.c.grouper_key, + func.avg(rrs_with_missing_entries.c.recip_rank).label("mrr"), + ).group_by(rrs_with_missing_entries.c.grouper_key) + ).all() for grouper_key, mrr in mrrs_by_key: metrics.append(schemas.MRRMetric(label_key=grouper_key, value=mrr)) - # TODO unit tests for MRRMetrics schema - return metrics diff --git a/integration_tests/client/metrics/test_ranking.py b/integration_tests/client/metrics/test_ranking.py index 456ec0da3..9b3f0b761 100644 --- a/integration_tests/client/metrics/test_ranking.py +++ b/integration_tests/client/metrics/test_ranking.py @@ -1,247 +1,247 @@ -""" These integration tests should be run with a back end at http://localhost:8000 -that is no auth -""" - -import pytest - -from valor import ( - Annotation, - Client, - Dataset, - Datum, - GroundTruth, - Label, - Model, - Prediction, -) -from valor.enums import TaskType - - -@pytest.fixture -def gt_correct_class_ranking(): - # input option #1: a list of strings denoting all of the potential options. when users pass in a list of strings, they won't be able to get back NDCG - return [ - GroundTruth( - datum=Datum(uid="uid1", metadata={}), - annotations=[ - Annotation( - task_type=TaskType.RANKING, - labels=[ - Label(key="k1", value="gt"), - ], - ranking=[ - "relevant_doc1", - "relevant_doc2", - "relevant_doc3", - "relevant_doc4", - ], - ) - ], - ), - GroundTruth( - datum=Datum(uid="uid2", metadata={}), - annotations=[ - Annotation( - task_type=TaskType.RANKING, - labels=[ - Label(key="k2", value="gt"), - ], - ranking=[ - "1", - "2", - "3", - "4", - ], - ) - ], - ), - ] - - -@pytest.fixture -def pd_correct_class_ranking(): - return [ - Prediction( - datum=Datum(uid="uid1", metadata={}), - annotations=[ - Annotation( - task_type=TaskType.RANKING, - labels=[ - Label(key="k1", value="gt"), - ], - ranking=[ - "foo", - "bar", - "relevant_doc2", - ], - ) - ], - ), - Prediction( - datum=Datum(uid="uid1", metadata={}), - annotations=[ - Annotation( - task_type=TaskType.RANKING, - labels=[ - Label(key="k1", value="gt"), - ], - ranking=[ - "bbq", - "iguana", - ], - ) - ], - ), - Prediction( - datum=Datum(uid="uid1", metadata={}), - annotations=[ - Annotation( - task_type=TaskType.RANKING, - labels=[ - Label(key="k1", value="gt"), - ], - ranking=[ - "foo", - "relevant_doc4", - "relevant_doc1", - ], - ) - ], - ), - # Prediction( - # datum=Datum(uid="uid1", metadata={}), - # annotations=[ - # Annotation( - # task_type=TaskType.RANKING, - # labels=[ - # Label(key="k1", value="gt"), - # ], - # ranking=[ - # 0.4, - # 0.3, - # 0.2, - # ], # error case: length of this prediction doesn't match ground truth we're comparing against - # ) - # ], - # ), - # Prediction( - # datum=Datum(uid="uid1", metadata={}), - # annotations=[ - # Annotation( - # task_type=TaskType.RANKING, - # labels=[ - # Label(key="k1", value="gt"), - # ], - # ranking=[ - # 0.4, - # 0.3, - # 0.2, - # 0.2, - # ], # error case: weights sum to greater than one - # ) - # ], - # ), - # Prediction( - # datum=Datum(uid="uid1", metadata={}), - # annotations=[ - # Annotation( - # task_type=TaskType.RANKING, - # labels=[ - # Label(key="k1", value="gt"), - # ], - # ranking=[ - # 0.4, - # 0.3, - # 0.2, - # 0.1, - # ], # ranking by relevance scores - # ) - # ], - # ), - # Prediction( - # datum=Datum(uid="uid1", metadata={}), - # annotations=[ - # Annotation( - # task_type=TaskType.RANKING, - # labels=[ - # Label(key="k2", value="gt"), - # ], - # ranking=[ - # "a", - # "b", - # "c", - # "d", - # ], # perfect ranking - # ) - # ], - # ), - # Prediction( - # datum=Datum(uid="uid2", metadata={}), - # annotations=[ - # Annotation( - # task_type=TaskType.RANKING, - # labels=[ - # Label(key="k1", value="gt"), - # ], - # ranking=[ - # "3", - # "2", - # "1", - # "4", - # ], - # ) - # ], - # ), - ] - - -def test_evaluate_correct_class_ranking( - client: Client, - dataset_name: str, - model_name: str, - gt_correct_class_ranking: list, - pd_correct_class_ranking: list, -): - dataset = Dataset.create(dataset_name) - model = Model.create(model_name) - - for gt in gt_correct_class_ranking: - dataset.add_groundtruth(gt) - - dataset.finalize() - - for pred in pd_correct_class_ranking: - model.add_prediction(dataset, pred) - - model.finalize_inferences(dataset) - - eval_job = model.evaluate_ranking(dataset) - - assert eval_job.id - - # assert eval_job.wait_for_completion(timeout=30) == EvaluationStatus.DONE - - # metrics = eval_job.metrics - - # assert metrics - - # TODO check that the datum actually matters - - # TODO check that label key actually matters - - # TODO what if a label value is shared across multiple keys? need to handle that somehow - - -def test_evaluate_relevancy_score_ranking(): - pass - - -def test_evaluate_embedding_ranking(): - pass - - -def test_evaluate_mixed_rankings(): - pass - - -# TODO test that each key only has one groundtruth +# """ These integration tests should be run with a back end at http://localhost:8000 +# that is no auth +# """ + +# import pytest + +# from valor import ( +# Annotation, +# Client, +# Dataset, +# Datum, +# GroundTruth, +# Label, +# Model, +# Prediction, +# ) +# from valor.enums import TaskType + + +# @pytest.fixture +# def gt_correct_class_ranking(): +# # input option #1: a list of strings denoting all of the potential options. when users pass in a list of strings, they won't be able to get back NDCG +# return [ +# GroundTruth( +# datum=Datum(uid="uid1", metadata={}), +# annotations=[ +# Annotation( +# task_type=TaskType.RANKING, +# labels=[ +# Label(key="k1", value="gt"), +# ], +# ranking=[ +# "relevant_doc1", +# "relevant_doc2", +# "relevant_doc3", +# "relevant_doc4", +# ], +# ) +# ], +# ), +# GroundTruth( +# datum=Datum(uid="uid2", metadata={}), +# annotations=[ +# Annotation( +# task_type=TaskType.RANKING, +# labels=[ +# Label(key="k2", value="gt"), +# ], +# ranking=[ +# "1", +# "2", +# "3", +# "4", +# ], +# ) +# ], +# ), +# ] + + +# @pytest.fixture +# def pd_correct_class_ranking(): +# return [ +# Prediction( +# datum=Datum(uid="uid1", metadata={}), +# annotations=[ +# Annotation( +# task_type=TaskType.RANKING, +# labels=[ +# Label(key="k1", value="gt"), +# ], +# ranking=[ +# "foo", +# "bar", +# "relevant_doc2", +# ], +# ) +# ], +# ), +# Prediction( +# datum=Datum(uid="uid1", metadata={}), +# annotations=[ +# Annotation( +# task_type=TaskType.RANKING, +# labels=[ +# Label(key="k1", value="gt"), +# ], +# ranking=[ +# "bbq", +# "iguana", +# ], +# ) +# ], +# ), +# Prediction( +# datum=Datum(uid="uid1", metadata={}), +# annotations=[ +# Annotation( +# task_type=TaskType.RANKING, +# labels=[ +# Label(key="k1", value="gt"), +# ], +# ranking=[ +# "foo", +# "relevant_doc4", +# "relevant_doc1", +# ], +# ) +# ], +# ), +# # Prediction( +# # datum=Datum(uid="uid1", metadata={}), +# # annotations=[ +# # Annotation( +# # task_type=TaskType.RANKING, +# # labels=[ +# # Label(key="k1", value="gt"), +# # ], +# # ranking=[ +# # 0.4, +# # 0.3, +# # 0.2, +# # ], # error case: length of this prediction doesn't match ground truth we're comparing against +# # ) +# # ], +# # ), +# # Prediction( +# # datum=Datum(uid="uid1", metadata={}), +# # annotations=[ +# # Annotation( +# # task_type=TaskType.RANKING, +# # labels=[ +# # Label(key="k1", value="gt"), +# # ], +# # ranking=[ +# # 0.4, +# # 0.3, +# # 0.2, +# # 0.2, +# # ], # error case: weights sum to greater than one +# # ) +# # ], +# # ), +# # Prediction( +# # datum=Datum(uid="uid1", metadata={}), +# # annotations=[ +# # Annotation( +# # task_type=TaskType.RANKING, +# # labels=[ +# # Label(key="k1", value="gt"), +# # ], +# # ranking=[ +# # 0.4, +# # 0.3, +# # 0.2, +# # 0.1, +# # ], # ranking by relevance scores +# # ) +# # ], +# # ), +# # Prediction( +# # datum=Datum(uid="uid1", metadata={}), +# # annotations=[ +# # Annotation( +# # task_type=TaskType.RANKING, +# # labels=[ +# # Label(key="k2", value="gt"), +# # ], +# # ranking=[ +# # "a", +# # "b", +# # "c", +# # "d", +# # ], # perfect ranking +# # ) +# # ], +# # ), +# # Prediction( +# # datum=Datum(uid="uid2", metadata={}), +# # annotations=[ +# # Annotation( +# # task_type=TaskType.RANKING, +# # labels=[ +# # Label(key="k1", value="gt"), +# # ], +# # ranking=[ +# # "3", +# # "2", +# # "1", +# # "4", +# # ], +# # ) +# # ], +# # ), +# ] + + +# def test_evaluate_correct_class_ranking( +# client: Client, +# dataset_name: str, +# model_name: str, +# gt_correct_class_ranking: list, +# pd_correct_class_ranking: list, +# ): +# dataset = Dataset.create(dataset_name) +# model = Model.create(model_name) + +# for gt in gt_correct_class_ranking: +# dataset.add_groundtruth(gt) + +# dataset.finalize() + +# for pred in pd_correct_class_ranking: +# model.add_prediction(dataset, pred) + +# model.finalize_inferences(dataset) + +# eval_job = model.evaluate_ranking(dataset) + +# assert eval_job.id + +# # assert eval_job.wait_for_completion(timeout=30) == EvaluationStatus.DONE + +# # metrics = eval_job.metrics + +# # assert metrics + +# # TODO check that the datum actually matters + +# # TODO check that label key actually matters + +# # TODO what if a label value is shared across multiple keys? need to handle that somehow + + +# def test_evaluate_relevancy_score_ranking(): +# pass + + +# def test_evaluate_embedding_ranking(): +# pass + + +# def test_evaluate_mixed_rankings(): +# pass + + +# # TODO test that each key only has one groundtruth From f5f69259ec2216b2b1dc343d51a2ce9f7ed872b8 Mon Sep 17 00:00:00 2001 From: Nick Date: Thu, 25 Apr 2024 16:46:13 -0600 Subject: [PATCH 07/22] add label_maps for MRR --- .../backend/metrics/test_ranking.py | 70 +++++++++++++++---- api/tests/functional-tests/conftest.py | 26 +++---- .../crud/test_create_delete.py | 8 +-- api/valor_api/backend/metrics/metric_utils.py | 6 +- api/valor_api/backend/metrics/ranking.py | 48 ++++++------- 5 files changed, 97 insertions(+), 61 deletions(-) diff --git a/api/tests/functional-tests/backend/metrics/test_ranking.py b/api/tests/functional-tests/backend/metrics/test_ranking.py index 624606dd9..3d40c1704 100644 --- a/api/tests/functional-tests/backend/metrics/test_ranking.py +++ b/api/tests/functional-tests/backend/metrics/test_ranking.py @@ -6,14 +6,6 @@ from valor_api.backend.core import create_or_get_evaluations from valor_api.backend.metrics.ranking import compute_ranking_metrics -# TODO -# @pytest.fixture -# def label_map(): -# return [ -# [["animal", "dog"], ["class", "mammal"]], -# [["animal", "cat"], ["class", "mammal"]], -# ] - @pytest.fixture def ranking_test_data( @@ -46,10 +38,10 @@ def ranking_test_data( crud.finalize(db=db, dataset_name=dataset_name, model_name=model_name) assert len(db.query(models.Datum).all()) == 2 - assert len(db.query(models.Annotation).all()) == 10 - assert len(db.query(models.Label).all()) == 8 + assert len(db.query(models.Annotation).all()) == 9 + assert len(db.query(models.Label).all()) == 4 assert len(db.query(models.GroundTruth).all()) == 2 - assert len(db.query(models.Prediction).all()) == 7 + assert len(db.query(models.Prediction).all()) == 6 def test_ranking( @@ -95,7 +87,7 @@ def test_ranking( metrics[metric.parameters["label_key"]] = metric.value expected_metrics = { - "k1": 0.4, # (1 + .33 + .166 + .5 + 0) / 5 + "k1": 0.5, # (1 + .33 + .166 + .5) / 4 "k2": 0, # no predictions for this key } @@ -104,3 +96,57 @@ def test_ranking( for key, value in expected_metrics.items(): assert metrics[key] == value + + +def test_ranking_with_label_map( + db: Session, + dataset_name: str, + model_name: str, + ranking_test_data, +): + # test label map + label_map = [[["k2", "v2"], ["k1", "v1"]]] + + # default request + job_request = schemas.EvaluationRequest( + model_names=[model_name], + datum_filter=schemas.Filter(dataset_names=[dataset_name]), + parameters=schemas.EvaluationParameters( + task_type=enums.TaskType.RANKING, label_map=label_map + ), + meta={}, + ) + + # creates evaluation job + evaluations = create_or_get_evaluations(db=db, job_request=job_request) + assert len(evaluations) == 1 + assert evaluations[0].status == enums.EvaluationStatus.PENDING + + # computation, normally run as background task + _ = compute_ranking_metrics(db=db, evaluation_id=evaluations[0].id) + + # get evaluations + evaluations = create_or_get_evaluations(db=db, job_request=job_request) + assert len(evaluations) == 1 + assert evaluations[0].status in { + enums.EvaluationStatus.RUNNING, + enums.EvaluationStatus.DONE, + } + + assert evaluations[0].metrics is not None + + metrics = {} + for metric in evaluations[0].metrics: + assert metric.parameters # handles type error + metrics[metric.parameters["label_key"]] = metric.value + + expected_metrics = { + "k1": 0.4, # (1 + .33 + .166 + .5 + 0) / 5, + "k2": 0, # still no predictions for this key + } + + for key, value in metrics.items(): + assert expected_metrics[key] == value + + for key, value in expected_metrics.items(): + assert metrics[key] == value diff --git a/api/tests/functional-tests/conftest.py b/api/tests/functional-tests/conftest.py index baff48a40..37f197107 100644 --- a/api/tests/functional-tests/conftest.py +++ b/api/tests/functional-tests/conftest.py @@ -962,7 +962,7 @@ def groundtruth_ranking( task_type=enums.TaskType.RANKING, labels=[ schemas.Label( - key="k1", value="gt" + key="k1", value="v1" ), # TODO the value literally isn't used at all here ], ranking=[ @@ -981,7 +981,7 @@ def groundtruth_ranking( schemas.Annotation( task_type=enums.TaskType.RANKING, labels=[ - schemas.Label(key="k2", value="gt"), + schemas.Label(key="k2", value="gt2"), ], ranking=[ "1", @@ -1011,7 +1011,7 @@ def prediction_ranking( schemas.Annotation( task_type=enums.TaskType.RANKING, labels=[ - schemas.Label(key="k1", value="doesn't matter"), + schemas.Label(key="k1", value="v1"), ], ranking=[ "relevant_doc2", @@ -1022,7 +1022,7 @@ def prediction_ranking( schemas.Annotation( task_type=enums.TaskType.RANKING, labels=[ - schemas.Label(key="k1", value="doesn't matter"), + schemas.Label(key="k1", value="v1"), ], ranking=[ "foo", @@ -1051,7 +1051,7 @@ def prediction_ranking( schemas.Annotation( task_type=enums.TaskType.RANKING, labels=[ - schemas.Label(key="k1", value=""), + schemas.Label(key="k1", value="v1"), ], ranking=[ "foo", @@ -1063,17 +1063,7 @@ def prediction_ranking( schemas.Annotation( task_type=enums.TaskType.RANKING, labels=[ - schemas.Label(key="k1", value="gt2"), - ], - ranking=[ - "foo", - "bar", - ], - ), - schemas.Annotation( - task_type=enums.TaskType.RANKING, - labels=[ - schemas.Label(key="k2", value="gt2"), + schemas.Label(key="k2", value="v2"), ], ranking=[ "foo", @@ -1084,11 +1074,11 @@ def prediction_ranking( schemas.Annotation( task_type=enums.TaskType.RANKING, labels=[ - schemas.Label(key="k3", value="gt2"), + schemas.Label(key="k3", value="v3"), ], ranking=[ "foo", - "bar", + "1", ], ), ], diff --git a/api/tests/functional-tests/crud/test_create_delete.py b/api/tests/functional-tests/crud/test_create_delete.py index 9796c4081..1b6706feb 100644 --- a/api/tests/functional-tests/crud/test_create_delete.py +++ b/api/tests/functional-tests/crud/test_create_delete.py @@ -1566,11 +1566,11 @@ def test_create_ranking_prediction_and_delete_model( crud.create_prediction(db=db, prediction=pd) # check db has the added predictions - assert db.scalar(func.count(models.Annotation.id)) == 9 + assert db.scalar(func.count(models.Annotation.id)) == 8 assert db.scalar(func.count(models.Datum.id)) == 2 assert db.scalar(func.count(models.GroundTruth.id)) == 2 - assert db.scalar(func.count(models.Prediction.id)) == 7 - assert db.scalar(func.count(models.Label.id)) == 8 + assert db.scalar(func.count(models.Prediction.id)) == 6 + assert db.scalar(func.count(models.Label.id)) == 4 # finalize crud.finalize(db=db, dataset_name=dataset_name, model_name=model_name) @@ -1581,4 +1581,4 @@ def test_create_ranking_prediction_and_delete_model( assert db.scalar(func.count(models.Datum.id)) == 2 assert db.scalar(func.count(models.GroundTruth.id)) == 2 assert db.scalar(func.count(models.Prediction.id)) == 0 - assert db.scalar(func.count(models.Label.id)) == 8 + assert db.scalar(func.count(models.Label.id)) == 4 diff --git a/api/valor_api/backend/metrics/metric_utils.py b/api/valor_api/backend/metrics/metric_utils.py index 41d42c8de..1a388ecb9 100644 --- a/api/valor_api/backend/metrics/metric_utils.py +++ b/api/valor_api/backend/metrics/metric_utils.py @@ -77,7 +77,7 @@ def _create_ranking_grouper_mappings( """Create grouper mappings for use when evaluating rankings.""" # define mappers to connect groupers with labels - label_key_to_grouper_key = {} + label_to_grouper_key = {} for label in labels: # the grouper should equal the (label.key, label.value) if it wasn't mapped by the user @@ -85,10 +85,10 @@ def _create_ranking_grouper_mappings( (label.key, label.value), (label.key, label.value) ) - label_key_to_grouper_key[label.key] = grouper_key + label_to_grouper_key[label.key + label.value] = grouper_key return { - "label_key_to_grouper_key": label_key_to_grouper_key, + "label_to_grouper_key": label_to_grouper_key, } diff --git a/api/valor_api/backend/metrics/ranking.py b/api/valor_api/backend/metrics/ranking.py index 1d285768a..552e1cf11 100644 --- a/api/valor_api/backend/metrics/ranking.py +++ b/api/valor_api/backend/metrics/ranking.py @@ -65,9 +65,9 @@ def _compute_ranking_metrics( Query( models.GroundTruth, case( - grouper_mappings["label_key_to_grouper_key"], - value=models.Label.key, - ).label("grouper_key"), + grouper_mappings["label_to_grouper_key"], + value=func.concat(models.Label.key, models.Label.value), + ).label("grouper_id"), models.Annotation.ranking.label("gt_ranking"), models.Annotation.datum_id, models.Annotation.id.label("gt_annotation_id"), @@ -79,11 +79,11 @@ def _compute_ranking_metrics( predictions = ( Query( - models.Prediction, + models.Prediction, # TODO is this deletable? case( - grouper_mappings["label_key_to_grouper_key"], - value=models.Label.key, - ).label("grouper_key"), + grouper_mappings["label_to_grouper_key"], + value=func.concat(models.Label.key, models.Label.value), + ).label("grouper_id"), models.Annotation.ranking.label("pd_ranking"), models.Annotation.datum_id, models.Annotation.id.label("pd_annotation_id"), @@ -95,7 +95,7 @@ def _compute_ranking_metrics( joint = ( select( - groundtruths.c.grouper_key, + groundtruths.c.grouper_id, groundtruths.c.gt_ranking, groundtruths.c.gt_annotation_id, predictions.c.pd_ranking, @@ -105,7 +105,7 @@ def _compute_ranking_metrics( .join( predictions, and_( - groundtruths.c.grouper_key == predictions.c.grouper_key, + groundtruths.c.grouper_id == predictions.c.grouper_id, groundtruths.c.datum_id == predictions.c.datum_id, ), isouter=True, # left join to include ground truths without predictions @@ -113,25 +113,25 @@ def _compute_ranking_metrics( ) flattened_predictions = select( - joint.c.grouper_key, + joint.c.grouper_id, joint.c.pd_annotation_id, func.jsonb_array_elements_text(joint.c.pd_ranking).label("pd_item"), ) flattened_groundtruths = select( - joint.c.grouper_key, + joint.c.grouper_id, func.jsonb_array_elements_text(joint.c.gt_ranking).label("gt_item"), ).alias() pd_rankings = select( - flattened_predictions.c.grouper_key, + flattened_predictions.c.grouper_id, flattened_predictions.c.pd_annotation_id, flattened_predictions.c.pd_item, func.row_number() .over( partition_by=and_( flattened_predictions.c.pd_annotation_id, - flattened_predictions.c.grouper_key, + flattened_predictions.c.grouper_id, ) ) .label("rank"), @@ -140,7 +140,7 @@ def _compute_ranking_metrics( # filter pd_rankings to only include relevant docs, then find the reciprical rank reciprocal_rankings = ( select( - pd_rankings.c.grouper_key, + pd_rankings.c.grouper_id, pd_rankings.c.pd_annotation_id.label("annotation_id"), 1 / func.min(pd_rankings.c.rank).label("recip_rank"), ) @@ -149,13 +149,13 @@ def _compute_ranking_metrics( .join( flattened_groundtruths, and_( - flattened_groundtruths.c.grouper_key - == pd_rankings.c.grouper_key, + flattened_groundtruths.c.grouper_id + == pd_rankings.c.grouper_id, flattened_groundtruths.c.gt_item == pd_rankings.c.pd_item, ), ) .group_by( - pd_rankings.c.grouper_key, + pd_rankings.c.grouper_id, pd_rankings.c.pd_annotation_id, ) ) @@ -165,14 +165,14 @@ def _compute_ranking_metrics( # add back any predictions that didn't contain any relevant elements gts_with_no_predictions = select( - joint.c.grouper_key, + joint.c.grouper_id, joint.c.gt_annotation_id.label("annotation_id"), literal(0).label("recip_rank"), ).where(joint.c.pd_annotation_id.is_(None)) rrs_with_missing_entries = ( select( - pd_rankings.c.grouper_key, + pd_rankings.c.grouper_id, pd_rankings.c.pd_annotation_id.label("annotation_id"), literal(0).label("recip_rank"), ) @@ -181,7 +181,7 @@ def _compute_ranking_metrics( .join( aliased_rr, and_( - pd_rankings.c.grouper_key == aliased_rr.c.grouper_key, + pd_rankings.c.grouper_id == aliased_rr.c.grouper_id, pd_rankings.c.pd_annotation_id == aliased_rr.c.annotation_id, ), isouter=True, @@ -192,13 +192,13 @@ def _compute_ranking_metrics( # take the mean across grouper keys to arrive at the MRR per key mrrs_by_key = db.execute( select( - rrs_with_missing_entries.c.grouper_key, + rrs_with_missing_entries.c.grouper_id, func.avg(rrs_with_missing_entries.c.recip_rank).label("mrr"), - ).group_by(rrs_with_missing_entries.c.grouper_key) + ).group_by(rrs_with_missing_entries.c.grouper_id) ).all() - for grouper_key, mrr in mrrs_by_key: - metrics.append(schemas.MRRMetric(label_key=grouper_key, value=mrr)) + for grouper_id, mrr in mrrs_by_key: + metrics.append(schemas.MRRMetric(label_key=grouper_id, value=mrr)) return metrics From 7d1608ee15fbb64fe34b5b0f2479e10fcf5708f5 Mon Sep 17 00:00:00 2001 From: Nick Date: Fri, 26 Apr 2024 01:17:36 -0600 Subject: [PATCH 08/22] add precision@k --- api/valor_api/backend/metrics/ranking.py | 77 ++++++++++++++++++++---- 1 file changed, 65 insertions(+), 12 deletions(-) diff --git a/api/valor_api/backend/metrics/ranking.py b/api/valor_api/backend/metrics/ranking.py index 552e1cf11..9c6b18307 100644 --- a/api/valor_api/backend/metrics/ranking.py +++ b/api/valor_api/backend/metrics/ranking.py @@ -22,6 +22,7 @@ def _compute_ranking_metrics( prediction_filter: schemas.Filter, groundtruth_filter: schemas.Filter, label_map: LabelMapType | None = None, + k_cutoffs: list[int] = [1, 3, 5], ) -> list: """ Compute classification metrics. @@ -34,10 +35,10 @@ def _compute_ranking_metrics( The filter to be used to query predictions. groundtruth_filter : schemas.Filter The filter to be used to query groundtruths. - compute_pr_curves: bool - A boolean which determines whether we calculate precision-recall curves or not. label_map: LabelMapType, optional Optional mapping of individual labels to a grouper label. Useful when you need to evaluate performance using labels that differ across datasets and models. + k_cutoffs: list[int] + The cut-offs (or "k" values) to use when calculating precision@k, recall@k, etc. Returns ---------- @@ -138,11 +139,11 @@ def _compute_ranking_metrics( ).alias() # filter pd_rankings to only include relevant docs, then find the reciprical rank - reciprocal_rankings = ( + filtered_rankings = ( select( pd_rankings.c.grouper_id, - pd_rankings.c.pd_annotation_id.label("annotation_id"), - 1 / func.min(pd_rankings.c.rank).label("recip_rank"), + pd_rankings.c.pd_annotation_id, + pd_rankings.c.rank, ) .distinct() .select_from(pd_rankings) @@ -154,9 +155,19 @@ def _compute_ranking_metrics( flattened_groundtruths.c.gt_item == pd_rankings.c.pd_item, ), ) + ).alias() + + # calculate reciprocal rankings for MRR + reciprocal_rankings = ( + select( + filtered_rankings.c.grouper_id, + filtered_rankings.c.pd_annotation_id.label("annotation_id"), + 1 / func.min(filtered_rankings.c.rank).label("recip_rank"), + ) + .select_from(filtered_rankings) .group_by( - pd_rankings.c.grouper_id, - pd_rankings.c.pd_annotation_id, + filtered_rankings.c.grouper_id, + filtered_rankings.c.pd_annotation_id, ) ) @@ -170,7 +181,7 @@ def _compute_ranking_metrics( literal(0).label("recip_rank"), ).where(joint.c.pd_annotation_id.is_(None)) - rrs_with_missing_entries = ( + predictions_with_no_gts = ( select( pd_rankings.c.grouper_id, pd_rankings.c.pd_annotation_id.label("annotation_id"), @@ -187,16 +198,58 @@ def _compute_ranking_metrics( isouter=True, ) .where(aliased_rr.c.annotation_id.is_(None)) - ).union_all(reciprocal_rankings, gts_with_no_predictions) + ) + + aliased_predictions_with_no_gts = predictions_with_no_gts.alias() + + mrr_union = predictions_with_no_gts.union_all( + reciprocal_rankings, gts_with_no_predictions + ) # take the mean across grouper keys to arrive at the MRR per key mrrs_by_key = db.execute( select( - rrs_with_missing_entries.c.grouper_id, - func.avg(rrs_with_missing_entries.c.recip_rank).label("mrr"), - ).group_by(rrs_with_missing_entries.c.grouper_id) + mrr_union.c.grouper_id, + func.avg(mrr_union.c.recip_rank).label("mrr"), + ).group_by(mrr_union.c.grouper_id) ).all() + # calculate precision @k to measure how many items with the top k positions are relevant. + sum_functions = [ + func.sum( + case( + (filtered_rankings.c.rank <= k, 1), + else_=0, + ) + ).label(f"precision@{k}") + for k in k_cutoffs + ] + + # TODO make this metric be at the metric level + # TODO create schema for this metric + # TODO roll up to average@k and mean@k + precision_at_k = db.execute( + select( + filtered_rankings.c.grouper_id, + filtered_rankings.c.pd_annotation_id, + *sum_functions, + ) + .select_from(filtered_rankings) + .group_by( + filtered_rankings.c.grouper_id, + filtered_rankings.c.pd_annotation_id, + ) + .union_all( # add back predictions that don't have any groundtruths + select( + predictions_with_no_gts.c.grouper_id, + predictions_with_no_gts.c.annotation_id, + *(literal(0).label(f"precision@{k}") for k in k_cutoffs), + ).select_from(aliased_predictions_with_no_gts) + ) + ).all() # type: ignore - sqlalchemy type error + + print(precision_at_k) + for grouper_id, mrr in mrrs_by_key: metrics.append(schemas.MRRMetric(label_key=grouper_id, value=mrr)) From 4994807974f94c052351d54ebba8aeae122c091a Mon Sep 17 00:00:00 2001 From: Nick Date: Fri, 26 Apr 2024 14:53:17 -0600 Subject: [PATCH 09/22] add ap@k and map@k --- .../backend/metrics/test_ranking.py | 163 +++++++++++++++--- api/tests/functional-tests/conftest.py | 7 +- api/tests/unit-tests/schemas/test_metrics.py | 116 ++++++++++++- api/valor_api/backend/metrics/metric_utils.py | 5 +- api/valor_api/backend/metrics/ranking.py | 155 +++++++++++++---- api/valor_api/schemas/__init__.py | 6 + api/valor_api/schemas/metrics.py | 131 ++++++++++++++ 7 files changed, 527 insertions(+), 56 deletions(-) diff --git a/api/tests/functional-tests/backend/metrics/test_ranking.py b/api/tests/functional-tests/backend/metrics/test_ranking.py index 3d40c1704..b38cdb511 100644 --- a/api/tests/functional-tests/backend/metrics/test_ranking.py +++ b/api/tests/functional-tests/backend/metrics/test_ranking.py @@ -1,3 +1,6 @@ +import builtins +from collections import defaultdict + import pytest from sqlalchemy.orm import Session @@ -7,6 +10,48 @@ from valor_api.backend.metrics.ranking import compute_ranking_metrics +def _parse_ranking_metrics(eval_metrics: list): + """Parse the metrics attribute of an evaluation for easy comparison against a dictionary of expected values.""" + output = defaultdict(lambda: defaultdict(lambda: defaultdict(float))) + + for metric in eval_metrics: + assert metric.parameters + assert isinstance(metric.value, int | float) + + if metric.type == "MRRMetric": + output["mrr"][metric.parameters["label_key"]] = metric.value # type: ignore - defaultdict type error + + elif metric.type == "PrecisionAtKMetric": + for aggregation in ("min", "max"): + func = getattr(builtins, aggregation) + existing_value = output[f"precision@k_{aggregation}"][ + metric.label + ][metric.parameters["k"]] + + output[f"precision@k_{aggregation}"][metric.label][ + metric.parameters["k"] + ] = func(metric.value, existing_value) + + elif metric.type == "APAtKMetric": + for aggregation in ("min", "max"): + func = getattr(builtins, aggregation) + existing_value = output[f"ap@k_{aggregation}"].get( + metric.label, 0 + ) + + output[f"ap@k_{aggregation}"][metric.label] = func( + metric.value, existing_value + ) + + elif metric.type == "mAPAtKMetric": + output["map@k"][metric.parameters["label_key"]] = metric.value # type: ignore - defaultdict type error + + else: + raise ValueError("Encountered unknown metric type.") + + return output + + @pytest.fixture def ranking_test_data( db: Session, @@ -81,21 +126,61 @@ def test_ranking( assert evaluations[0].metrics is not None - metrics = {} - for metric in evaluations[0].metrics: - assert metric.parameters # handles type error - metrics[metric.parameters["label_key"]] = metric.value + metrics = _parse_ranking_metrics(evaluations[0].metrics) expected_metrics = { - "k1": 0.5, # (1 + .33 + .166 + .5) / 4 - "k2": 0, # no predictions for this key + "mrr": { + "k1": 0.5, # (1 + .33 + .166 + .5) / 4 + "k2": 0, # no predictions for this key + }, + "precision@k_max": { + # label : k_cutoff : max_value + schemas.Label(key="k1", value="v1", score=None): { + 1: 1, # only one annotation has a relevant doc in k<=1 + 3: 2, # first and last docs have a two relevant docs in k<=3 + 5: 3, # the last annotation with this key has three relevant docs in k<=5 + } + }, + "precision@k_min": { + schemas.Label(key="k1", value="v1", score=None): { + 1: 0, + 3: 0, + 5: 0, + } + }, + "ap@k_max": { + schemas.Label( + key="k1", value="v1", score=None + ): 1.6666666666666667 # the last annotation is (0 + 2 + 3) / 3 + }, + "ap@k_min": {schemas.Label(key="k1", value="v1", score=None): 0}, + # TODO should this include k2 if MRR does? + "map@k": { + "k1": 1.0833333333333333, # (1 + 2 + 2) / 3 + (0 + 1 + 2) / 3 + 0 + 1.666667) / 4 + }, } - for key, value in metrics.items(): - assert expected_metrics[key] == value + for metric_type, outputs in metrics.items(): + for k, v in outputs.items(): + assert expected_metrics[metric_type][k] == v - for key, value in expected_metrics.items(): - assert metrics[key] == value + for metric_type, outputs in expected_metrics.items(): + for k, v in outputs.items(): + assert metrics[metric_type][k] == v + + # check that the (k2, v2) annotation wasn't included in our metrics since it didn't have a corresponding groundtruth + assert ( + len( + set( + [ + metric.parameters["annotation_id"] # type: ignore - we know metric.parameters exists for this metric type + for metric in evaluations[0].metrics + if metric.type == "PrecisionAtKMetric" + ] + ) + ) + == 4 + ) def test_ranking_with_label_map( @@ -135,18 +220,56 @@ def test_ranking_with_label_map( assert evaluations[0].metrics is not None - metrics = {} - for metric in evaluations[0].metrics: - assert metric.parameters # handles type error - metrics[metric.parameters["label_key"]] = metric.value + metrics = _parse_ranking_metrics(evaluations[0].metrics) expected_metrics = { - "k1": 0.4, # (1 + .33 + .166 + .5 + 0) / 5, - "k2": 0, # still no predictions for this key + "mrr": { + "k1": 0.4, # (1 + .33 + .166 + .5 + 0) / 5 + "k2": 0, # no predictions for this key + }, + "precision@k_max": { + # label : k_cutoff : max_value + schemas.Label(key="k1", value="v1", score=None): { + 1: 1, # only one annotation has a relevant doc in k<=1 + 3: 2, # first and last docs have a two relevant docs in k<=3 + 5: 3, # the last annotation with this key has three relevant docs in k<=5 + } + }, + "precision@k_min": { + schemas.Label(key="k1", value="v1", score=None): { + 1: 0, + 3: 0, + 5: 0, + } + }, + "ap@k_max": { + schemas.Label(key="k1", value="v1", score=None): 1.6666666666666667 + }, + "ap@k_min": {schemas.Label(key="k1", value="v1", score=None): 0}, + # TODO should this include k2 if MRR does? + "map@k": { + "k1": 0.8666666666666667, # (1 + 2 + 2) / 3 + (0 + 1 + 2) / 3 + 0 + 1.666667 + 0) / 5 + }, } - for key, value in metrics.items(): - assert expected_metrics[key] == value + for metric_type, outputs in metrics.items(): + for k, v in outputs.items(): + assert expected_metrics[metric_type][k] == v - for key, value in expected_metrics.items(): - assert metrics[key] == value + for metric_type, outputs in expected_metrics.items(): + for k, v in outputs.items(): + assert metrics[metric_type][k] == v + + # check that the label map added the extra annotation to our output + assert ( + len( + set( + [ + metric.parameters["annotation_id"] # type: ignore - we know metric.parameters exists for this metric type + for metric in evaluations[0].metrics + if metric.type == "PrecisionAtKMetric" + ] + ) + ) + == 5 + ) diff --git a/api/tests/functional-tests/conftest.py b/api/tests/functional-tests/conftest.py index 37f197107..885173ad6 100644 --- a/api/tests/functional-tests/conftest.py +++ b/api/tests/functional-tests/conftest.py @@ -961,9 +961,7 @@ def groundtruth_ranking( schemas.Annotation( task_type=enums.TaskType.RANKING, labels=[ - schemas.Label( - key="k1", value="v1" - ), # TODO the value literally isn't used at all here + schemas.Label(key="k1", value="v1"), ], ranking=[ "relevant_doc1", @@ -1060,6 +1058,7 @@ def prediction_ranking( "relevant_doc2", ], ), + # this key/value isn't associated with any groundtruths unless a label map is used schemas.Annotation( task_type=enums.TaskType.RANKING, labels=[ @@ -1070,7 +1069,7 @@ def prediction_ranking( "bar", ], ), - # this key isn't associated with any groundtruths, so it should be discarded + # this key/value isn't associated with any groundtruths, so it should be discarded schemas.Annotation( task_type=enums.TaskType.RANKING, labels=[ diff --git a/api/tests/unit-tests/schemas/test_metrics.py b/api/tests/unit-tests/schemas/test_metrics.py index 6df4cfb90..000b2493a 100644 --- a/api/tests/unit-tests/schemas/test_metrics.py +++ b/api/tests/unit-tests/schemas/test_metrics.py @@ -329,7 +329,7 @@ def test_ROCAUCMetric(): def test_MRRMetric(): - mrr_metric = schemas.MRRMetric(label_key="key", value=0.2) + metric = schemas.MRRMetric(label_key="key", value=0.2) with pytest.raises(ValidationError): schemas.MRRMetric(label_key=None, value=0.2) # type: ignore - purposefully throwing error @@ -343,7 +343,119 @@ def test_MRRMetric(): assert all( [ key in ["value", "type", "evaluation_id", "parameters"] - for key in mrr_metric.db_mapping(evaluation_id=1) + for key in metric.db_mapping(evaluation_id=1) + ] + ) + + +def test_PrecisionAtKMetric(): + metric = schemas.PrecisionAtKMetric( + label=schemas.Label(key="k1", value="v1"), + value=0.2, + k=1, + annotation_id=123, + ) + + with pytest.raises(ValidationError): + schemas.PrecisionAtKMetric(label_key=None, value=0.2) # type: ignore - purposefully throwing error + + with pytest.raises(ValidationError): + schemas.PrecisionAtKMetric(label_key=123, value=0.2) # type: ignore - purposefully throwing error + + with pytest.raises(ValidationError): + schemas.PrecisionAtKMetric( + label=schemas.Label(key="k1", value="v1"), + value=0.2, + k=None, # type: ignore - purposefully throwing error + annotation_id=123, + ) + + with pytest.raises(ValidationError): + schemas.PrecisionAtKMetric( + label=schemas.Label(key="k1", value="v1"), + value=0.2, + k=125, + annotation_id="not an id", # type: ignore - purposefully throwing error + ) + + assert all( + [ + key in ["value", "label_id", "type", "evaluation_id", "parameters"] + for key in metric.db_mapping(label_id=1, evaluation_id=1) + ] + ) + + +def test_APAtKMetric(): + metric = schemas.APAtKMetric( + label=schemas.Label(key="k1", value="v1"), + value=0.2, + k_cutoffs=[1, 3, 5], + annotation_id=123, + ) + + with pytest.raises(ValidationError): + schemas.APAtKMetric(label_key=None, value=0.2) # type: ignore - purposefully throwing error + + with pytest.raises(ValidationError): + schemas.APAtKMetric(label_key=123, value=0.2) # type: ignore - purposefully throwing error + + with pytest.raises(ValidationError): + schemas.APAtKMetric( + label=schemas.Label(key="k1", value="v1"), + value=0.2, + k_cutoffs=None, # type: ignore - purposefully throwing error + annotation_id=123, + ) + + with pytest.raises(ValidationError): + schemas.APAtKMetric( + label=schemas.Label(key="k1", value="v1"), + value=0.2, + k_cutoffs=[1, 3, 5], + annotation_id="not an id", # type: ignore - purposefully throwing error + ) + + assert all( + [ + key in ["value", "label_id", "type", "evaluation_id", "parameters"] + for key in metric.db_mapping(label_id=1, evaluation_id=1) + ] + ) + + +def test_mAPAtKMetric(): + metric = schemas.mAPAtKMetric( + label_key="k1", + value=0.2, + k_cutoffs=[1, 3, 5], + ) + + with pytest.raises(ValidationError): + schemas.mAPAtKMetric(label_key=None, value=0.2) # type: ignore - purposefully throwing error + + with pytest.raises(ValidationError): + schemas.mAPAtKMetric(label_key=123, value=0.2) # type: ignore - purposefully throwing error + + with pytest.raises(ValidationError): + schemas.mAPAtKMetric( + label_key="k1", + value=0.2, + k_cutoffs=None, # type: ignore - purposefully throwing error + ) + + with pytest.raises(ValidationError): + schemas.mAPAtKMetric( + label_key="k1", + value=0.2, + k_cutoffs=1, # type: ignore - purposefully throwing error, + ) + + assert all( + [ + key + in ["value", "label_key", "type", "evaluation_id", "parameters"] + for key in metric.db_mapping(evaluation_id=1) ] ) diff --git a/api/valor_api/backend/metrics/metric_utils.py b/api/valor_api/backend/metrics/metric_utils.py index 1a388ecb9..1dd3891a5 100644 --- a/api/valor_api/backend/metrics/metric_utils.py +++ b/api/valor_api/backend/metrics/metric_utils.py @@ -78,17 +78,20 @@ def _create_ranking_grouper_mappings( # define mappers to connect groupers with labels label_to_grouper_key = {} + label_to_grouper_value = {} for label in labels: # the grouper should equal the (label.key, label.value) if it wasn't mapped by the user - grouper_key, _ = mapping_dict.get( + grouper_key, grouper_value = mapping_dict.get( (label.key, label.value), (label.key, label.value) ) label_to_grouper_key[label.key + label.value] = grouper_key + label_to_grouper_value[label.key + label.value] = grouper_value return { "label_to_grouper_key": label_to_grouper_key, + "label_to_grouper_value": label_to_grouper_value, } diff --git a/api/valor_api/backend/metrics/ranking.py b/api/valor_api/backend/metrics/ranking.py index 9c6b18307..3ea66e9ea 100644 --- a/api/valor_api/backend/metrics/ranking.py +++ b/api/valor_api/backend/metrics/ranking.py @@ -68,7 +68,11 @@ def _compute_ranking_metrics( case( grouper_mappings["label_to_grouper_key"], value=func.concat(models.Label.key, models.Label.value), - ).label("grouper_id"), + ).label("grouper_key"), + case( + grouper_mappings["label_to_grouper_value"], + value=func.concat(models.Label.key, models.Label.value), + ).label("grouper_value"), models.Annotation.ranking.label("gt_ranking"), models.Annotation.datum_id, models.Annotation.id.label("gt_annotation_id"), @@ -84,7 +88,11 @@ def _compute_ranking_metrics( case( grouper_mappings["label_to_grouper_key"], value=func.concat(models.Label.key, models.Label.value), - ).label("grouper_id"), + ).label("grouper_key"), + case( + grouper_mappings["label_to_grouper_value"], + value=func.concat(models.Label.key, models.Label.value), + ).label("grouper_value"), models.Annotation.ranking.label("pd_ranking"), models.Annotation.datum_id, models.Annotation.id.label("pd_annotation_id"), @@ -96,7 +104,8 @@ def _compute_ranking_metrics( joint = ( select( - groundtruths.c.grouper_id, + groundtruths.c.grouper_key, + groundtruths.c.grouper_value, groundtruths.c.gt_ranking, groundtruths.c.gt_annotation_id, predictions.c.pd_ranking, @@ -106,7 +115,8 @@ def _compute_ranking_metrics( .join( predictions, and_( - groundtruths.c.grouper_id == predictions.c.grouper_id, + groundtruths.c.grouper_key == predictions.c.grouper_key, + groundtruths.c.grouper_value == predictions.c.grouper_value, groundtruths.c.datum_id == predictions.c.datum_id, ), isouter=True, # left join to include ground truths without predictions @@ -114,25 +124,29 @@ def _compute_ranking_metrics( ) flattened_predictions = select( - joint.c.grouper_id, + joint.c.grouper_key, + joint.c.grouper_value, joint.c.pd_annotation_id, func.jsonb_array_elements_text(joint.c.pd_ranking).label("pd_item"), ) flattened_groundtruths = select( - joint.c.grouper_id, + joint.c.grouper_key, + joint.c.grouper_value, func.jsonb_array_elements_text(joint.c.gt_ranking).label("gt_item"), ).alias() pd_rankings = select( - flattened_predictions.c.grouper_id, + flattened_predictions.c.grouper_key, + flattened_predictions.c.grouper_value, flattened_predictions.c.pd_annotation_id, flattened_predictions.c.pd_item, func.row_number() .over( partition_by=and_( flattened_predictions.c.pd_annotation_id, - flattened_predictions.c.grouper_id, + flattened_predictions.c.grouper_key, + flattened_predictions.c.grouper_value, ) ) .label("rank"), @@ -141,7 +155,8 @@ def _compute_ranking_metrics( # filter pd_rankings to only include relevant docs, then find the reciprical rank filtered_rankings = ( select( - pd_rankings.c.grouper_id, + pd_rankings.c.grouper_key, + pd_rankings.c.grouper_value, pd_rankings.c.pd_annotation_id, pd_rankings.c.rank, ) @@ -150,8 +165,10 @@ def _compute_ranking_metrics( .join( flattened_groundtruths, and_( - flattened_groundtruths.c.grouper_id - == pd_rankings.c.grouper_id, + flattened_groundtruths.c.grouper_key + == pd_rankings.c.grouper_key, + flattened_groundtruths.c.grouper_value + == pd_rankings.c.grouper_value, flattened_groundtruths.c.gt_item == pd_rankings.c.pd_item, ), ) @@ -160,13 +177,15 @@ def _compute_ranking_metrics( # calculate reciprocal rankings for MRR reciprocal_rankings = ( select( - filtered_rankings.c.grouper_id, + filtered_rankings.c.grouper_key, + filtered_rankings.c.grouper_value, filtered_rankings.c.pd_annotation_id.label("annotation_id"), 1 / func.min(filtered_rankings.c.rank).label("recip_rank"), ) .select_from(filtered_rankings) .group_by( - filtered_rankings.c.grouper_id, + filtered_rankings.c.grouper_key, + filtered_rankings.c.grouper_value, filtered_rankings.c.pd_annotation_id, ) ) @@ -176,14 +195,16 @@ def _compute_ranking_metrics( # add back any predictions that didn't contain any relevant elements gts_with_no_predictions = select( - joint.c.grouper_id, + joint.c.grouper_key, + joint.c.grouper_value, joint.c.gt_annotation_id.label("annotation_id"), literal(0).label("recip_rank"), ).where(joint.c.pd_annotation_id.is_(None)) predictions_with_no_gts = ( select( - pd_rankings.c.grouper_id, + pd_rankings.c.grouper_key, + pd_rankings.c.grouper_value, pd_rankings.c.pd_annotation_id.label("annotation_id"), literal(0).label("recip_rank"), ) @@ -192,7 +213,8 @@ def _compute_ranking_metrics( .join( aliased_rr, and_( - pd_rankings.c.grouper_id == aliased_rr.c.grouper_id, + pd_rankings.c.grouper_key == aliased_rr.c.grouper_key, + pd_rankings.c.grouper_value == aliased_rr.c.grouper_value, pd_rankings.c.pd_annotation_id == aliased_rr.c.annotation_id, ), isouter=True, @@ -209,11 +231,14 @@ def _compute_ranking_metrics( # take the mean across grouper keys to arrive at the MRR per key mrrs_by_key = db.execute( select( - mrr_union.c.grouper_id, + mrr_union.c.grouper_key, func.avg(mrr_union.c.recip_rank).label("mrr"), - ).group_by(mrr_union.c.grouper_id) + ).group_by(mrr_union.c.grouper_key) ).all() + for grouper_key, mrr in mrrs_by_key: + metrics.append(schemas.MRRMetric(label_key=grouper_key, value=mrr)) + # calculate precision @k to measure how many items with the top k positions are relevant. sum_functions = [ func.sum( @@ -225,33 +250,105 @@ def _compute_ranking_metrics( for k in k_cutoffs ] - # TODO make this metric be at the metric level - # TODO create schema for this metric - # TODO roll up to average@k and mean@k - precision_at_k = db.execute( + # calculate precision@k + calc_precision_at_k = ( select( - filtered_rankings.c.grouper_id, + filtered_rankings.c.grouper_key, + filtered_rankings.c.grouper_value, filtered_rankings.c.pd_annotation_id, *sum_functions, ) .select_from(filtered_rankings) .group_by( - filtered_rankings.c.grouper_id, + filtered_rankings.c.grouper_key, + filtered_rankings.c.grouper_value, filtered_rankings.c.pd_annotation_id, ) .union_all( # add back predictions that don't have any groundtruths select( - predictions_with_no_gts.c.grouper_id, + predictions_with_no_gts.c.grouper_key, + predictions_with_no_gts.c.grouper_value, predictions_with_no_gts.c.annotation_id, *(literal(0).label(f"precision@{k}") for k in k_cutoffs), ).select_from(aliased_predictions_with_no_gts) ) - ).all() # type: ignore - sqlalchemy type error + ).alias() + + # roll up precision@k into ap@k + columns = [calc_precision_at_k.c[f"precision@{k}"] for k in k_cutoffs] + + calc_ap_at_k = select( + calc_precision_at_k.c.grouper_key, + calc_precision_at_k.c.grouper_value, + calc_precision_at_k.c.pd_annotation_id, + func.sum(sum(columns) / len(columns)).label("ap@k"), + ).group_by( + calc_precision_at_k.c.grouper_key, + calc_precision_at_k.c.grouper_value, + calc_precision_at_k.c.pd_annotation_id, + ) + + # roll up ap@k into map@k + calc_map_at_k = select( + calc_ap_at_k.c.grouper_key, + func.avg(calc_ap_at_k.c["ap@k"]).label("map@k"), + ).group_by( + calc_ap_at_k.c.grouper_key, + ) + + # execute queries + precision_at_k = db.query(calc_precision_at_k).all() + ap_at_k = db.execute(calc_ap_at_k).all() + map_at_k = db.execute(calc_map_at_k).all() + + for metric in precision_at_k: + key, value, annotation_id, precisions = ( + metric[0], + metric[1], + metric[2], + metric[3:], + ) + + for i, k in enumerate(k_cutoffs): + metrics.append( + schemas.PrecisionAtKMetric( + label=schemas.Label(key=key, value=value), + value=precisions[i], + k=k, + annotation_id=annotation_id, + ) + ) - print(precision_at_k) + for metric in ap_at_k: + key, value, annotation_id, metric_value = ( + metric[0], + metric[1], + metric[2], + metric[3], + ) - for grouper_id, mrr in mrrs_by_key: - metrics.append(schemas.MRRMetric(label_key=grouper_id, value=mrr)) + metrics.append( + schemas.APAtKMetric( + label=schemas.Label(key=key, value=value), + value=metric_value, + k_cutoffs=k_cutoffs, + annotation_id=annotation_id, + ) + ) + + for metric in map_at_k: + key, metric_value = ( + metric[0], + metric[1], + ) + + metrics.append( + schemas.mAPAtKMetric( + label_key=key, + value=metric_value, + k_cutoffs=k_cutoffs, + ) + ) return metrics diff --git a/api/valor_api/schemas/__init__.py b/api/valor_api/schemas/__init__.py index dd21af161..f74240349 100644 --- a/api/valor_api/schemas/__init__.py +++ b/api/valor_api/schemas/__init__.py @@ -27,6 +27,7 @@ from .info import APIVersion from .metrics import ( AccuracyMetric, + APAtKMetric, APMetric, APMetricAveragedOverIOUs, ARMetric, @@ -37,10 +38,12 @@ IOUMetric, Metric, MRRMetric, + PrecisionAtKMetric, PrecisionMetric, PrecisionRecallCurve, RecallMetric, ROCAUCMetric, + mAPAtKMetric, mAPMetric, mAPMetricAveragedOverIOUs, mARMetric, @@ -73,6 +76,8 @@ "MultiPolygon", "Polygon", "Raster", + "APAtKMetric", + "mAPAtKMetric", "DateTime", "Date", "Time", @@ -91,6 +96,7 @@ "ConfusionMatrixResponse", "APMetric", "ARMetric", + "PrecisionAtKMetric", "mARMetric", "APMetricAveragedOverIOUs", "MultiPoint", diff --git a/api/valor_api/schemas/metrics.py b/api/valor_api/schemas/metrics.py index 05094a197..b202af633 100644 --- a/api/valor_api/schemas/metrics.py +++ b/api/valor_api/schemas/metrics.py @@ -557,6 +557,137 @@ def db_mapping(self, evaluation_id: int) -> dict: } +class PrecisionAtKMetric(BaseModel): + """ + Describes a precision@k metric, which measures how many items with the top k positions are relevant. + + Attributes + ---------- + label : Label + A label for the metric. + value : float + The metric value. + k: int + The cut-off used to calculate precision@k. + annotation_id: int + The id of the annotation associated with the prediction + """ + + label: Label + value: float | int | None + k: int + annotation_id: int + + def db_mapping(self, label_id: int, evaluation_id: int) -> dict: + """ + Creates a mapping for use when uploading the metric to the database. + + Parameters + ---------- + evaluation_id : int + The evaluation id. + + Returns + ---------- + A mapping dictionary. + """ + return { + "value": self.value, + "label_id": label_id, + "type": "PrecisionAtKMetric", + "parameters": {"k": self.k, "annotation_id": self.annotation_id}, + "evaluation_id": evaluation_id, + } + + +class APAtKMetric(BaseModel): + """ + Describes a average precision@k metric, which is the mean of precision@i for i=1,...,k. + + Attributes + ---------- + label : Label + A label for the metric. + value : float + The metric value. + k_cutoffs: list[int] + The cut-offs used to calculate AP@k. + annotation_id: int + The id of the annotation associated with the prediction + """ + + label: Label + value: float | int | None + annotation_id: int + k_cutoffs: list[int] + + def db_mapping(self, label_id: int, evaluation_id: int) -> dict: + """ + Creates a mapping for use when uploading the metric to the database. + + Parameters + ---------- + evaluation_id : int + The evaluation id. + + Returns + ---------- + A mapping dictionary. + """ + return { + "value": self.value, + "label_id": label_id, + "type": "APAtKMetric", + "parameters": { + "k_cutoffs": self.k_cutoffs, + "annotation_id": self.annotation_id, + }, + "evaluation_id": evaluation_id, + } + + +class mAPAtKMetric(BaseModel): + """ + Describes a mean average precision@k metric, which is the mean of average precision@k rolled-up to the label key. + + Attributes + ---------- + label_key : str + A label key for the metric. + value : float + The metric value. + k_cutoffs: list[int] + The cut-offs used to calculate AP@k. + """ + + label_key: str + value: float | int | None + k_cutoffs: list[int] + + def db_mapping(self, evaluation_id: int) -> dict: + """ + Creates a mapping for use when uploading the metric to the database. + + Parameters + ---------- + evaluation_id : int + The evaluation id. + + Returns + ---------- + A mapping dictionary. + """ + return { + "value": self.value, + "type": "mAPAtKMetric", + "parameters": { + "label_key": self.label_key, + "k_cutoffs": self.k_cutoffs, + }, + "evaluation_id": evaluation_id, + } + + class ROCAUCMetric(BaseModel): """ Describes an ROC AUC metric. From fbf9f6c783f925409ac18e6367d4a528937ef8bc Mon Sep 17 00:00:00 2001 From: Nick Date: Mon, 29 Apr 2024 15:27:09 -0600 Subject: [PATCH 10/22] fix precision@k --- .../backend/metrics/test_ranking.py | 29 +++++++++++-------- api/valor_api/backend/metrics/ranking.py | 15 ++++++---- 2 files changed, 26 insertions(+), 18 deletions(-) diff --git a/api/tests/functional-tests/backend/metrics/test_ranking.py b/api/tests/functional-tests/backend/metrics/test_ranking.py index b38cdb511..3377d7716 100644 --- a/api/tests/functional-tests/backend/metrics/test_ranking.py +++ b/api/tests/functional-tests/backend/metrics/test_ranking.py @@ -136,9 +136,11 @@ def test_ranking( "precision@k_max": { # label : k_cutoff : max_value schemas.Label(key="k1", value="v1", score=None): { - 1: 1, # only one annotation has a relevant doc in k<=1 - 3: 2, # first and last docs have a two relevant docs in k<=3 - 5: 3, # the last annotation with this key has three relevant docs in k<=5 + 1: 1 / 1, # only one annotation has a relevant doc in k<=1 + 3: 2 + / 3, # first and last docs have a two relevant docs in k<=3 + 5: 3 + / 5, # the last annotation with this key has three relevant docs in k<=5 } }, "precision@k_min": { @@ -151,13 +153,11 @@ def test_ranking( "ap@k_max": { schemas.Label( key="k1", value="v1", score=None - ): 1.6666666666666667 # the last annotation is (0 + 2 + 3) / 3 + ): 0.6888888888888889 # (1 + 2 / 3 + 2 / 5)/ 3 from first annotation }, "ap@k_min": {schemas.Label(key="k1", value="v1", score=None): 0}, # TODO should this include k2 if MRR does? - "map@k": { - "k1": 1.0833333333333333, # (1 + 2 + 2) / 3 + (0 + 1 + 2) / 3 + 0 + 1.666667) / 4 - }, + "map@k": {"k1": 0.33888888888888888889}, } for metric_type, outputs in metrics.items(): @@ -230,9 +230,11 @@ def test_ranking_with_label_map( "precision@k_max": { # label : k_cutoff : max_value schemas.Label(key="k1", value="v1", score=None): { - 1: 1, # only one annotation has a relevant doc in k<=1 - 3: 2, # first and last docs have a two relevant docs in k<=3 - 5: 3, # the last annotation with this key has three relevant docs in k<=5 + 1: 1 / 1, # only one annotation has a relevant doc in k<=1 + 3: 2 + / 3, # first and last docs have a two relevant docs in k<=3 + 5: 3 + / 5, # the last annotation with this key has three relevant docs in k<=5 } }, "precision@k_min": { @@ -243,12 +245,15 @@ def test_ranking_with_label_map( } }, "ap@k_max": { - schemas.Label(key="k1", value="v1", score=None): 1.6666666666666667 + schemas.Label( + key="k1", value="v1", score=None + ): 0.6888888888888889 # (1 + 2 / 3 + 2 / 5)/ 3 from first annotation }, "ap@k_min": {schemas.Label(key="k1", value="v1", score=None): 0}, # TODO should this include k2 if MRR does? + # TODO implement feature where users can choose which metrics get calculated "map@k": { - "k1": 0.8666666666666667, # (1 + 2 + 2) / 3 + (0 + 1 + 2) / 3 + 0 + 1.666667 + 0) / 5 + "k1": 0.27111111111111114, # ((1/1 + 2/3 + 2/5) / 3 + (0/1 + 1/3 + 2/5) / 3 + 0 + (0/1 + 2/3 + 3/5)/3 + 0) / 5 }, } diff --git a/api/valor_api/backend/metrics/ranking.py b/api/valor_api/backend/metrics/ranking.py index 3ea66e9ea..538e13d97 100644 --- a/api/valor_api/backend/metrics/ranking.py +++ b/api/valor_api/backend/metrics/ranking.py @@ -240,12 +240,15 @@ def _compute_ranking_metrics( metrics.append(schemas.MRRMetric(label_key=grouper_key, value=mrr)) # calculate precision @k to measure how many items with the top k positions are relevant. - sum_functions = [ - func.sum( - case( - (filtered_rankings.c.rank <= k, 1), - else_=0, + precision_at_k_functions = [ + ( + func.sum( + case( + (filtered_rankings.c.rank <= k, 1), + else_=0, + ) ) + / k ).label(f"precision@{k}") for k in k_cutoffs ] @@ -256,7 +259,7 @@ def _compute_ranking_metrics( filtered_rankings.c.grouper_key, filtered_rankings.c.grouper_value, filtered_rankings.c.pd_annotation_id, - *sum_functions, + *precision_at_k_functions, ) .select_from(filtered_rankings) .group_by( From 630da54a8f217deb20282845492df898ee75c5c9 Mon Sep 17 00:00:00 2001 From: Nick Date: Tue, 30 Apr 2024 00:06:31 -0600 Subject: [PATCH 11/22] implement recall metrics --- .../backend/metrics/test_ranking.py | 65 ++++++++- api/tests/unit-tests/schemas/test_metrics.py | 112 ++++++++++++++ api/valor_api/backend/metrics/ranking.py | 121 +++++++++++----- api/valor_api/schemas/__init__.py | 6 + api/valor_api/schemas/metrics.py | 137 +++++++++++++++++- 5 files changed, 397 insertions(+), 44 deletions(-) diff --git a/api/tests/functional-tests/backend/metrics/test_ranking.py b/api/tests/functional-tests/backend/metrics/test_ranking.py index 3377d7716..b70274c97 100644 --- a/api/tests/functional-tests/backend/metrics/test_ranking.py +++ b/api/tests/functional-tests/backend/metrics/test_ranking.py @@ -12,6 +12,14 @@ def _parse_ranking_metrics(eval_metrics: list): """Parse the metrics attribute of an evaluation for easy comparison against a dictionary of expected values.""" + name_dict = { + "PrecisionAtKMetric": "precision", + "RecallAtKMetric": "recall", + "APAtKMetric": "ap", + "ARAtKMetric": "ar", + "mAPAtKMetric": "map", + "mARAtKMetric": "mar", + } output = defaultdict(lambda: defaultdict(lambda: defaultdict(float))) for metric in eval_metrics: @@ -21,30 +29,33 @@ def _parse_ranking_metrics(eval_metrics: list): if metric.type == "MRRMetric": output["mrr"][metric.parameters["label_key"]] = metric.value # type: ignore - defaultdict type error - elif metric.type == "PrecisionAtKMetric": + elif metric.type in ("PrecisionAtKMetric", "RecallAtKMetric"): + name = name_dict[metric.type] for aggregation in ("min", "max"): func = getattr(builtins, aggregation) - existing_value = output[f"precision@k_{aggregation}"][ + existing_value = output[f"{name}@k_{aggregation}"][ metric.label ][metric.parameters["k"]] - output[f"precision@k_{aggregation}"][metric.label][ + output[f"{name}@k_{aggregation}"][metric.label][ metric.parameters["k"] ] = func(metric.value, existing_value) - elif metric.type == "APAtKMetric": + elif metric.type in ("APAtKMetric", "ARAtKMetric"): + name = name_dict[metric.type] for aggregation in ("min", "max"): func = getattr(builtins, aggregation) - existing_value = output[f"ap@k_{aggregation}"].get( + existing_value = output[f"{name}@k_{aggregation}"].get( metric.label, 0 ) - output[f"ap@k_{aggregation}"][metric.label] = func( + output[f"{name}@k_{aggregation}"][metric.label] = func( metric.value, existing_value ) - elif metric.type == "mAPAtKMetric": - output["map@k"][metric.parameters["label_key"]] = metric.value # type: ignore - defaultdict type error + elif metric.type in ("mAPAtKMetric", "mARAtKMetric"): + name = name_dict[metric.type] + output[f"{name}@k"][metric.parameters["label_key"]] = metric.value # type: ignore - defaultdict type error else: raise ValueError("Encountered unknown metric type.") @@ -158,6 +169,25 @@ def test_ranking( "ap@k_min": {schemas.Label(key="k1", value="v1", score=None): 0}, # TODO should this include k2 if MRR does? "map@k": {"k1": 0.33888888888888888889}, + "recall@k_max": { + schemas.Label(key="k1", value="v1", score=None): { + 1: 1 / 4, + 3: 2 / 4, + 5: 3 / 4, + } + }, + "recall@k_min": { + schemas.Label(key="k1", value="v1", score=None): { + 1: 0, + 3: 0, + 5: 0, + } + }, + "ar@k_max": { + schemas.Label(key="k1", value="v1", score=None): 0.4166666666666667 + }, + "ar@k_min": {schemas.Label(key="k1", value="v1", score=None): 0}, + "mar@k": {"k1": 0.2708333333333333}, } for metric_type, outputs in metrics.items(): @@ -255,6 +285,25 @@ def test_ranking_with_label_map( "map@k": { "k1": 0.27111111111111114, # ((1/1 + 2/3 + 2/5) / 3 + (0/1 + 1/3 + 2/5) / 3 + 0 + (0/1 + 2/3 + 3/5)/3 + 0) / 5 }, + "recall@k_max": { + schemas.Label(key="k1", value="v1", score=None): { + 1: 1 / 4, + 3: 2 / 4, + 5: 3 / 4, + } + }, + "recall@k_min": { + schemas.Label(key="k1", value="v1", score=None): { + 1: 0, + 3: 0, + 5: 0, + } + }, + "ar@k_max": { + schemas.Label(key="k1", value="v1", score=None): 0.4166666666666667 + }, + "ar@k_min": {schemas.Label(key="k1", value="v1", score=None): 0}, + "mar@k": {"k1": 0.21666666666666667}, } for metric_type, outputs in metrics.items(): diff --git a/api/tests/unit-tests/schemas/test_metrics.py b/api/tests/unit-tests/schemas/test_metrics.py index 000b2493a..a3a11e41e 100644 --- a/api/tests/unit-tests/schemas/test_metrics.py +++ b/api/tests/unit-tests/schemas/test_metrics.py @@ -460,6 +460,118 @@ def test_mAPAtKMetric(): ) +def test_RecallAtKMetric(): + metric = schemas.RecallAtKMetric( + label=schemas.Label(key="k1", value="v1"), + value=0.2, + k=1, + annotation_id=123, + ) + + with pytest.raises(ValidationError): + schemas.RecallAtKMetric(label_key=None, value=0.2) # type: ignore - purposefully throwing error + + with pytest.raises(ValidationError): + schemas.RecallAtKMetric(label_key=123, value=0.2) # type: ignore - purposefully throwing error + + with pytest.raises(ValidationError): + schemas.RecallAtKMetric( + label=schemas.Label(key="k1", value="v1"), + value=0.2, + k=None, # type: ignore - purposefully throwing error + annotation_id=123, + ) + + with pytest.raises(ValidationError): + schemas.RecallAtKMetric( + label=schemas.Label(key="k1", value="v1"), + value=0.2, + k=125, + annotation_id="not an id", # type: ignore - purposefully throwing error + ) + + assert all( + [ + key in ["value", "label_id", "type", "evaluation_id", "parameters"] + for key in metric.db_mapping(label_id=1, evaluation_id=1) + ] + ) + + +def test_ARAtKMetric(): + metric = schemas.ARAtKMetric( + label=schemas.Label(key="k1", value="v1"), + value=0.2, + k_cutoffs=[1, 3, 5], + annotation_id=123, + ) + + with pytest.raises(ValidationError): + schemas.ARAtKMetric(label_key=None, value=0.2) # type: ignore - purposefully throwing error + + with pytest.raises(ValidationError): + schemas.ARAtKMetric(label_key=123, value=0.2) # type: ignore - purposefully throwing error + + with pytest.raises(ValidationError): + schemas.ARAtKMetric( + label=schemas.Label(key="k1", value="v1"), + value=0.2, + k_cutoffs=None, # type: ignore - purposefully throwing error + annotation_id=123, + ) + + with pytest.raises(ValidationError): + schemas.ARAtKMetric( + label=schemas.Label(key="k1", value="v1"), + value=0.2, + k_cutoffs=[1, 3, 5], + annotation_id="not an id", # type: ignore - purposefully throwing error + ) + + assert all( + [ + key in ["value", "label_id", "type", "evaluation_id", "parameters"] + for key in metric.db_mapping(label_id=1, evaluation_id=1) + ] + ) + + +def test_mARAtKMetric(): + metric = schemas.mARAtKMetric( + label_key="k1", + value=0.2, + k_cutoffs=[1, 3, 5], + ) + + with pytest.raises(ValidationError): + schemas.mARAtKMetric(label_key=None, value=0.2) # type: ignore - purposefully throwing error + + with pytest.raises(ValidationError): + schemas.mARAtKMetric(label_key=123, value=0.2) # type: ignore - purposefully throwing error + + with pytest.raises(ValidationError): + schemas.mARAtKMetric( + label_key="k1", + value=0.2, + k_cutoffs=None, # type: ignore - purposefully throwing error + ) + + with pytest.raises(ValidationError): + schemas.mARAtKMetric( + label_key="k1", + value=0.2, + k_cutoffs=1, # type: ignore - purposefully throwing error, + ) + + assert all( + [ + key + in ["value", "label_key", "type", "evaluation_id", "parameters"] + for key in metric.db_mapping(evaluation_id=1) + ] + ) + + def test_IOUMetric(): iou_metric = schemas.IOUMetric( label=schemas.Label(key="key", value="value"), value=0.2 diff --git a/api/valor_api/backend/metrics/ranking.py b/api/valor_api/backend/metrics/ranking.py index 538e13d97..7b46232d0 100644 --- a/api/valor_api/backend/metrics/ranking.py +++ b/api/valor_api/backend/metrics/ranking.py @@ -74,6 +74,9 @@ def _compute_ranking_metrics( value=func.concat(models.Label.key, models.Label.value), ).label("grouper_value"), models.Annotation.ranking.label("gt_ranking"), + func.jsonb_array_length(models.Annotation.ranking).label( + "number_of_relevant_items" + ), models.Annotation.datum_id, models.Annotation.id.label("gt_annotation_id"), ) @@ -108,6 +111,7 @@ def _compute_ranking_metrics( groundtruths.c.grouper_value, groundtruths.c.gt_ranking, groundtruths.c.gt_annotation_id, + groundtruths.c.number_of_relevant_items, predictions.c.pd_ranking, predictions.c.pd_annotation_id, ) @@ -133,6 +137,7 @@ def _compute_ranking_metrics( flattened_groundtruths = select( joint.c.grouper_key, joint.c.grouper_value, + joint.c.number_of_relevant_items, func.jsonb_array_elements_text(joint.c.gt_ranking).label("gt_item"), ).alias() @@ -159,6 +164,7 @@ def _compute_ranking_metrics( pd_rankings.c.grouper_value, pd_rankings.c.pd_annotation_id, pd_rankings.c.rank, + flattened_groundtruths.c.number_of_relevant_items, ) .distinct() .select_from(pd_rankings) @@ -239,8 +245,7 @@ def _compute_ranking_metrics( for grouper_key, mrr in mrrs_by_key: metrics.append(schemas.MRRMetric(label_key=grouper_key, value=mrr)) - # calculate precision @k to measure how many items with the top k positions are relevant. - precision_at_k_functions = [ + precision_and_recall_functions = [ ( func.sum( case( @@ -253,19 +258,34 @@ def _compute_ranking_metrics( for k in k_cutoffs ] + recall_at_k_functions = [ + ( + func.sum( + case( + (filtered_rankings.c.rank <= k, 1), + else_=0, + ) + ) + / filtered_rankings.c.number_of_relevant_items + ).label(f"recall@{k}") + for k in k_cutoffs + ] + # calculate precision@k - calc_precision_at_k = ( + calc_recall_and_precision = ( select( filtered_rankings.c.grouper_key, filtered_rankings.c.grouper_value, filtered_rankings.c.pd_annotation_id, - *precision_at_k_functions, + *precision_and_recall_functions, + *recall_at_k_functions, ) .select_from(filtered_rankings) .group_by( filtered_rankings.c.grouper_key, filtered_rankings.c.grouper_value, filtered_rankings.c.pd_annotation_id, + filtered_rankings.c.number_of_relevant_items, ) .union_all( # add back predictions that don't have any groundtruths select( @@ -273,43 +293,54 @@ def _compute_ranking_metrics( predictions_with_no_gts.c.grouper_value, predictions_with_no_gts.c.annotation_id, *(literal(0).label(f"precision@{k}") for k in k_cutoffs), + *(literal(0).label(f"recall@{k}") for k in k_cutoffs), ).select_from(aliased_predictions_with_no_gts) ) ).alias() - # roll up precision@k into ap@k - columns = [calc_precision_at_k.c[f"precision@{k}"] for k in k_cutoffs] + # roll up by k + precision_columns = [ + calc_recall_and_precision.c[f"precision@{k}"] for k in k_cutoffs + ] + recall_columns = [ + calc_recall_and_precision.c[f"recall@{k}"] for k in k_cutoffs + ] - calc_ap_at_k = select( - calc_precision_at_k.c.grouper_key, - calc_precision_at_k.c.grouper_value, - calc_precision_at_k.c.pd_annotation_id, - func.sum(sum(columns) / len(columns)).label("ap@k"), + calc_ap_and_ar = select( + calc_recall_and_precision.c.grouper_key, + calc_recall_and_precision.c.grouper_value, + calc_recall_and_precision.c.pd_annotation_id, + func.sum(sum(precision_columns) / len(precision_columns)).label( + "ap@k" + ), + func.sum(sum(recall_columns) / len(recall_columns)).label("ar@k"), ).group_by( - calc_precision_at_k.c.grouper_key, - calc_precision_at_k.c.grouper_value, - calc_precision_at_k.c.pd_annotation_id, + calc_recall_and_precision.c.grouper_key, + calc_recall_and_precision.c.grouper_value, + calc_recall_and_precision.c.pd_annotation_id, ) - # roll up ap@k into map@k - calc_map_at_k = select( - calc_ap_at_k.c.grouper_key, - func.avg(calc_ap_at_k.c["ap@k"]).label("map@k"), + # roll up by label key + calc_map_and_mar = select( + calc_ap_and_ar.c.grouper_key, + func.avg(calc_ap_and_ar.c["ap@k"]).label("map@k"), + func.avg(calc_ap_and_ar.c["ar@k"]).label("mar@k"), ).group_by( - calc_ap_at_k.c.grouper_key, + calc_ap_and_ar.c.grouper_key, ) # execute queries - precision_at_k = db.query(calc_precision_at_k).all() - ap_at_k = db.execute(calc_ap_at_k).all() - map_at_k = db.execute(calc_map_at_k).all() + precision_and_recall = db.query(calc_recall_and_precision).all() + ap_and_ar = db.execute(calc_ap_and_ar).all() + map_and_mar = db.execute(calc_map_and_mar).all() - for metric in precision_at_k: - key, value, annotation_id, precisions = ( + for metric in precision_and_recall: + key, value, annotation_id, precisions, recalls = ( metric[0], metric[1], metric[2], - metric[3:], + metric[3 : 3 + len(k_cutoffs)], + metric[3 + len(k_cutoffs) :], ) for i, k in enumerate(k_cutoffs): @@ -322,33 +353,57 @@ def _compute_ranking_metrics( ) ) - for metric in ap_at_k: - key, value, annotation_id, metric_value = ( + metrics.append( + schemas.RecallAtKMetric( + label=schemas.Label(key=key, value=value), + value=recalls[i], + k=k, + annotation_id=annotation_id, + ) + ) + + for metric in ap_and_ar: + key, value, annotation_id, ap_value, ar_value = ( metric[0], metric[1], metric[2], metric[3], + metric[4], ) metrics.append( schemas.APAtKMetric( label=schemas.Label(key=key, value=value), - value=metric_value, + value=ap_value, k_cutoffs=k_cutoffs, annotation_id=annotation_id, ) ) - for metric in map_at_k: - key, metric_value = ( - metric[0], - metric[1], + metrics.append( + schemas.ARAtKMetric( + label=schemas.Label(key=key, value=value), + value=ar_value, + k_cutoffs=k_cutoffs, + annotation_id=annotation_id, + ) ) + for metric in map_and_mar: + key, map_value, mar_value = (metric[0], metric[1], metric[2]) + metrics.append( schemas.mAPAtKMetric( label_key=key, - value=metric_value, + value=map_value, + k_cutoffs=k_cutoffs, + ) + ) + + metrics.append( + schemas.mARAtKMetric( + label_key=key, + value=mar_value, k_cutoffs=k_cutoffs, ) ) diff --git a/api/valor_api/schemas/__init__.py b/api/valor_api/schemas/__init__.py index f74240349..232a802ae 100644 --- a/api/valor_api/schemas/__init__.py +++ b/api/valor_api/schemas/__init__.py @@ -30,6 +30,7 @@ APAtKMetric, APMetric, APMetricAveragedOverIOUs, + ARAtKMetric, ARMetric, ConfusionMatrix, ConfusionMatrixEntry, @@ -41,11 +42,13 @@ PrecisionAtKMetric, PrecisionMetric, PrecisionRecallCurve, + RecallAtKMetric, RecallMetric, ROCAUCMetric, mAPAtKMetric, mAPMetric, mAPMetricAveragedOverIOUs, + mARAtKMetric, mARMetric, mIOUMetric, ) @@ -96,6 +99,9 @@ "ConfusionMatrixResponse", "APMetric", "ARMetric", + "RecallAtKMetric", + "ARAtKMetric", + "mARAtKMetric", "PrecisionAtKMetric", "mARMetric", "APMetricAveragedOverIOUs", diff --git a/api/valor_api/schemas/metrics.py b/api/valor_api/schemas/metrics.py index b202af633..5d521f5fe 100644 --- a/api/valor_api/schemas/metrics.py +++ b/api/valor_api/schemas/metrics.py @@ -559,7 +559,7 @@ def db_mapping(self, evaluation_id: int) -> dict: class PrecisionAtKMetric(BaseModel): """ - Describes a precision@k metric, which measures how many items with the top k positions are relevant. + Describes a precision@k metric, which measures how many items with the top k positions are relevant divided by k. Attributes ---------- @@ -570,7 +570,7 @@ class PrecisionAtKMetric(BaseModel): k: int The cut-off used to calculate precision@k. annotation_id: int - The id of the annotation associated with the prediction + The id of the annotation associated with the prediction. """ label: Label @@ -613,7 +613,7 @@ class APAtKMetric(BaseModel): k_cutoffs: list[int] The cut-offs used to calculate AP@k. annotation_id: int - The id of the annotation associated with the prediction + The id of the annotation associated with the prediction. """ label: Label @@ -688,6 +688,137 @@ def db_mapping(self, evaluation_id: int) -> dict: } +class RecallAtKMetric(BaseModel): + """ + Describes a recall@k metric, which measures how many items with the top k positions are relevant divided by the number of relevant items. + + Attributes + ---------- + label : Label + A label for the metric. + value : float + The metric value. + k: int + The cut-off used to calculate recall@k. + annotation_id: int + The id of the annotation associated with the prediction. + """ + + label: Label + value: float | int | None + k: int + annotation_id: int + + def db_mapping(self, label_id: int, evaluation_id: int) -> dict: + """ + Creates a mapping for use when uploading the metric to the database. + + Parameters + ---------- + evaluation_id : int + The evaluation id. + + Returns + ---------- + A mapping dictionary. + """ + return { + "value": self.value, + "label_id": label_id, + "type": "RecallAtKMetric", + "parameters": {"k": self.k, "annotation_id": self.annotation_id}, + "evaluation_id": evaluation_id, + } + + +class ARAtKMetric(BaseModel): + """ + Describes a average recall@k metric, which is the mean of recall@i for i=1,...,k. + + Attributes + ---------- + label : Label + A label for the metric. + value : float + The metric value. + k_cutoffs: list[int] + The cut-offs used to calculate AR@k. + annotation_id: int + The id of the annotation associated with the prediction. + """ + + label: Label + value: float | int | None + annotation_id: int + k_cutoffs: list[int] + + def db_mapping(self, label_id: int, evaluation_id: int) -> dict: + """ + Creates a mapping for use when uploading the metric to the database. + + Parameters + ---------- + evaluation_id : int + The evaluation id. + + Returns + ---------- + A mapping dictionary. + """ + return { + "value": self.value, + "label_id": label_id, + "type": "ARAtKMetric", + "parameters": { + "k_cutoffs": self.k_cutoffs, + "annotation_id": self.annotation_id, + }, + "evaluation_id": evaluation_id, + } + + +class mARAtKMetric(BaseModel): + """ + Describes a mean average recall@k metric, which is the mean of average recall@k rolled-up to the label key. + + Attributes + ---------- + label_key : str + A label key for the metric. + value : float + The metric value. + k_cutoffs: list[int] + The cut-offs used to calculate AR@k. + """ + + label_key: str + value: float | int | None + k_cutoffs: list[int] + + def db_mapping(self, evaluation_id: int) -> dict: + """ + Creates a mapping for use when uploading the metric to the database. + + Parameters + ---------- + evaluation_id : int + The evaluation id. + + Returns + ---------- + A mapping dictionary. + """ + return { + "value": self.value, + "type": "mARAtKMetric", + "parameters": { + "label_key": self.label_key, + "k_cutoffs": self.k_cutoffs, + }, + "evaluation_id": evaluation_id, + } + + class ROCAUCMetric(BaseModel): """ Describes an ROC AUC metric. From a2bfa8225b070fb698e07bc22cd3fd3eee25366f Mon Sep 17 00:00:00 2001 From: Nick Date: Tue, 30 Apr 2024 01:37:36 -0600 Subject: [PATCH 12/22] refactor --- .../backend/metrics/test_ranking.py | 3 - api/valor_api/backend/metrics/metric_utils.py | 7 + api/valor_api/backend/metrics/ranking.py | 456 ++++++++++-------- api/valor_api/schemas/evaluation.py | 1 - .../client/metrics/test_ranking.py | 6 - 5 files changed, 264 insertions(+), 209 deletions(-) diff --git a/api/tests/functional-tests/backend/metrics/test_ranking.py b/api/tests/functional-tests/backend/metrics/test_ranking.py index b70274c97..3211dda53 100644 --- a/api/tests/functional-tests/backend/metrics/test_ranking.py +++ b/api/tests/functional-tests/backend/metrics/test_ranking.py @@ -167,7 +167,6 @@ def test_ranking( ): 0.6888888888888889 # (1 + 2 / 3 + 2 / 5)/ 3 from first annotation }, "ap@k_min": {schemas.Label(key="k1", value="v1", score=None): 0}, - # TODO should this include k2 if MRR does? "map@k": {"k1": 0.33888888888888888889}, "recall@k_max": { schemas.Label(key="k1", value="v1", score=None): { @@ -280,8 +279,6 @@ def test_ranking_with_label_map( ): 0.6888888888888889 # (1 + 2 / 3 + 2 / 5)/ 3 from first annotation }, "ap@k_min": {schemas.Label(key="k1", value="v1", score=None): 0}, - # TODO should this include k2 if MRR does? - # TODO implement feature where users can choose which metrics get calculated "map@k": { "k1": 0.27111111111111114, # ((1/1 + 2/3 + 2/5) / 3 + (0/1 + 1/3 + 2/5) / 3 + 0 + (0/1 + 2/3 + 3/5)/3 + 0) / 5 }, diff --git a/api/valor_api/backend/metrics/metric_utils.py b/api/valor_api/backend/metrics/metric_utils.py index 1dd3891a5..2eead3dc0 100644 --- a/api/valor_api/backend/metrics/metric_utils.py +++ b/api/valor_api/backend/metrics/metric_utils.py @@ -234,6 +234,13 @@ def create_metric_mappings( | schemas.IOUMetric | schemas.mIOUMetric | schemas.PrecisionRecallCurve + | schemas.PrecisionAtKMetric + | schemas.APAtKMetric + | schemas.mAPAtKMetric + | schemas.RecallAtKMetric + | schemas.ARAtKMetric + | schemas.mARAtKMetric + | schemas.MRRMetric ], evaluation_id: int, ) -> list[dict]: diff --git a/api/valor_api/backend/metrics/ranking.py b/api/valor_api/backend/metrics/ranking.py index 7b46232d0..0949b82f9 100644 --- a/api/valor_api/backend/metrics/ranking.py +++ b/api/valor_api/backend/metrics/ranking.py @@ -13,16 +13,161 @@ ) from valor_api.backend.query import Query -# TODO consolidate this? LabelMapType = list[list[list[str]]] +def _calc_precision_recall_at_k_metrics( + db: Session, k_cutoffs, filtered_rankings, predictions_with_no_gts +): + """Calculate all metrics related to precision@k and recall@k.""" + precision_and_recall_functions = [ + ( + func.sum( + case( + (filtered_rankings.c.rank <= k, 1), + else_=0, + ) + ) + / k + ).label(f"precision@{k}") + for k in k_cutoffs + ] + + recall_at_k_functions = [ + ( + func.sum( + case( + (filtered_rankings.c.rank <= k, 1), + else_=0, + ) + ) + / filtered_rankings.c.number_of_relevant_items + ).label(f"recall@{k}") + for k in k_cutoffs + ] + + calc_recall_and_precision = ( + select( + filtered_rankings.c.grouper_key, + filtered_rankings.c.grouper_value, + filtered_rankings.c.pd_annotation_id, + *precision_and_recall_functions, + *recall_at_k_functions, + ) + .select_from(filtered_rankings) + .group_by( + filtered_rankings.c.grouper_key, + filtered_rankings.c.grouper_value, + filtered_rankings.c.pd_annotation_id, + filtered_rankings.c.number_of_relevant_items, + ) + .union_all( # add back predictions that don't have any groundtruths + select( + predictions_with_no_gts.c.grouper_key, + predictions_with_no_gts.c.grouper_value, + predictions_with_no_gts.c.annotation_id, + *(literal(0).label(f"precision@{k}") for k in k_cutoffs), + *(literal(0).label(f"recall@{k}") for k in k_cutoffs), + ).select_from(predictions_with_no_gts) + ) + ).alias() + + # roll up by k + precision_columns = [ + calc_recall_and_precision.c[f"precision@{k}"] for k in k_cutoffs + ] + recall_columns = [ + calc_recall_and_precision.c[f"recall@{k}"] for k in k_cutoffs + ] + + calc_ap_and_ar = select( + calc_recall_and_precision.c.grouper_key, + calc_recall_and_precision.c.grouper_value, + calc_recall_and_precision.c.pd_annotation_id, + func.sum(sum(precision_columns) / len(precision_columns)).label( + "ap@k" + ), + func.sum(sum(recall_columns) / len(recall_columns)).label("ar@k"), + ).group_by( + calc_recall_and_precision.c.grouper_key, + calc_recall_and_precision.c.grouper_value, + calc_recall_and_precision.c.pd_annotation_id, + ) + + # roll up by label key + calc_map_and_mar = select( + calc_ap_and_ar.c.grouper_key, + func.avg(calc_ap_and_ar.c["ap@k"]).label("map@k"), + func.avg(calc_ap_and_ar.c["ar@k"]).label("mar@k"), + ).group_by( + calc_ap_and_ar.c.grouper_key, + ) + + # execute queries + precision_and_recall = db.query(calc_recall_and_precision).all() + ap_and_ar = db.execute(calc_ap_and_ar).all() + map_and_mar = db.execute(calc_map_and_mar).all() + + return precision_and_recall, ap_and_ar, map_and_mar + + +def _calc_mrr(db: Session, joint, filtered_rankings, predictions_with_no_gts): + """Calculates mean reciprical rank (MRR) metrics.""" + # calculate reciprocal rankings for MRR + reciprocal_rankings = ( + select( + filtered_rankings.c.grouper_key, + filtered_rankings.c.grouper_value, + filtered_rankings.c.pd_annotation_id.label("annotation_id"), + 1 / func.min(filtered_rankings.c.rank).label("recip_rank"), + ) + .select_from(filtered_rankings) + .group_by( + filtered_rankings.c.grouper_key, + filtered_rankings.c.grouper_value, + filtered_rankings.c.pd_annotation_id, + ) + ) + + # add back any predictions that didn't contain any relevant elements + gts_with_no_predictions = select( + joint.c.grouper_key, + joint.c.grouper_value, + joint.c.gt_annotation_id.label("annotation_id"), + literal(0).label("recip_rank"), + ).where(joint.c.pd_annotation_id.is_(None)) + + mrr_union = predictions_with_no_gts.union_all( + reciprocal_rankings, gts_with_no_predictions + ) + + # take the mean across grouper keys to arrive at the MRR per key + mrrs_by_key = db.execute( + select( + mrr_union.c.grouper_key, + func.avg(mrr_union.c.recip_rank).label("mrr"), + ).group_by(mrr_union.c.grouper_key) + ).all() + + return mrrs_by_key + + def _compute_ranking_metrics( db: Session, prediction_filter: schemas.Filter, groundtruth_filter: schemas.Filter, label_map: LabelMapType | None = None, k_cutoffs: list[int] = [1, 3, 5], + metrics_to_compute: list[str] = [ + "MRRMetric", + "PrecisionAtKMetric", + "APAtKMetric", + "mAPAtKMetric", + "RecallAtKMetric", + "ARAtKMetric", + "mARAtKMetric", + "MRRMetric", + ], ) -> list: """ Compute classification metrics. @@ -39,6 +184,8 @@ def _compute_ranking_metrics( Optional mapping of individual labels to a grouper label. Useful when you need to evaluate performance using labels that differ across datasets and models. k_cutoffs: list[int] The cut-offs (or "k" values) to use when calculating precision@k, recall@k, etc. + metrics_to_compute: list[str] + The list of metrics to return to the user. Returns ---------- @@ -64,7 +211,6 @@ def _compute_ranking_metrics( groundtruths = ( Query( - models.GroundTruth, case( grouper_mappings["label_to_grouper_key"], value=func.concat(models.Label.key, models.Label.value), @@ -87,7 +233,6 @@ def _compute_ranking_metrics( predictions = ( Query( - models.Prediction, # TODO is this deletable? case( grouper_mappings["label_to_grouper_key"], value=func.concat(models.Label.key, models.Label.value), @@ -180,33 +325,6 @@ def _compute_ranking_metrics( ) ).alias() - # calculate reciprocal rankings for MRR - reciprocal_rankings = ( - select( - filtered_rankings.c.grouper_key, - filtered_rankings.c.grouper_value, - filtered_rankings.c.pd_annotation_id.label("annotation_id"), - 1 / func.min(filtered_rankings.c.rank).label("recip_rank"), - ) - .select_from(filtered_rankings) - .group_by( - filtered_rankings.c.grouper_key, - filtered_rankings.c.grouper_value, - filtered_rankings.c.pd_annotation_id, - ) - ) - - # needed to avoid a type error when joining - aliased_rr = reciprocal_rankings.alias() - - # add back any predictions that didn't contain any relevant elements - gts_with_no_predictions = select( - joint.c.grouper_key, - joint.c.grouper_value, - joint.c.gt_annotation_id.label("annotation_id"), - literal(0).label("recip_rank"), - ).where(joint.c.pd_annotation_id.is_(None)) - predictions_with_no_gts = ( select( pd_rankings.c.grouper_key, @@ -217,196 +335,136 @@ def _compute_ranking_metrics( .distinct() .select_from(pd_rankings) .join( - aliased_rr, + filtered_rankings, and_( - pd_rankings.c.grouper_key == aliased_rr.c.grouper_key, - pd_rankings.c.grouper_value == aliased_rr.c.grouper_value, - pd_rankings.c.pd_annotation_id == aliased_rr.c.annotation_id, + pd_rankings.c.grouper_key == filtered_rankings.c.grouper_key, + pd_rankings.c.grouper_value + == filtered_rankings.c.grouper_value, + pd_rankings.c.pd_annotation_id + == filtered_rankings.c.pd_annotation_id, ), isouter=True, ) - .where(aliased_rr.c.annotation_id.is_(None)) + .where(filtered_rankings.c.pd_annotation_id.is_(None)) ) aliased_predictions_with_no_gts = predictions_with_no_gts.alias() - mrr_union = predictions_with_no_gts.union_all( - reciprocal_rankings, gts_with_no_predictions - ) - - # take the mean across grouper keys to arrive at the MRR per key - mrrs_by_key = db.execute( - select( - mrr_union.c.grouper_key, - func.avg(mrr_union.c.recip_rank).label("mrr"), - ).group_by(mrr_union.c.grouper_key) - ).all() - - for grouper_key, mrr in mrrs_by_key: - metrics.append(schemas.MRRMetric(label_key=grouper_key, value=mrr)) - - precision_and_recall_functions = [ - ( - func.sum( - case( - (filtered_rankings.c.rank <= k, 1), - else_=0, - ) - ) - / k - ).label(f"precision@{k}") - for k in k_cutoffs - ] - - recall_at_k_functions = [ - ( - func.sum( - case( - (filtered_rankings.c.rank <= k, 1), - else_=0, - ) - ) - / filtered_rankings.c.number_of_relevant_items - ).label(f"recall@{k}") - for k in k_cutoffs - ] - - # calculate precision@k - calc_recall_and_precision = ( - select( - filtered_rankings.c.grouper_key, - filtered_rankings.c.grouper_value, - filtered_rankings.c.pd_annotation_id, - *precision_and_recall_functions, - *recall_at_k_functions, + if "MRRMetric" in metrics_to_compute: + mrrs_by_key = _calc_mrr( + db=db, + joint=joint, + filtered_rankings=filtered_rankings, + predictions_with_no_gts=predictions_with_no_gts, ) - .select_from(filtered_rankings) - .group_by( - filtered_rankings.c.grouper_key, - filtered_rankings.c.grouper_value, - filtered_rankings.c.pd_annotation_id, - filtered_rankings.c.number_of_relevant_items, - ) - .union_all( # add back predictions that don't have any groundtruths - select( - predictions_with_no_gts.c.grouper_key, - predictions_with_no_gts.c.grouper_value, - predictions_with_no_gts.c.annotation_id, - *(literal(0).label(f"precision@{k}") for k in k_cutoffs), - *(literal(0).label(f"recall@{k}") for k in k_cutoffs), - ).select_from(aliased_predictions_with_no_gts) - ) - ).alias() - - # roll up by k - precision_columns = [ - calc_recall_and_precision.c[f"precision@{k}"] for k in k_cutoffs - ] - recall_columns = [ - calc_recall_and_precision.c[f"recall@{k}"] for k in k_cutoffs - ] - - calc_ap_and_ar = select( - calc_recall_and_precision.c.grouper_key, - calc_recall_and_precision.c.grouper_value, - calc_recall_and_precision.c.pd_annotation_id, - func.sum(sum(precision_columns) / len(precision_columns)).label( - "ap@k" - ), - func.sum(sum(recall_columns) / len(recall_columns)).label("ar@k"), - ).group_by( - calc_recall_and_precision.c.grouper_key, - calc_recall_and_precision.c.grouper_value, - calc_recall_and_precision.c.pd_annotation_id, - ) - # roll up by label key - calc_map_and_mar = select( - calc_ap_and_ar.c.grouper_key, - func.avg(calc_ap_and_ar.c["ap@k"]).label("map@k"), - func.avg(calc_ap_and_ar.c["ar@k"]).label("mar@k"), - ).group_by( - calc_ap_and_ar.c.grouper_key, - ) - - # execute queries - precision_and_recall = db.query(calc_recall_and_precision).all() - ap_and_ar = db.execute(calc_ap_and_ar).all() - map_and_mar = db.execute(calc_map_and_mar).all() + for grouper_key, mrr in mrrs_by_key: + metrics.append(schemas.MRRMetric(label_key=grouper_key, value=mrr)) + + if not set(metrics_to_compute).isdisjoint( + set( + [ + "PrecisionAtKMetric", + "APAtKMetric", + "mAPAtKMetric", + "RecallAtKMetric", + "ARAtKMetric", + "mARAtKMetric", + "MRRMetric", + ] + ) + ): - for metric in precision_and_recall: - key, value, annotation_id, precisions, recalls = ( - metric[0], - metric[1], - metric[2], - metric[3 : 3 + len(k_cutoffs)], - metric[3 + len(k_cutoffs) :], + ( + precision_and_recall, + ap_and_ar, + map_and_mar, + ) = _calc_precision_recall_at_k_metrics( + db=db, + k_cutoffs=k_cutoffs, + filtered_rankings=filtered_rankings, + predictions_with_no_gts=aliased_predictions_with_no_gts, ) - for i, k in enumerate(k_cutoffs): - metrics.append( - schemas.PrecisionAtKMetric( - label=schemas.Label(key=key, value=value), - value=precisions[i], - k=k, - annotation_id=annotation_id, - ) + for metric in precision_and_recall: + key, value, annotation_id, precisions, recalls = ( + metric[0], + metric[1], + metric[2], + metric[3 : 3 + len(k_cutoffs)], + metric[3 + len(k_cutoffs) :], ) - metrics.append( - schemas.RecallAtKMetric( - label=schemas.Label(key=key, value=value), - value=recalls[i], - k=k, - annotation_id=annotation_id, - ) + for i, k in enumerate(k_cutoffs): + if "PrecisionAtKMetric" in metrics_to_compute: + metrics.append( + schemas.PrecisionAtKMetric( + label=schemas.Label(key=key, value=value), + value=precisions[i], + k=k, + annotation_id=annotation_id, + ) + ) + + if "RecallAtKMetric" in metrics_to_compute: + metrics.append( + schemas.RecallAtKMetric( + label=schemas.Label(key=key, value=value), + value=recalls[i], + k=k, + annotation_id=annotation_id, + ) + ) + + for metric in ap_and_ar: + key, value, annotation_id, ap_value, ar_value = ( + metric[0], + metric[1], + metric[2], + metric[3], + metric[4], ) - for metric in ap_and_ar: - key, value, annotation_id, ap_value, ar_value = ( - metric[0], - metric[1], - metric[2], - metric[3], - metric[4], - ) - - metrics.append( - schemas.APAtKMetric( - label=schemas.Label(key=key, value=value), - value=ap_value, - k_cutoffs=k_cutoffs, - annotation_id=annotation_id, - ) - ) + if "APAtKMetric" in metrics_to_compute: + metrics.append( + schemas.APAtKMetric( + label=schemas.Label(key=key, value=value), + value=ap_value, + k_cutoffs=k_cutoffs, + annotation_id=annotation_id, + ) + ) - metrics.append( - schemas.ARAtKMetric( - label=schemas.Label(key=key, value=value), - value=ar_value, - k_cutoffs=k_cutoffs, - annotation_id=annotation_id, - ) - ) + if "ARAtKMetric" in metrics_to_compute: + metrics.append( + schemas.ARAtKMetric( + label=schemas.Label(key=key, value=value), + value=ar_value, + k_cutoffs=k_cutoffs, + annotation_id=annotation_id, + ) + ) - for metric in map_and_mar: - key, map_value, mar_value = (metric[0], metric[1], metric[2]) + for metric in map_and_mar: + key, map_value, mar_value = (metric[0], metric[1], metric[2]) - metrics.append( - schemas.mAPAtKMetric( - label_key=key, - value=map_value, - k_cutoffs=k_cutoffs, - ) - ) + if "mAPAtKMetric" in metrics_to_compute: + metrics.append( + schemas.mAPAtKMetric( + label_key=key, + value=map_value, + k_cutoffs=k_cutoffs, + ) + ) - metrics.append( - schemas.mARAtKMetric( - label_key=key, - value=mar_value, - k_cutoffs=k_cutoffs, - ) - ) + if "mARAtKMetric" in metrics_to_compute: + metrics.append( + schemas.mARAtKMetric( + label_key=key, + value=mar_value, + k_cutoffs=k_cutoffs, + ) + ) return metrics diff --git a/api/valor_api/schemas/evaluation.py b/api/valor_api/schemas/evaluation.py index c56176507..bdb84220f 100644 --- a/api/valor_api/schemas/evaluation.py +++ b/api/valor_api/schemas/evaluation.py @@ -80,7 +80,6 @@ def _validate_by_task_type(cls, values): "`iou_thresholds_to_return` must be a subset of `iou_thresholds_to_compute`" ) case TaskType.RANKING: - # TODO check that we don't need validations pass case _: raise NotImplementedError( diff --git a/integration_tests/client/metrics/test_ranking.py b/integration_tests/client/metrics/test_ranking.py index 9b3f0b761..b5b8dac71 100644 --- a/integration_tests/client/metrics/test_ranking.py +++ b/integration_tests/client/metrics/test_ranking.py @@ -225,12 +225,6 @@ # # assert metrics -# # TODO check that the datum actually matters - -# # TODO check that label key actually matters - -# # TODO what if a label value is shared across multiple keys? need to handle that somehow - # def test_evaluate_relevancy_score_ranking(): # pass From 9b1ee2a8b5dcf85a2fb59225de3295d2387c81a1 Mon Sep 17 00:00:00 2001 From: Nick Date: Tue, 30 Apr 2024 14:24:54 -0600 Subject: [PATCH 13/22] add detailed integration tests --- api/valor_api/backend/__init__.py | 2 + api/valor_api/backend/metrics/__init__.py | 2 + api/valor_api/backend/metrics/ranking.py | 39 +- api/valor_api/crud/_create.py | 2 + api/valor_api/schemas/evaluation.py | 37 +- client/valor/coretypes.py | 8 + client/valor/schemas/evaluation.py | 7 +- .../client/metrics/test_ranking.py | 716 ++++++++++++------ 8 files changed, 560 insertions(+), 253 deletions(-) diff --git a/api/valor_api/backend/__init__.py b/api/valor_api/backend/__init__.py index 9e329c73c..d9926b14d 100644 --- a/api/valor_api/backend/__init__.py +++ b/api/valor_api/backend/__init__.py @@ -34,6 +34,7 @@ from .metrics import ( compute_clf_metrics, compute_detection_metrics, + compute_ranking_metrics, compute_semantic_segmentation_metrics, ) from .query import Query @@ -64,6 +65,7 @@ "compute_clf_metrics", "compute_detection_metrics", "compute_semantic_segmentation_metrics", + "compute_ranking_metrics", "get_paginated_evaluations", "get_evaluation_status", "Query", diff --git a/api/valor_api/backend/metrics/__init__.py b/api/valor_api/backend/metrics/__init__.py index fea3f8f40..c6bbc19ac 100644 --- a/api/valor_api/backend/metrics/__init__.py +++ b/api/valor_api/backend/metrics/__init__.py @@ -1,9 +1,11 @@ from .classification import compute_clf_metrics from .detection import compute_detection_metrics +from .ranking import compute_ranking_metrics from .segmentation import compute_semantic_segmentation_metrics __all__ = [ "compute_clf_metrics", "compute_detection_metrics", "compute_semantic_segmentation_metrics", + "compute_ranking_metrics", ] diff --git a/api/valor_api/backend/metrics/ranking.py b/api/valor_api/backend/metrics/ranking.py index 0949b82f9..5e769a594 100644 --- a/api/valor_api/backend/metrics/ranking.py +++ b/api/valor_api/backend/metrics/ranking.py @@ -158,7 +158,7 @@ def _compute_ranking_metrics( groundtruth_filter: schemas.Filter, label_map: LabelMapType | None = None, k_cutoffs: list[int] = [1, 3, 5], - metrics_to_compute: list[str] = [ + metrics_to_return: list[str] = [ "MRRMetric", "PrecisionAtKMetric", "APAtKMetric", @@ -184,7 +184,7 @@ def _compute_ranking_metrics( Optional mapping of individual labels to a grouper label. Useful when you need to evaluate performance using labels that differ across datasets and models. k_cutoffs: list[int] The cut-offs (or "k" values) to use when calculating precision@k, recall@k, etc. - metrics_to_compute: list[str] + metrics_to_return: list[str] The list of metrics to return to the user. Returns @@ -350,7 +350,7 @@ def _compute_ranking_metrics( aliased_predictions_with_no_gts = predictions_with_no_gts.alias() - if "MRRMetric" in metrics_to_compute: + if "MRRMetric" in metrics_to_return: mrrs_by_key = _calc_mrr( db=db, joint=joint, @@ -361,7 +361,7 @@ def _compute_ranking_metrics( for grouper_key, mrr in mrrs_by_key: metrics.append(schemas.MRRMetric(label_key=grouper_key, value=mrr)) - if not set(metrics_to_compute).isdisjoint( + if not set(metrics_to_return).isdisjoint( set( [ "PrecisionAtKMetric", @@ -396,7 +396,7 @@ def _compute_ranking_metrics( ) for i, k in enumerate(k_cutoffs): - if "PrecisionAtKMetric" in metrics_to_compute: + if "PrecisionAtKMetric" in metrics_to_return: metrics.append( schemas.PrecisionAtKMetric( label=schemas.Label(key=key, value=value), @@ -406,7 +406,7 @@ def _compute_ranking_metrics( ) ) - if "RecallAtKMetric" in metrics_to_compute: + if "RecallAtKMetric" in metrics_to_return: metrics.append( schemas.RecallAtKMetric( label=schemas.Label(key=key, value=value), @@ -425,7 +425,7 @@ def _compute_ranking_metrics( metric[4], ) - if "APAtKMetric" in metrics_to_compute: + if "APAtKMetric" in metrics_to_return: metrics.append( schemas.APAtKMetric( label=schemas.Label(key=key, value=value), @@ -435,7 +435,7 @@ def _compute_ranking_metrics( ) ) - if "ARAtKMetric" in metrics_to_compute: + if "ARAtKMetric" in metrics_to_return: metrics.append( schemas.ARAtKMetric( label=schemas.Label(key=key, value=value), @@ -448,7 +448,7 @@ def _compute_ranking_metrics( for metric in map_and_mar: key, map_value, mar_value = (metric[0], metric[1], metric[2]) - if "mAPAtKMetric" in metrics_to_compute: + if "mAPAtKMetric" in metrics_to_return: metrics.append( schemas.mAPAtKMetric( label_key=key, @@ -457,7 +457,7 @@ def _compute_ranking_metrics( ) ) - if "mARAtKMetric" in metrics_to_compute: + if "mARAtKMetric" in metrics_to_return: metrics.append( schemas.mARAtKMetric( label_key=key, @@ -504,6 +504,23 @@ def compute_ranking_metrics( groundtruth_filter.task_types = [parameters.task_type] prediction_filter.task_types = [parameters.task_type] + # if the user doesn't specify any metrics, then return all of them + if parameters.metrics_to_return is None: + parameters.metrics_to_return = [ + "MRRMetric", + "PrecisionAtKMetric", + "APAtKMetric", + "mAPAtKMetric", + "RecallAtKMetric", + "ARAtKMetric", + "mARAtKMetric", + "MRRMetric", + ] + + # if the user doesn't specify any k-cutoffs, then use [1, 3, 5] as the default + if parameters.k_cutoffs is None: + parameters.k_cutoffs = [1, 3, 5] + log_evaluation_item_counts( db=db, evaluation=evaluation, @@ -516,6 +533,8 @@ def compute_ranking_metrics( prediction_filter=prediction_filter, groundtruth_filter=groundtruth_filter, label_map=parameters.label_map, + metrics_to_return=parameters.metrics_to_return, + k_cutoffs=parameters.k_cutoffs, ) metric_mappings = create_metric_mappings( diff --git a/api/valor_api/crud/_create.py b/api/valor_api/crud/_create.py index 375bfd16c..e02e3d945 100644 --- a/api/valor_api/crud/_create.py +++ b/api/valor_api/crud/_create.py @@ -134,6 +134,8 @@ def create_or_get_evaluations( compute_func = ( backend.compute_semantic_segmentation_metrics ) + case enums.TaskType.RANKING: + compute_func = backend.compute_ranking_metrics case _: raise RuntimeError diff --git a/api/valor_api/schemas/evaluation.py b/api/valor_api/schemas/evaluation.py index bdb84220f..408f03113 100644 --- a/api/valor_api/schemas/evaluation.py +++ b/api/valor_api/schemas/evaluation.py @@ -30,6 +30,10 @@ class EvaluationParameters(BaseModel): A boolean which determines whether we calculate precision-recall curves or not. pr_curve_iou_threshold: float, optional The IOU threshold to use when calculating precision-recall curves for object detection tasks. Defaults to 0.5. Does nothing when compute_pr_curves is set to False or None. + metrics_to_return: list[str], optional + The list of metric names to return to the user. + k_cutoffs: list[int], optional + The list of cut-offs to use when calculating precision@k, recall@k, etc. """ task_type: TaskType @@ -41,6 +45,8 @@ class EvaluationParameters(BaseModel): recall_score_threshold: float | None = 0 compute_pr_curves: bool | None = None pr_curve_iou_threshold: float | None = 0.5 + metrics_to_return: list[str] | None = None + k_cutoffs: list[int] | None = None # pydantic setting model_config = ConfigDict(extra="forbid") @@ -64,6 +70,10 @@ def _validate_by_task_type(cls, values): raise ValueError( "`iou_thresholds_to_return` should only be used for object detection evaluations." ) + if values.metrics_to_return: + raise NotImplementedError( + f"`metrics_to_return` isn't implemented for task type {values.task_type}." + ) case TaskType.OBJECT_DETECTION: if not 0 <= values.pr_curve_iou_threshold <= 1: raise ValueError( @@ -79,8 +89,33 @@ def _validate_by_task_type(cls, values): raise ValueError( "`iou_thresholds_to_return` must be a subset of `iou_thresholds_to_compute`" ) + if values.metrics_to_return: + raise NotImplementedError( + f"`metrics_to_return` isn't implemented for task type {values.task_type}." + ) case TaskType.RANKING: - pass + + allowed_metrics = [ + "MRRMetric", + "PrecisionAtKMetric", + "APAtKMetric", + "mAPAtKMetric", + "RecallAtKMetric", + "ARAtKMetric", + "mARAtKMetric", + "MRRMetric", + ] + + if values.metrics_to_return is not None and not all( + [ + metric_name in allowed_metrics + for metric_name in values.metrics_to_return + ] + ): + raise ValueError( + f"`metrics_to_return` should only include the following strings: {allowed_metrics}" + ) + case _: raise NotImplementedError( f"Task type `{values.task_type}` is unsupported." diff --git a/client/valor/coretypes.py b/client/valor/coretypes.py index 4fd8b26c6..c33adf513 100644 --- a/client/valor/coretypes.py +++ b/client/valor/coretypes.py @@ -1084,6 +1084,8 @@ def evaluate_ranking( filter_by: Optional[FilterType] = None, label_map: Optional[Dict[Label, Label]] = None, allow_retries: bool = False, + metrics_to_return: Optional[list[str]] = None, + k_cutoffs: Optional[list[int]] = None, ) -> Evaluation: """ Start a ranking evaluation job. @@ -1098,6 +1100,10 @@ def evaluate_ranking( Optional mapping of individual labels to a grouper label. Useful when you need to evaluate performance using labels that differ across datasets and models. allow_retries : bool, default = False Option to retry previously failed evaluations. + metrics_to_return : list[str], optional + The list of metrics to include in the returned evaluation. + k_cutoffs : list[int], optional + The list of cut-offs to use when calculating precision@k, recall@k, etc. Returns ------- @@ -1117,6 +1123,8 @@ def evaluate_ranking( parameters=EvaluationParameters( task_type=TaskType.RANKING, label_map=self._create_label_map(label_map=label_map), + metrics_to_return=metrics_to_return, + k_cutoffs=k_cutoffs, ), meta={}, ) diff --git a/client/valor/schemas/evaluation.py b/client/valor/schemas/evaluation.py index 20eca33ac..e695ddca6 100644 --- a/client/valor/schemas/evaluation.py +++ b/client/valor/schemas/evaluation.py @@ -24,7 +24,10 @@ class EvaluationParameters: A boolean which determines whether we calculate precision-recall curves or not. pr_curve_iou_threshold: float, optional The IOU threshold to use when calculating precision-recall curves for object detection tasks. Defaults to 0.5. Does nothing when compute_pr_curves is set to False or None. - + metrics_to_return: list[str], optional + The list of metric names to return to the user. + k_cutoffs: list[int], optional + The list of cut-offs to use when calculating precision@k, recall@k, etc. """ task_type: TaskType @@ -37,6 +40,8 @@ class EvaluationParameters: recall_score_threshold: float = 0 compute_pr_curves: bool = False pr_curve_iou_threshold: float = 0.5 + metrics_to_return: Optional[List[str]] = None + k_cutoffs: Optional[list[int]] = None @dataclass diff --git a/integration_tests/client/metrics/test_ranking.py b/integration_tests/client/metrics/test_ranking.py index b5b8dac71..2dd7aed2e 100644 --- a/integration_tests/client/metrics/test_ranking.py +++ b/integration_tests/client/metrics/test_ranking.py @@ -1,241 +1,475 @@ -# """ These integration tests should be run with a back end at http://localhost:8000 -# that is no auth -# """ - -# import pytest - -# from valor import ( -# Annotation, -# Client, -# Dataset, -# Datum, -# GroundTruth, -# Label, -# Model, -# Prediction, -# ) -# from valor.enums import TaskType - - -# @pytest.fixture -# def gt_correct_class_ranking(): -# # input option #1: a list of strings denoting all of the potential options. when users pass in a list of strings, they won't be able to get back NDCG -# return [ -# GroundTruth( -# datum=Datum(uid="uid1", metadata={}), -# annotations=[ -# Annotation( -# task_type=TaskType.RANKING, -# labels=[ -# Label(key="k1", value="gt"), -# ], -# ranking=[ -# "relevant_doc1", -# "relevant_doc2", -# "relevant_doc3", -# "relevant_doc4", -# ], -# ) -# ], -# ), -# GroundTruth( -# datum=Datum(uid="uid2", metadata={}), -# annotations=[ -# Annotation( -# task_type=TaskType.RANKING, -# labels=[ -# Label(key="k2", value="gt"), -# ], -# ranking=[ -# "1", -# "2", -# "3", -# "4", -# ], -# ) -# ], -# ), -# ] - - -# @pytest.fixture -# def pd_correct_class_ranking(): -# return [ -# Prediction( -# datum=Datum(uid="uid1", metadata={}), -# annotations=[ -# Annotation( -# task_type=TaskType.RANKING, -# labels=[ -# Label(key="k1", value="gt"), -# ], -# ranking=[ -# "foo", -# "bar", -# "relevant_doc2", -# ], -# ) -# ], -# ), -# Prediction( -# datum=Datum(uid="uid1", metadata={}), -# annotations=[ -# Annotation( -# task_type=TaskType.RANKING, -# labels=[ -# Label(key="k1", value="gt"), -# ], -# ranking=[ -# "bbq", -# "iguana", -# ], -# ) -# ], -# ), -# Prediction( -# datum=Datum(uid="uid1", metadata={}), -# annotations=[ -# Annotation( -# task_type=TaskType.RANKING, -# labels=[ -# Label(key="k1", value="gt"), -# ], -# ranking=[ -# "foo", -# "relevant_doc4", -# "relevant_doc1", -# ], -# ) -# ], -# ), -# # Prediction( -# # datum=Datum(uid="uid1", metadata={}), -# # annotations=[ -# # Annotation( -# # task_type=TaskType.RANKING, -# # labels=[ -# # Label(key="k1", value="gt"), -# # ], -# # ranking=[ -# # 0.4, -# # 0.3, -# # 0.2, -# # ], # error case: length of this prediction doesn't match ground truth we're comparing against -# # ) -# # ], -# # ), -# # Prediction( -# # datum=Datum(uid="uid1", metadata={}), -# # annotations=[ -# # Annotation( -# # task_type=TaskType.RANKING, -# # labels=[ -# # Label(key="k1", value="gt"), -# # ], -# # ranking=[ -# # 0.4, -# # 0.3, -# # 0.2, -# # 0.2, -# # ], # error case: weights sum to greater than one -# # ) -# # ], -# # ), -# # Prediction( -# # datum=Datum(uid="uid1", metadata={}), -# # annotations=[ -# # Annotation( -# # task_type=TaskType.RANKING, -# # labels=[ -# # Label(key="k1", value="gt"), -# # ], -# # ranking=[ -# # 0.4, -# # 0.3, -# # 0.2, -# # 0.1, -# # ], # ranking by relevance scores -# # ) -# # ], -# # ), -# # Prediction( -# # datum=Datum(uid="uid1", metadata={}), -# # annotations=[ -# # Annotation( -# # task_type=TaskType.RANKING, -# # labels=[ -# # Label(key="k2", value="gt"), -# # ], -# # ranking=[ -# # "a", -# # "b", -# # "c", -# # "d", -# # ], # perfect ranking -# # ) -# # ], -# # ), -# # Prediction( -# # datum=Datum(uid="uid2", metadata={}), -# # annotations=[ -# # Annotation( -# # task_type=TaskType.RANKING, -# # labels=[ -# # Label(key="k1", value="gt"), -# # ], -# # ranking=[ -# # "3", -# # "2", -# # "1", -# # "4", -# # ], -# # ) -# # ], -# # ), -# ] - - -# def test_evaluate_correct_class_ranking( -# client: Client, -# dataset_name: str, -# model_name: str, -# gt_correct_class_ranking: list, -# pd_correct_class_ranking: list, -# ): -# dataset = Dataset.create(dataset_name) -# model = Model.create(model_name) - -# for gt in gt_correct_class_ranking: -# dataset.add_groundtruth(gt) - -# dataset.finalize() - -# for pred in pd_correct_class_ranking: -# model.add_prediction(dataset, pred) - -# model.finalize_inferences(dataset) - -# eval_job = model.evaluate_ranking(dataset) - -# assert eval_job.id - -# # assert eval_job.wait_for_completion(timeout=30) == EvaluationStatus.DONE - -# # metrics = eval_job.metrics - -# # assert metrics - - -# def test_evaluate_relevancy_score_ranking(): -# pass - - -# def test_evaluate_embedding_ranking(): -# pass - - -# def test_evaluate_mixed_rankings(): -# pass - - -# # TODO test that each key only has one groundtruth +""" These integration tests should be run with a back end at http://localhost:8000 +that is no auth +""" + +import pytest + +from valor import ( + Annotation, + Client, + Dataset, + Datum, + GroundTruth, + Label, + Model, + Prediction, +) +from valor.enums import EvaluationStatus, TaskType + + +@pytest.fixture +def ranking_gts(): + return [ + GroundTruth( + datum=Datum(uid="uid1", metadata={}), + annotations=[ + Annotation( + task_type=TaskType.RANKING, + labels=[ + Label(key="k1", value="v1"), + ], + ranking=[ + "relevant_doc1", + "relevant_doc2", + "relevant_doc3", + "relevant_doc4", + ], + ) + ], + ), + GroundTruth( + datum=Datum(uid="uid2", metadata={}), + annotations=[ + Annotation( + task_type=TaskType.RANKING, + labels=[ + Label(key="k2", value="v2"), + ], + ranking=[ + "1", + "2", + "3", + "4", + ], + ) + ], + ), + ] + + +@pytest.fixture +def ranking_pds(): + return [ + Prediction( + datum=Datum(uid="uid1", metadata={}), + annotations=[ + Annotation( + task_type=TaskType.RANKING, + labels=[ + Label(key="k1", value="v1"), + ], + ranking=[ + "foo", + "bar", + "relevant_doc2", + ], + ), + Annotation( + task_type=TaskType.RANKING, + labels=[ + Label(key="k1", value="v1"), + ], + ranking=[ + "foo", + "relevant_doc4", + "relevant_doc1", + ], + ), + # this prediction will be ignored since it doesn't have a groundtruth with a matching key/value + Annotation( + task_type=TaskType.RANKING, + labels=[ + Label(key="k1", value="v2"), + ], + ranking=["bbq", "iguana", "relevant_doc1"], + ), + Annotation( + task_type=TaskType.RANKING, + labels=[ + Label(key="k3", value="k1"), + ], + ranking=[ + "relevant_doc2", + "foo", + "relevant_doc1", + ], + ), + ], + ), + Prediction( + datum=Datum(uid="uid2", metadata={}), + annotations=[ + Annotation( + task_type=TaskType.RANKING, + labels=[ + Label(key="k2", value="v2"), + ], + ranking=[ + "4", + "1", + ], + ), + Annotation( + task_type=TaskType.RANKING, + labels=[ + Label(key="k2", value="v2"), + ], + ranking=[ + "foo", + "bar", + ], + ), + ], + ), + ] + + +def test_evaluate_correct_class_ranking( + client: Client, + dataset_name: str, + model_name: str, + ranking_gts: list, + ranking_pds: list, +): + dataset = Dataset.create(dataset_name) + model = Model.create(model_name) + + for gt in ranking_gts: + dataset.add_groundtruth(gt) + + dataset.finalize() + + for pred in ranking_pds: + model.add_prediction(dataset, pred) + + model.finalize_inferences(dataset) + + eval_job = model.evaluate_ranking(dataset) + + assert eval_job.id + + assert eval_job.wait_for_completion(timeout=30) == EvaluationStatus.DONE + + metrics = eval_job.metrics + + assert metrics + + expected_metrics = [ + # parameters are left in for future revivew, but can't be used for assertions as the annotation_id varies across runs + { + "type": "MRRMetric", + # "parameters": {"label_key": "k1"}, + "value": 0.4166666666666667, + }, # (1/3 + 1/2)/2 + { + "type": "MRRMetric", + # "parameters": {"label_key": "k2"}, + "value": 0.5, + }, # (1 + 0) / 2 + { + "type": "PrecisionAtKMetric", + # "parameters": {"k": 1, "annotation_id": 309}, + "value": 0.0, + "label": {"key": "k1", "value": "v1"}, + }, + { + "type": "RecallAtKMetric", + # "parameters": {"k": 1, "annotation_id": 309}, + "value": 0.0, + "label": {"key": "k1", "value": "v1"}, + }, + { + "type": "PrecisionAtKMetric", + # "parameters": {"k": 3, "annotation_id": 309}, + "value": 0.3333333333333333, + "label": {"key": "k1", "value": "v1"}, + }, + { + "type": "RecallAtKMetric", + # "parameters": {"k": 3, "annotation_id": 309}, + "value": 0.25, + "label": {"key": "k1", "value": "v1"}, + }, + { + "type": "PrecisionAtKMetric", + # "parameters": {"k": 5, "annotation_id": 309}, + "value": 0.2, + "label": {"key": "k1", "value": "v1"}, + }, + { + "type": "RecallAtKMetric", + # "parameters": {"k": 5, "annotation_id": 309}, + "value": 0.25, + "label": {"key": "k1", "value": "v1"}, + }, + { + "type": "PrecisionAtKMetric", + # "parameters": {"k": 1, "annotation_id": 310}, + "value": 0.0, + "label": {"key": "k1", "value": "v1"}, + }, + { + "type": "RecallAtKMetric", + # "parameters": {"k": 1, "annotation_id": 310}, + "value": 0.0, + "label": {"key": "k1", "value": "v1"}, + }, + { + "type": "PrecisionAtKMetric", + # "parameters": {"k": 3, "annotation_id": 310}, + "value": 0.6666666666666666, + "label": {"key": "k1", "value": "v1"}, + }, + { + "type": "RecallAtKMetric", + # "parameters": {"k": 3, "annotation_id": 310}, + "value": 0.5, + "label": {"key": "k1", "value": "v1"}, + }, + { + "type": "PrecisionAtKMetric", + # "parameters": {"k": 5, "annotation_id": 310}, + "value": 0.4, + "label": {"key": "k1", "value": "v1"}, + }, + { + "type": "RecallAtKMetric", + # "parameters": {"k": 5, "annotation_id": 310}, + "value": 0.5, + "label": {"key": "k1", "value": "v1"}, + }, + { + "type": "PrecisionAtKMetric", + # "parameters": {"k": 1, "annotation_id": 313}, + "value": 1.0, + "label": {"key": "k2", "value": "v2"}, + }, + { + "type": "RecallAtKMetric", + # "parameters": {"k": 1, "annotation_id": 313}, + "value": 0.25, + "label": {"key": "k2", "value": "v2"}, + }, + { + "type": "PrecisionAtKMetric", + # "parameters": {"k": 3, "annotation_id": 313}, + "value": 0.6666666666666666, + "label": {"key": "k2", "value": "v2"}, + }, + { + "type": "RecallAtKMetric", + # "parameters": {"k": 3, "annotation_id": 313}, + "value": 0.5, + "label": {"key": "k2", "value": "v2"}, + }, + { + "type": "PrecisionAtKMetric", + # "parameters": {"k": 5, "annotation_id": 313}, + "value": 0.4, + "label": {"key": "k2", "value": "v2"}, + }, + { + "type": "RecallAtKMetric", + # "parameters": {"k": 5, "annotation_id": 313}, + "value": 0.5, + "label": {"key": "k2", "value": "v2"}, + }, + { + "type": "PrecisionAtKMetric", + # "parameters": {"k": 1, "annotation_id": 314}, + "value": 0.0, + "label": {"key": "k2", "value": "v2"}, + }, + { + "type": "RecallAtKMetric", + # "parameters": {"k": 1, "annotation_id": 314}, + "value": 0.0, + "label": {"key": "k2", "value": "v2"}, + }, + { + "type": "PrecisionAtKMetric", + # "parameters": {"k": 3, "annotation_id": 314}, + "value": 0.0, + "label": {"key": "k2", "value": "v2"}, + }, + { + "type": "RecallAtKMetric", + # "parameters": {"k": 3, "annotation_id": 314}, + "value": 0.0, + "label": {"key": "k2", "value": "v2"}, + }, + { + "type": "PrecisionAtKMetric", + # "parameters": {"k": 5, "annotation_id": 314}, + "value": 0.0, + "label": {"key": "k2", "value": "v2"}, + }, + { + "type": "RecallAtKMetric", + # "parameters": {"k": 5, "annotation_id": 314}, + "value": 0.0, + "label": {"key": "k2", "value": "v2"}, + }, + { + "type": "APAtKMetric", + # "parameters": {"k_cutoffs": [1, 3, 5], "annotation_id": 309}, + "value": 0.17777777777777778, + "label": {"key": "k1", "value": "v1"}, + }, + { + "type": "ARAtKMetric", + # "parameters": {"k_cutoffs": [1, 3, 5], "annotation_id": 309}, + "value": 0.16666666666666666, + "label": {"key": "k1", "value": "v1"}, + }, + { + "type": "APAtKMetric", + # "parameters": {"k_cutoffs": [1, 3, 5], "annotation_id": 314}, + "value": 0.0, + "label": {"key": "k2", "value": "v2"}, + }, + { + "type": "ARAtKMetric", + # "parameters": {"k_cutoffs": [1, 3, 5], "annotation_id": 314}, + "value": 0.0, + "label": {"key": "k2", "value": "v2"}, + }, + { + "type": "APAtKMetric", + # "parameters": {"k_cutoffs": [1, 3, 5], "annotation_id": 310}, + "value": 0.35555555555555557, + "label": {"key": "k1", "value": "v1"}, + }, + { + "type": "ARAtKMetric", + # "parameters": {"k_cutoffs": [1, 3, 5], "annotation_id": 310}, + "value": 0.3333333333333333, + "label": {"key": "k1", "value": "v1"}, + }, + { + "type": "APAtKMetric", + # "parameters": {"k_cutoffs": [1, 3, 5], "annotation_id": 313}, + "value": 0.6888888888888889, + "label": {"key": "k2", "value": "v2"}, + }, + { + "type": "ARAtKMetric", + # "parameters": {"k_cutoffs": [1, 3, 5], "annotation_id": 313}, + "value": 0.4166666666666667, + "label": {"key": "k2", "value": "v2"}, + }, + { + "type": "mAPAtKMetric", + # "parameters": {"k_cutoffs": [1, 3, 5], "label_key": "k1"}, + "value": 0.26666666666666666, # ((0 + 1/3 + 1/5)/3 + (0 + 2/3 + 2/5)/3)/2 + }, + { + "type": "mARAtKMetric", + # "parameters": {"k_cutoffs": [1, 3, 5], "label_key": "k1"}, + "value": 0.25, + }, + { + "type": "mAPAtKMetric", + # "parameters": {"k_cutoffs": [1, 3, 5], "label_key": "k2"}, + "value": 0.34444444444444444, + }, + { + "type": "mARAtKMetric", + # "parameters": {"k_cutoffs": [1, 3, 5], "label_key": "k2"}, + "value": 0.20833333333333334, # ((1/4 + 2/4 + 2/4)/3 + (0 + 0 + 0)/3)/2 + }, + ] + + for metric in metrics: + metric.pop("parameters") + assert metric in expected_metrics + + for metric in expected_metrics: + assert metric in metrics + + # test label map with a reduced number of metrics + label_mapping = { + Label(key="k2", value="v2"): Label(key="k1", value="v1"), + Label(key="k1", value="v2"): Label(key="k1", value="v1"), + } + + eval_job = model.evaluate_ranking( + dataset, + label_map=label_mapping, + metrics_to_return=["MRRMetric", "PrecisionAtKMetric"], + k_cutoffs=[3], + ) + + assert eval_job.id + + assert eval_job.wait_for_completion(timeout=30) == EvaluationStatus.DONE + + metrics = eval_job.metrics + + assert metrics + + expected_metrics = [ + { + "type": "MRRMetric", + # "parameters": {"label_key": "k1"}, + "value": 0.43333333333333335, + }, # (1/3 + 1/2 + 1/3 + 0 + 1) / 5 + { + "type": "PrecisionAtKMetric", + "value": 0.3333333333333333, + "label": {"key": "k1", "value": "v1"}, + }, + { + "type": "PrecisionAtKMetric", + "value": 0.6666666666666666, + "label": {"key": "k1", "value": "v1"}, + }, + { + "type": "PrecisionAtKMetric", + "value": 0.3333333333333333, + "label": {"key": "k1", "value": "v1"}, + }, + { + "type": "PrecisionAtKMetric", + "value": 0.6666666666666666, + "label": {"key": "k1", "value": "v1"}, + }, + { + "type": "PrecisionAtKMetric", + "value": 0.0, + "label": {"key": "k1", "value": "v1"}, + }, + ] + + for metric in metrics: + metric.pop("parameters") + assert metric in expected_metrics + + for metric in expected_metrics: + assert metric in metrics + + +def test_evaluate_relevancy_score_ranking(): + pass + + +def test_evaluate_embedding_ranking(): + pass + + +def test_evaluate_mixed_rankings(): + pass + + +# TODO test that each key only has one groundtruth +# TODO test bad k_cutoffs, bad metric lists From c4de2910778aa13a55c2f0565734bb0ca6a2015f Mon Sep 17 00:00:00 2001 From: Nick Date: Tue, 30 Apr 2024 14:42:18 -0600 Subject: [PATCH 14/22] add error case tests --- .../client/metrics/test_ranking.py | 64 ++++++++++++++++--- 1 file changed, 55 insertions(+), 9 deletions(-) diff --git a/integration_tests/client/metrics/test_ranking.py b/integration_tests/client/metrics/test_ranking.py index 2dd7aed2e..2d42e7bec 100644 --- a/integration_tests/client/metrics/test_ranking.py +++ b/integration_tests/client/metrics/test_ranking.py @@ -15,6 +15,7 @@ Prediction, ) from valor.enums import EvaluationStatus, TaskType +from valor.exceptions import ClientException @pytest.fixture @@ -134,7 +135,7 @@ def ranking_pds(): ] -def test_evaluate_correct_class_ranking( +def test_evaluate_ranking( client: Client, dataset_name: str, model_name: str, @@ -459,17 +460,62 @@ def test_evaluate_correct_class_ranking( assert metric in metrics -def test_evaluate_relevancy_score_ranking(): - pass +def test_evaluate_ranking_error_cases( + client: Client, + dataset_name: str, + model_name: str, + ranking_gts: list, + ranking_pds: list, +): + dataset = Dataset.create(dataset_name) + model = Model.create(model_name) + + for gt in ranking_gts: + dataset.add_groundtruth(gt) + + dataset.finalize() + + for pred in ranking_pds: + model.add_prediction(dataset, pred) + + model.finalize_inferences(dataset) + + # test bad k_cutoffs + with pytest.raises(ClientException): + model.evaluate_ranking(dataset, k_cutoffs="a") + + with pytest.raises(ClientException): + model.evaluate_ranking(dataset, k_cutoffs=["a"]) + + with pytest.raises(ClientException): + model.evaluate_ranking(dataset, k_cutoffs=[0.1, 0.2]) + + with pytest.raises(ClientException): + model.evaluate_ranking(dataset, k_cutoffs=1) + + # test bad metric names + with pytest.raises(ClientException): + model.evaluate_ranking(dataset, metrics_to_return=["fake_name"]) + with pytest.raises(ClientException): + model.evaluate_ranking(dataset, metrics_to_return=[1]) -def test_evaluate_embedding_ranking(): - pass + with pytest.raises(ClientException): + model.evaluate_ranking(dataset, metrics_to_return="fake_name") + with pytest.raises(ClientException): + model.evaluate_ranking( + dataset, metrics_to_return=["MRRMetric", "fake_name"] + ) -def test_evaluate_mixed_rankings(): - pass + # test bad label maps + with pytest.raises(TypeError): + model.evaluate_ranking(dataset, label_map=["foo", "bar"]) + with pytest.raises(TypeError): + model.evaluate_ranking(dataset, label_map={"foo": "bar"}) -# TODO test that each key only has one groundtruth -# TODO test bad k_cutoffs, bad metric lists + with pytest.raises(TypeError): + model.evaluate_ranking( + dataset, label_map={Label(key="foo", value="bar"): "bar"} + ) From 6947103a627d29ec3fd06e823aa846f80faa2ed3 Mon Sep 17 00:00:00 2001 From: Nick Date: Tue, 30 Apr 2024 14:45:03 -0600 Subject: [PATCH 15/22] fix type error --- client/valor/schemas/evaluation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/valor/schemas/evaluation.py b/client/valor/schemas/evaluation.py index e695ddca6..424103bca 100644 --- a/client/valor/schemas/evaluation.py +++ b/client/valor/schemas/evaluation.py @@ -41,7 +41,7 @@ class EvaluationParameters: compute_pr_curves: bool = False pr_curve_iou_threshold: float = 0.5 metrics_to_return: Optional[List[str]] = None - k_cutoffs: Optional[list[int]] = None + k_cutoffs: Optional[List[int]] = None @dataclass From d9d8663ce0850c249237815329f1c37b7c8183bc Mon Sep 17 00:00:00 2001 From: Nick Date: Tue, 30 Apr 2024 23:33:51 -0600 Subject: [PATCH 16/22] check error cases --- api/valor_api/schemas/types.py | 4 +-- client/valor/schemas/symbolic/collections.py | 6 ++-- client/valor/schemas/symbolic/types.py | 10 ++---- .../client/datatype/test_data_generation.py | 2 ++ .../client/metrics/test_detection.py | 12 +++++++ .../client/metrics/test_ranking.py | 33 +++++++++++++++++++ 6 files changed, 55 insertions(+), 12 deletions(-) diff --git a/api/valor_api/schemas/types.py b/api/valor_api/schemas/types.py index 2dcac79d1..f55debb7c 100644 --- a/api/valor_api/schemas/types.py +++ b/api/valor_api/schemas/types.py @@ -322,7 +322,7 @@ class Annotation(BaseModel): A raster to assign to the 'Annotation'. embedding: list[float], optional A jsonb to assign to the 'Annotation'. - ranking: Union[List[str], List[float], None], optional + ranking: list[str], optional A list of strings or a list of floats representing an ordered ranking. """ @@ -334,7 +334,7 @@ class Annotation(BaseModel): polygon: Polygon | None = None raster: Raster | None = None embedding: list[float] | None = None - ranking: list | None = None + ranking: list[str] | None = None model_config = ConfigDict(extra="forbid") @model_validator(mode="after") diff --git a/client/valor/schemas/symbolic/collections.py b/client/valor/schemas/symbolic/collections.py index 37021ef6b..116162302 100644 --- a/client/valor/schemas/symbolic/collections.py +++ b/client/valor/schemas/symbolic/collections.py @@ -262,7 +262,7 @@ class Annotation(StaticCollection): A raster to assign to the `Annotation`. embedding: List[float], optional An embedding, described by a list of values with type float and a maximum length of 16,000. - ranking: Union[List[str], List[float], None], optional + ranking: List[str], optional A list of strings or a list of floats representing an ordered ranking. Examples @@ -344,7 +344,7 @@ def __init__( polygon: Optional[Polygon] = None, raster: Optional[Raster] = None, embedding: Optional[Embedding] = None, - ranking: Union[List[str], List[float], None] = None, + ranking: Optional[List[str]] = None, ): """ Constructs an annotation. @@ -365,7 +365,7 @@ def __init__( A raster annotation. embedding: List[float], optional An embedding, described by a list of values with type float and a maximum length of 16,000. - ranking: Union[List[str], List[float], None], optional + ranking: List[str], optional A list of strings or a list of floats representing an ordered ranking. """ super().__init__( diff --git a/client/valor/schemas/symbolic/types.py b/client/valor/schemas/symbolic/types.py index ad343231f..0dfe78837 100644 --- a/client/valor/schemas/symbolic/types.py +++ b/client/valor/schemas/symbolic/types.py @@ -2007,7 +2007,7 @@ class RankingArray(Variable): A list of rankings or reference scores. """ - def __init__(self, value: typing.List): + def __init__(self, value: typing.List[str]): """ Initializes a ranking list. @@ -2039,14 +2039,10 @@ def __validate__(cls, value: typing.Any): If the value type is not supported. """ contains_all_strings = all(isinstance(item, str) for item in value) - contains_all_floats = all(isinstance(item, float) for item in value) - if ( - not isinstance(value, list) - or sum([contains_all_floats, contains_all_strings]) != 1 - ): + if not isinstance(value, list) or not contains_all_strings: raise TypeError( - f"Expected type 'Optional[Union[List[float], List[str]]]' received type '{type(value)}'" + f"Expected ranking array to be of type 'Optional[List[str]]' received type '{type(value)}'" ) elif len(value) < 1: raise ValueError("RankingArray should have at least one dimension") diff --git a/integration_tests/client/datatype/test_data_generation.py b/integration_tests/client/datatype/test_data_generation.py index 49ffc4075..3597d537a 100644 --- a/integration_tests/client/datatype/test_data_generation.py +++ b/integration_tests/client/datatype/test_data_generation.py @@ -413,6 +413,8 @@ def test_generate_prediction_data(client: Client): "recall_score_threshold": 0.0, "compute_pr_curves": False, "pr_curve_iou_threshold": 0.5, + "k_cutoffs": None, + "metrics_to_return": None, }, "meta": {}, } diff --git a/integration_tests/client/metrics/test_detection.py b/integration_tests/client/metrics/test_detection.py index cd358dab4..dcf597347 100644 --- a/integration_tests/client/metrics/test_detection.py +++ b/integration_tests/client/metrics/test_detection.py @@ -148,6 +148,8 @@ def test_evaluate_detection( "recall_score_threshold": 0.0, "compute_pr_curves": False, "pr_curve_iou_threshold": 0.5, + "k_cutoffs": None, + "metrics_to_return": None, }, "status": EvaluationStatus.DONE.value, "metrics": expected_metrics, @@ -258,6 +260,8 @@ def test_evaluate_detection( "recall_score_threshold": 0.0, "compute_pr_curves": False, "pr_curve_iou_threshold": 0.5, + "k_cutoffs": None, + "metrics_to_return": None, }, "status": EvaluationStatus.DONE.value, "metrics": expected_metrics, @@ -308,6 +312,8 @@ def test_evaluate_detection( "recall_score_threshold": 0.0, "compute_pr_curves": False, "pr_curve_iou_threshold": 0.5, + "k_cutoffs": None, + "metrics_to_return": None, }, # check metrics below "status": EvaluationStatus.DONE.value, @@ -356,6 +362,8 @@ def test_evaluate_detection( "recall_score_threshold": 0.0, "compute_pr_curves": False, "pr_curve_iou_threshold": 0.5, + "k_cutoffs": None, + "metrics_to_return": None, }, # check metrics below "status": EvaluationStatus.DONE.value, @@ -574,6 +582,8 @@ def test_evaluate_detection_with_json_filters( "recall_score_threshold": 0.0, "compute_pr_curves": False, "pr_curve_iou_threshold": 0.5, + "k_cutoffs": None, + "metrics_to_return": None, }, # check metrics below "status": EvaluationStatus.DONE.value, @@ -1544,6 +1554,8 @@ def test_evaluate_detection_with_label_maps( "recall_score_threshold": 0.8, "compute_pr_curves": True, "pr_curve_iou_threshold": 0.5, + "k_cutoffs": None, + "metrics_to_return": None, } metrics = eval_job.metrics diff --git a/integration_tests/client/metrics/test_ranking.py b/integration_tests/client/metrics/test_ranking.py index 2d42e7bec..96a12ada0 100644 --- a/integration_tests/client/metrics/test_ranking.py +++ b/integration_tests/client/metrics/test_ranking.py @@ -519,3 +519,36 @@ def test_evaluate_ranking_error_cases( model.evaluate_ranking( dataset, label_map={Label(key="foo", value="bar"): "bar"} ) + + # test bad ranking arrays + with pytest.raises(TypeError): + _ = [ + GroundTruth( + datum=Datum(uid="uid1", metadata={}), + annotations=[ + Annotation( + task_type=TaskType.RANKING, + labels=[ + Label(key="k1", value="v1"), + ], + ranking=[1, 2, 3, 4], + ) + ], + ), + ] + + with pytest.raises(TypeError): + _ = [ + GroundTruth( + datum=Datum(uid="uid1", metadata={}), + annotations=[ + Annotation( + task_type=TaskType.RANKING, + labels=[ + Label(key="k1", value="v1"), + ], + ranking=[0.2, 0.3, 0.4], + ) + ], + ), + ] From 055f751b2a00b2411b144331331bd1b9af798fc8 Mon Sep 17 00:00:00 2001 From: Nick Date: Wed, 1 May 2024 00:02:34 -0600 Subject: [PATCH 17/22] add docs --- docs/metrics.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/docs/metrics.md b/docs/metrics.md index 57817ceae..218521874 100644 --- a/docs/metrics.md +++ b/docs/metrics.md @@ -35,6 +35,19 @@ If we're missing an important metric for your particular use case, please [write | Intersection Over Union (IOU) | A ratio between the groundtruth and predicted regions of an image, measured as a percentage, grouped by class. |$\dfrac{area( prediction \cap groundtruth )}{area( prediction \cup groundtruth )}$ | | Mean IOU | The average of IOUs, calculated over several different classes. | $\dfrac{1}{\text{number of classes}} \sum\limits_{c \in classes} IOU_{c}$ | + +## Ranking Metrics + +| Name | Description | Equation | +| :- | :- | :- | +| Mean Reciprical Rank (MRR) | The reciprocal rank of a query response is the multiplicative inverse of the rank of the first correct answer: 1 for first place, 1⁄2 for second place, 1⁄3 for third place and so on. The MRR is the mean of reciprical ranks across all label keys. | $\dfrac{1}{\text{number of label values}} \sum\limits_{i} \dfrac{1}{rank}_{i}$ | +| Precision@k (P@k) | The percent of the top K recommendations which were actually relevant (as defined by being present in the `ranking` attribute of the ground truth). | $\dfrac{\text{count of relevant items in top k recommendations}}{\text{k}}$ | +| Average Precision@k (AP@k) | The mean of Precision@i for i=1, ..., K. To calculate AP@3, for example, we sum P@1, P@2 and P@3 and divide that value by 3. | $\dfrac{1}{\text{number of k cut-offs}} \sum\limits_{i \in \text{k}} \text{P@i}$ | +| Mean Average Precision@k (mAP@k) | The mean of AP@K across all values for a given key. | $\dfrac{1}{\text{number of label values}} \sum\limits_{i} \text{AP@k}_{i}$ | +| Recall@k (R@k) | The percent of relevant recommendations (as defined by being present in the `ranking` attribute of the ground truth) in the top k recommendations. | $\dfrac{\text{count of relevant items in top k recommendations}}{\text{total number of relevant items}}$ | +| Average Recall@k (AR@k) | The mean of Recall@i for i=1, ..., K. To calculate AR@3, for example, we sum R@1, R@2 and R@3 and divide that value by 3. | $\dfrac{1}{\text{number of k cut-offs}} \sum\limits_{i \in \text{k}} \text{R@i}$ | +| Mean Average Recall@k (mAR@k) | The mean of AR@K across all values for a given key. | $\dfrac{1}{\text{number of label values}} \sum\limits_{i} \text{AR@k}_{i}$ | + # Appendix: Metric Calculations ## Binary ROC AUC From 3c454cd05a7acd680a4a591c2c3355552f652c5d Mon Sep 17 00:00:00 2001 From: Nick Date: Wed, 1 May 2024 00:13:09 -0600 Subject: [PATCH 18/22] fix integration test --- integration_tests/client/metrics/test_detection.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/integration_tests/client/metrics/test_detection.py b/integration_tests/client/metrics/test_detection.py index dcf597347..f864ba9b9 100644 --- a/integration_tests/client/metrics/test_detection.py +++ b/integration_tests/client/metrics/test_detection.py @@ -420,6 +420,8 @@ def test_evaluate_detection( "recall_score_threshold": 0.0, "compute_pr_curves": False, "pr_curve_iou_threshold": 0.5, + "k_cutoffs": None, + "metrics_to_return": None, }, # check metrics below "status": EvaluationStatus.DONE.value, From f60cdc9ff6ffce3099bac01a6adee9193a03f8b4 Mon Sep 17 00:00:00 2001 From: Nick Date: Wed, 1 May 2024 00:31:03 -0600 Subject: [PATCH 19/22] fix comments --- api/valor_api/schemas/types.py | 2 +- client/valor/schemas/symbolic/collections.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/api/valor_api/schemas/types.py b/api/valor_api/schemas/types.py index f55debb7c..a8d2f569f 100644 --- a/api/valor_api/schemas/types.py +++ b/api/valor_api/schemas/types.py @@ -323,7 +323,7 @@ class Annotation(BaseModel): embedding: list[float], optional A jsonb to assign to the 'Annotation'. ranking: list[str], optional - A list of strings or a list of floats representing an ordered ranking. + A list of strings representing an ordered ranking. """ diff --git a/client/valor/schemas/symbolic/collections.py b/client/valor/schemas/symbolic/collections.py index 116162302..cca0fe73d 100644 --- a/client/valor/schemas/symbolic/collections.py +++ b/client/valor/schemas/symbolic/collections.py @@ -263,7 +263,7 @@ class Annotation(StaticCollection): embedding: List[float], optional An embedding, described by a list of values with type float and a maximum length of 16,000. ranking: List[str], optional - A list of strings or a list of floats representing an ordered ranking. + A list of strings representing an ordered ranking. Examples -------- @@ -366,7 +366,7 @@ def __init__( embedding: List[float], optional An embedding, described by a list of values with type float and a maximum length of 16,000. ranking: List[str], optional - A list of strings or a list of floats representing an ordered ranking. + A list of strings representing an ordered ranking. """ super().__init__( task_type=task_type, From 71d4421405980610febddddf2be83034ae92cd71 Mon Sep 17 00:00:00 2001 From: Nick Date: Wed, 1 May 2024 09:06:23 -0600 Subject: [PATCH 20/22] add more doc improvements --- docs/index.md | 2 +- docs/technical_concepts.md | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/docs/index.md b/docs/index.md index 886ccd607..e108f3a8c 100644 --- a/docs/index.md +++ b/docs/index.md @@ -75,7 +75,7 @@ To get started with Valor, we'd recommend reviewing our [sample notebooks](https **Q. What evaluation methods are supported?** -**A.** Valor currently supports generic classification as well as object-detection and semantic-segmentation for images. The long-term goal for Valor is to support the most popular supervised learning methods. +**A.** Valor currently supports generic classification and ranking, as well as object detection and semantic segmentation for images. The long-term goal for Valor is to support the most popular supervised learning methods. **Q. Does Valor store data?** diff --git a/docs/technical_concepts.md b/docs/technical_concepts.md index a974fd20c..24622a389 100644 --- a/docs/technical_concepts.md +++ b/docs/technical_concepts.md @@ -16,7 +16,7 @@ Note that Valor does _not_ store raw data (such as underlying images) or facilit ## Supported Task Types -As of January 2024, Valor supports the following types of supervised learning tasks and associated metrics: +As of May 2024, Valor supports the following types of supervised learning tasks and associated metrics: - Classification (including multi-label classification) - F1 @@ -32,6 +32,14 @@ As of January 2024, Valor supports the following types of supervised learning ta - Segmentation (including both instance and semantic segmentation) - IOU - mIOU +- Ranking + - Mean Reciprocal Rank + - Precision @ k + - Average Precision @ k + - Mean Average Precision @ k + - Recall @ k + - Average Recall @ k + - Mean Average Recall @ k For descriptions of each of these metrics, see our [Metrics](metrics.md) page. From 16ca2a49299007da460499cb6eca8c4cc6e38fb1 Mon Sep 17 00:00:00 2001 From: Nick L Date: Wed, 1 May 2024 10:24:41 -0600 Subject: [PATCH 21/22] Update docs/index.md Co-authored-by: Eric O. Korman --- docs/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.md b/docs/index.md index e108f3a8c..f9809c0ca 100644 --- a/docs/index.md +++ b/docs/index.md @@ -75,7 +75,7 @@ To get started with Valor, we'd recommend reviewing our [sample notebooks](https **Q. What evaluation methods are supported?** -**A.** Valor currently supports generic classification and ranking, as well as object detection and semantic segmentation for images. The long-term goal for Valor is to support the most popular supervised learning methods. +**A.** Valor currently supports generic classification and ranking/information retrieval, as well as object detection and semantic segmentation for images. The long-term goal for Valor is to support the most popular supervised learning methods. **Q. Does Valor store data?** From 307c145f7f78d4de6b7aa8db79fb64949421f405 Mon Sep 17 00:00:00 2001 From: Nick Date: Fri, 10 May 2024 01:34:11 -0600 Subject: [PATCH 22/22] add start of example notebook --- .../backend/metrics/test_ranking.py | 4 +- .../crud/test_create_delete.py | 12 +- examples/rag/rag_ranking.ipynb | 521 +++++++ examples/rag/top_rated_wines.csv | 1366 +++++++++++++++++ ...down.sql => 00000008_add_ranking.down.sql} | 0 ...ing.up.sql => 00000008_add_ranking.up.sql} | 0 6 files changed, 1895 insertions(+), 8 deletions(-) create mode 100644 examples/rag/rag_ranking.ipynb create mode 100644 examples/rag/top_rated_wines.csv rename migrations/sql/{00000007_add_ranking.down.sql => 00000008_add_ranking.down.sql} (100%) rename migrations/sql/{00000007_add_ranking.up.sql => 00000008_add_ranking.up.sql} (100%) diff --git a/api/tests/functional-tests/backend/metrics/test_ranking.py b/api/tests/functional-tests/backend/metrics/test_ranking.py index 3211dda53..3be94e374 100644 --- a/api/tests/functional-tests/backend/metrics/test_ranking.py +++ b/api/tests/functional-tests/backend/metrics/test_ranking.py @@ -79,7 +79,7 @@ def ranking_test_data( ), ) for gt in groundtruth_ranking: - crud.create_groundtruth(db=db, groundtruth=gt) + crud.create_groundtruths(db=db, groundtruths=[gt]) crud.finalize(db=db, dataset_name=dataset_name) crud.create_model( @@ -90,7 +90,7 @@ def ranking_test_data( ), ) for pd in prediction_ranking: - crud.create_prediction(db=db, prediction=pd) + crud.create_predictions(db=db, predictions=[pd]) crud.finalize(db=db, dataset_name=dataset_name, model_name=model_name) assert len(db.query(models.Datum).all()) == 2 diff --git a/api/tests/functional-tests/crud/test_create_delete.py b/api/tests/functional-tests/crud/test_create_delete.py index 335997278..8d9b27be0 100644 --- a/api/tests/functional-tests/crud/test_create_delete.py +++ b/api/tests/functional-tests/crud/test_create_delete.py @@ -1496,7 +1496,7 @@ def test_create_ranking_ground_truth_and_delete_dataset( crud.create_dataset(db=db, dataset=schemas.Dataset(name=dataset_name)) for gt in groundtruth_ranking: - crud.create_groundtruth(db=db, groundtruth=gt) + crud.create_groundtruths(db=db, groundtruths=[gt]) assert db.scalar(func.count(models.Annotation.id)) == 2 assert db.scalar(func.count(models.Datum.id)) == 2 @@ -1544,19 +1544,19 @@ def test_create_ranking_prediction_and_delete_model( # check this gives an error since the model hasn't been added yet with pytest.raises(exceptions.DatasetDoesNotExistError) as exc_info: for pd in prediction_ranking: - crud.create_prediction(db=db, prediction=pd) + crud.create_predictions(db=db, predictions=[pd]) assert "does not exist" in str(exc_info) # create dataset, add images, and add predictions crud.create_dataset(db=db, dataset=schemas.Dataset(name=dataset_name)) for gt in groundtruth_ranking: - crud.create_groundtruth(db=db, groundtruth=gt) + crud.create_groundtruths(db=db, groundtruths=[gt]) # check this gives an error since the model hasn't been created yet with pytest.raises(exceptions.ModelDoesNotExistError) as exc_info: for pd in prediction_ranking: - crud.create_prediction(db=db, prediction=pd) + crud.create_predictions(db=db, predictions=[pd]) assert "does not exist" in str(exc_info) # finalize dataset @@ -1565,13 +1565,13 @@ def test_create_ranking_prediction_and_delete_model( # check this gives an error since the model hasn't been added yet with pytest.raises(exceptions.ModelDoesNotExistError) as exc_info: for pd in prediction_ranking: - crud.create_prediction(db=db, prediction=pd) + crud.create_predictions(db=db, predictions=[pd]) assert "does not exist" in str(exc_info) # create model crud.create_model(db=db, model=schemas.Model(name=model_name)) for pd in prediction_ranking: - crud.create_prediction(db=db, prediction=pd) + crud.create_predictions(db=db, predictions=[pd]) # check db has the added predictions assert db.scalar(func.count(models.Annotation.id)) == 8 diff --git a/examples/rag/rag_ranking.ipynb b/examples/rag/rag_ranking.ipynb new file mode 100644 index 000000000..816832a27 --- /dev/null +++ b/examples/rag/rag_ranking.ipynb @@ -0,0 +1,521 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/c_/vxjvkhy543l66mrkrtfrb56c0000gn/T/ipykernel_60142/1741203415.py:2: DeprecationWarning: \n", + "Pyarrow will become a required dependency of pandas in the next major release of pandas (pandas 3.0),\n", + "(to allow more performant data types, such as the Arrow string type, and better interoperability with other libraries)\n", + "but was not found to be installed on your system.\n", + "If this would cause problems for you,\n", + "please provide us feedback at https://github.com/pandas-dev/pandas/issues/54466\n", + " \n", + " import pandas as pd\n", + "/opt/homebrew/anaconda3/envs/velour_api_env/lib/python3.10/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", + " from .autonotebook import tqdm as notebook_tqdm\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successfully connected to host at http://0.0.0.0:8000/\n" + ] + } + ], + "source": [ + "# data from https://github.com/alfredodeza/learn-retrieval-augmented-generation/tree/main\n", + "import pandas as pd\n", + "from sentence_transformers import SentenceTransformer, util\n", + "from valor.enums import TaskType, EvaluationStatus\n", + "from valor import Annotation, Datum, Dataset, Model, GroundTruth, Label, Client, Prediction, viz, connect\n", + "\n", + "NUMBER_OF_RECORDS = 50\n", + "\n", + "\n", + "# get data\n", + "df = pd.read_csv('./top_rated_wines.csv')\n", + "df = df[df['variety'].notna()].sample(NUMBER_OF_RECORDS) # remove any NaN values as it blows up serialization\n", + "len(df)\n", + "\n", + "# connet to Valor API\n", + "connect(\"http://0.0.0.0:8000\")\n", + "client = Client()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Use Case #1: Evaluating Rankings via Relevant Doc Names\n", + "\n", + "If we know in advance which docs are relevant to our request, then it's easy for us to calculate our various metrics. We just have to pass the relevant docs in our `Groundtruth` object, pass the ordered predictions in our `Prediction` object, and run `evaluate_ranking` to get our metrics." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Chateau Margaux 2015',\n", + " 'Kistler Vineyards Stone Flat Vineyard Chardonnay 2005',\n", + " 'Chateau Smith Haut Lafitte (1.5 Liter Futures Pre-Sale) 2019']" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# pick three wines at random to be our \"relevant docs\" for this example\n", + "relevant_wines = df[:10].loc[:, 'name'].sample(3).to_list()\n", + "relevant_wines" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'type': 'MRRMetric',\n", + " 'parameters': {'label_key': 'wine_recommender'},\n", + " 'value': 0.25},\n", + " {'type': 'PrecisionAtKMetric',\n", + " 'parameters': {'k': 3, 'annotation_id': 2},\n", + " 'value': 0.0,\n", + " 'label': {'key': 'wine_recommender', 'value': 'first_recommendation'}},\n", + " {'type': 'RecallAtKMetric',\n", + " 'parameters': {'k': 3, 'annotation_id': 2},\n", + " 'value': 0.0,\n", + " 'label': {'key': 'wine_recommender', 'value': 'first_recommendation'}},\n", + " {'type': 'APAtKMetric',\n", + " 'parameters': {'k_cutoffs': [3], 'annotation_id': 2},\n", + " 'value': 0.0,\n", + " 'label': {'key': 'wine_recommender', 'value': 'first_recommendation'}},\n", + " {'type': 'ARAtKMetric',\n", + " 'parameters': {'k_cutoffs': [3], 'annotation_id': 2},\n", + " 'value': 0.0,\n", + " 'label': {'key': 'wine_recommender', 'value': 'first_recommendation'}},\n", + " {'type': 'mAPAtKMetric',\n", + " 'parameters': {'k_cutoffs': [3], 'label_key': 'wine_recommender'},\n", + " 'value': 0.0},\n", + " {'type': 'mARAtKMetric',\n", + " 'parameters': {'k_cutoffs': [3], 'label_key': 'wine_recommender'},\n", + " 'value': 0.0}]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dataset = Dataset.create('relevant_wines_dataset')\n", + "model = Model.create('relevant_wines_model')\n", + "\n", + "dataset.add_groundtruth(\n", + " GroundTruth(\n", + " datum=Datum(uid=\"wines\"),\n", + " annotations=[\n", + " Annotation(\n", + " task_type=TaskType.RANKING,\n", + " labels=[Label(key=\"wine_recommender\", value='first_recommendation')],\n", + " ranking=relevant_wines\n", + " )\n", + " ],\n", + " )\n", + ")\n", + "dataset.finalize()\n", + "\n", + "# assume that the other predictions were delivered from a recommender system in order\n", + "model.add_prediction(\n", + " dataset, \n", + " Prediction(\n", + " datum=Datum(uid=\"wines\"),\n", + " annotations=[\n", + " Annotation(\n", + " task_type=TaskType.RANKING,\n", + " labels=[Label(key=\"wine_recommender\", value='first_recommendation')],\n", + " ranking=df[:10].loc[:, 'name'].to_list()\n", + " )\n", + " ],\n", + " )\n", + ")\n", + "model.finalize_inferences(dataset)\n", + "\n", + "eval_job = model.evaluate_ranking(\n", + " dataset,\n", + " metrics_to_return=[\"MRRMetric\", \"PrecisionAtKMetric\", 'RecallAtKMetric', 'APAtKMetric', 'ARAtKMetric', 'mAPAtKMetric', 'mARAtKMetric'],\n", + " k_cutoffs=[3],\n", + ")\n", + "\n", + "assert eval_job.wait_for_completion(timeout=30) == EvaluationStatus.DONE\n", + "\n", + "eval_job.metrics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Alternatively, say that we don't know all of the docs which are relevant to our request, but we do know at least two of them are. We can use embeddings to identify other relevant docs, then pass all of those relevant docs into the `ranking` attribute." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "def find_similar_embeddings(relevant_embeddings, other_embeddings, similarity_cutoff=.95):\n", + " \"\"\"Find all embeddings in a list of other_embeddings that are similar to some set of known relevant_embeddings.\"\"\"\n", + " output = []\n", + "\n", + " for embedding in other_embeddings:\n", + " intermediate_distances = []\n", + " for relevant_embedding in relevant_embeddings:\n", + " distance = util.cos_sim(embedding, relevant_embedding)\n", + " intermediate_distances.append(distance)\n", + " \n", + " output.append(max(intermediate_distances).item())\n", + " return [i for i, distance in enumerate(output) if distance >= similarity_cutoff]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/homebrew/anaconda3/envs/velour_api_env/lib/python3.10/site-packages/huggingface_hub/file_download.py:1132: FutureWarning: `resume_download` is deprecated and will be removed in version 1.0.0. Downloads always resume when possible. If you want to force a new download, use `force_download=True`.\n", + " warnings.warn(\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
nameregionvarietyratingnotes
439Chateau d'Yquem Sauternes (375ML half-bottle) ...Sauternes, Bordeaux, FranceCollectible97.0Discovering Chateau d'Yquem starts with the bo...
1173Inglenook Rubicon 2002Napa Valley, CaliforniaRed Wine96.0\"This is the best Rubicon ever...\"
916Domaine Saint Prefert Chateauneuf-du-Pape Coll...Chateauneuf-du-Pape, Rhone, FranceRed Wine98.0The tete de cuvee of the domaine, made from th...
217Bouchard Pere & Fils Chambertin Clos de Beze G...Burgundy, FranceRed Wine96.095
\n", + "
" + ], + "text/plain": [ + " name \\\n", + "439 Chateau d'Yquem Sauternes (375ML half-bottle) ... \n", + "1173 Inglenook Rubicon 2002 \n", + "916 Domaine Saint Prefert Chateauneuf-du-Pape Coll... \n", + "217 Bouchard Pere & Fils Chambertin Clos de Beze G... \n", + "\n", + " region variety rating \\\n", + "439 Sauternes, Bordeaux, France Collectible 97.0 \n", + "1173 Napa Valley, California Red Wine 96.0 \n", + "916 Chateauneuf-du-Pape, Rhone, France Red Wine 98.0 \n", + "217 Burgundy, France Red Wine 96.0 \n", + "\n", + " notes \n", + "439 Discovering Chateau d'Yquem starts with the bo... \n", + "1173 \"This is the best Rubicon ever...\" \n", + "916 The tete de cuvee of the domaine, made from th... \n", + "217 95 " + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "# say we know for certain that items 5:9 are relevant to our query, but we we want to expand our search to other relevant docs using embedding distances\n", + "relevant_docs = df['notes'][5:9].tolist()\n", + "\n", + "encoder = SentenceTransformer('all-MiniLM-L6-v2')\n", + "relevant_doc_embeddings = [encoder.encode(doc)for doc in relevant_docs]\n", + "other_embeddings = [encoder.encode(doc) for doc in df['notes']]\n", + "\n", + "similar_embeddings = find_similar_embeddings(relevant_embeddings=relevant_doc_embeddings, other_embeddings=other_embeddings)\n", + "df.iloc[similar_embeddings]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'type': 'MRRMetric',\n", + " 'parameters': {'label_key': 'wine_recommender'},\n", + " 'value': 0.16666666666666666},\n", + " {'type': 'PrecisionAtKMetric',\n", + " 'parameters': {'k': 10, 'annotation_id': 4},\n", + " 'value': 0.4,\n", + " 'label': {'key': 'wine_recommender', 'value': 'second_recommendation'}},\n", + " {'type': 'RecallAtKMetric',\n", + " 'parameters': {'k': 10, 'annotation_id': 4},\n", + " 'value': 1.0,\n", + " 'label': {'key': 'wine_recommender', 'value': 'second_recommendation'}},\n", + " {'type': 'APAtKMetric',\n", + " 'parameters': {'k_cutoffs': [10], 'annotation_id': 4},\n", + " 'value': 0.4,\n", + " 'label': {'key': 'wine_recommender', 'value': 'second_recommendation'}},\n", + " {'type': 'ARAtKMetric',\n", + " 'parameters': {'k_cutoffs': [10], 'annotation_id': 4},\n", + " 'value': 1.0,\n", + " 'label': {'key': 'wine_recommender', 'value': 'second_recommendation'}},\n", + " {'type': 'mAPAtKMetric',\n", + " 'parameters': {'k_cutoffs': [10], 'label_key': 'wine_recommender'},\n", + " 'value': 0.4},\n", + " {'type': 'mARAtKMetric',\n", + " 'parameters': {'k_cutoffs': [10], 'label_key': 'wine_recommender'},\n", + " 'value': 1.0}]" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dataset = Dataset.create('relevant_notes_dataset')\n", + "model = Model.create('relevant_notes_model')\n", + "\n", + "dataset.add_groundtruth(\n", + " GroundTruth(\n", + " datum=Datum(uid=\"wines\"),\n", + " annotations=[\n", + " Annotation(\n", + " task_type=TaskType.RANKING,\n", + " labels=[Label(key=\"wine_recommender\", value='second_recommendation')],\n", + " ranking=df.iloc[similar_embeddings]['notes'].to_list()\n", + " )\n", + " ],\n", + " )\n", + ")\n", + "dataset.finalize()\n", + "\n", + "# assume that the other predictions were delivered from a recommender system in order\n", + "model.add_prediction(\n", + " dataset, \n", + " Prediction(\n", + " datum=Datum(uid=\"wines\"),\n", + " annotations=[\n", + " Annotation(\n", + " task_type=TaskType.RANKING,\n", + " labels=[Label(key=\"wine_recommender\", value='second_recommendation')],\n", + " ranking=df.loc[:, 'notes'].to_list()\n", + " )\n", + " ],\n", + " )\n", + ")\n", + "model.finalize_inferences(dataset)\n", + "\n", + "eval_job = model.evaluate_ranking(\n", + " dataset,\n", + " metrics_to_return=[\"MRRMetric\", \"PrecisionAtKMetric\", 'RecallAtKMetric', 'APAtKMetric', 'ARAtKMetric', 'mAPAtKMetric', 'mARAtKMetric'],\n", + " k_cutoffs=[10],\n", + ")\n", + "\n", + "assert eval_job.wait_for_completion(timeout=30) == EvaluationStatus.DONE\n", + "\n", + "eval_job.metrics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Use Case #2: Evaluating Rankings via Embeddings\n", + "NOTE: The code below doesn't run yet as the `embedding` attribute of `Annotation` needs work." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create groundtruths and predictions" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# create groundtruths using documents that we know are relevant to the question \"Where is Capella, and why is it a great region for wines?\"\n", + "encoder = SentenceTransformer('all-MiniLM-L6-v2')\n", + "\n", + "relevant_docs = df['notes'][1:3].tolist()\n", + "df.drop(df.index[1:3])\n", + "\n", + "dataset = Dataset.create(DATASET_NAME)\n", + "model = Model.create(MODEL_NAME)\n", + "\n", + "for i, doc in enumerate(relevant_docs):\n", + " dataset.add_groundtruth(\n", + " GroundTruth(\n", + " datum=Datum(uid=\"wines\"),\n", + " annotations=[\n", + " Annotation(\n", + " task_type=TaskType.RANKING,\n", + " labels=[Label(key=\"docs related to Capella\", value=f'doc #{i}')],\n", + " metadata={'content': doc},\n", + " embedding=encoder.encode(doc).tolist() # TODO: embedding can't handle nested lists at the moment\n", + " )\n", + " ],\n", + " )\n", + " )\n", + "\n", + "dataset.finalize()\n", + "\n", + "# create predictions for all of our other records\n", + "embeddings = [encoder.encode(doc) for doc in df.loc[:, 'notes']] # output is NUMBER_OF_RECORDS x 384 dimensions per record\n", + "\n", + "# add the other docs as predictions\n", + "for i, doc in enumerate(df):\n", + " model.add_prediction(\n", + " dataset,\n", + " Prediction(\n", + " datum=Datum(uid=\"wines\"),\n", + " annotations=[\n", + " Annotation(\n", + " task_type=TaskType.RANKING,\n", + " labels=[Label(key=\"docs related to Capella\", value=f'doc #{i}')],\n", + " metadata={'content': doc},\n", + " embedding=embeddings[i]\n", + " )\n", + " ],\n", + " )\n", + " )\n", + " \n", + "\n", + "model.finalize_inferences(dataset)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Run evaluations" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "eval_job = model.evaluate_ranking(\n", + " dataset,\n", + " metrics_to_return=[\"MRRMetric\", \"PrecisionAtKMetric\", 'RecallAtKMetric', 'APAtKMetric', 'ARAtKMetric', 'mAPAtKMetric', 'mARAtKMetric'],\n", + " k_cutoffs=[3],\n", + " similarity_cutoff=.95 # vectors have to be 95% similar to the groundtruth vectors to be considered \"relevant\"\n", + ")\n", + "\n", + "# behind the scenes, Valor should:\n", + "# - calculate the distance between each prediction and both groundtruths (taking the average of both distances)\n", + "# - figure out which predictions were \"relevant\" based on the cutoff\n", + "# - calculate the IR metrics (NOTE: assumes that the annotations are added in the order in which they were recommended)\n", + "\n", + "\n", + "# alternatives\n", + "# - the user passes a nested array of embeddings to `ranking` (note: this would be a pretty large array to store in Valor)\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "velour_api_env", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.13" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/rag/top_rated_wines.csv b/examples/rag/top_rated_wines.csv new file mode 100644 index 000000000..d5d4a0841 --- /dev/null +++ b/examples/rag/top_rated_wines.csv @@ -0,0 +1,1366 @@ +name,region,variety,rating,notes +3 Rings Reserve Shiraz 2004,"Barossa Valley, Barossa, South Australia, Australia",Red Wine,96.0,"Vintage Comments : Classic Barossa vintage conditions. An average wet Spring followed by extreme heat in early February. Occasional rainfall events kept the vines in good balance up to harvest in late March 2004. Very good quality coupled with good average yields. More than 30 months in wood followed by six months tank maturation of the blend prior to bottling, July 2007. " +Abreu Vineyards Cappella 2007,"Napa Valley, California",Red Wine,96.0,"Cappella is a proprietary blend of two clones of Cabernet Sauvignon with Cabernet Franc, Petit Verdot and Merlot. The gravelly soil at Cappella produces fruit that is very elegant in structure. The resulting wine exhibits beautiful purity of fruit with fine grained and lengthy tannins. " +Abreu Vineyards Cappella 2010,"Napa Valley, California",Red Wine,98.0,"Cappella is one of the oldest vineyard sites in St. Helena. Six acres that sit alongside a Catholic cemetery on the west side of town, it was first planted in 1869. In the 1980s the church asked David to tear out the old vines, then he watched as the land lay fallow for close to two decades. When he finally got the chance to replant, he jumped. He'd tasted fruit from Cappella in the 70s. He knew what kind of wine it could make. But that first replant was ill-fated thanks to diseased rootstock, and once again he was ripping out vines. “It took us six years before we had a crop. We could have ignored it, pulled the vines out one by one as they collapsed. But then we'd have all these different ripening patterns, which would impact consistency. It was an easy decision.”" +Abreu Vineyards Howell Mountain 2008,"Howell Mountain, Napa Valley, California",Red Wine,96.0,"When David purchased this Howell Mountain property in 2000 it came with an unexpected perk: first growth redwood stakes dating back over a century. Relics of an earlier era of agriculture. “When the college owned this site they'd burn all the underbrush, including the stakes, to keep it clean. When I came in we found them and set them all aside,” he says. At about 2000 feet elevation, Las Posadas sits above the fog line, surrounded by a protected forest of fir and pine. Red Aiken soils are layered over white tufa, and the rocks that littered the site before it was planted now form walls defining the property. The redwood stakes—collected, stacked, preserved—await their next life." +Abreu Vineyards Howell Mountain 2009,"Howell Mountain, Napa Valley, California",Red Wine,98.0,"As a set of wines, it is hard to surpass the four cuvees from the estate vineyards of David Abreu. As I have written many times in the past, all of these wines are truly world-class efforts that stand alongside proprietary red wines made from Bordeaux varietals from any appellation in the world. " +Abreu Vineyards Las Posadas Howell Mountain 2012,"Howell Mountain, Napa Valley, California",Red Wine,99.0,"At about 2000 feet elevation, Las Posadas sits above the fog line, surrounded by a protected forest of fir and pine. Red Aiken soils are layered over white tufa, and the rocks that littered the site before it was planted now form walls defining the property." +Abreu Vineyards Madrona Ranch 1993,"Napa Valley, California",Red Wine,96.0,Abreu Madrona Ranch is a blend of Cabernet Sauvignon and Cabernet Franc with accents of Merlot and Petit Verdot. The wine is aged in 100% new French oak for two years and receives an addition two years of bottle age prior to release. +Abreu Vineyards Madrona Ranch 1996,"Napa Valley, California",Red Wine,98.0,Abreu Madrona Ranch is a blend of Cabernet Sauvignon and Cabernet Franc with accents of Merlot and Petit Verdot. The wine is aged in 100% new French oak for two years and receives an addition two years of bottle age prior to release. +Abreu Vineyards Madrona Ranch 2003,"Napa Valley, California",Red Wine,96.0,Abreu Madrona Ranch is a blend of Cabernet Sauvignon and Cabernet Franc with accents of Merlot and Petit Verdot. The wine is aged in 100% new French oak for two years. The wine receives an addition two years of bottle age prior to release. +Abreu Vineyards Madrona Ranch 2004,"Napa Valley, California",Red Wine,96.0,Abreu Madrona Ranch is a blend of Cabernet Sauvignon and Cabernet Franc with accents of Merlot and Petit Verdot. The wine is aged in 100% new French oak for two years. The wine receives an addition two years of bottle age prior to release. +Abreu Vineyards Madrona Ranch 2005,"Napa Valley, California",Red Wine,98.0,Abreu Madrona Ranch is a blend of Cabernet Sauvignon and Cabernet Franc with accents of Merlot and Petit Verdot. The wine is aged in 100% new French oak for two years. The wine receives an addition two years of bottle age prior to release. +Abreu Vineyards Thorevilos 2009,"Napa Valley, California",Red Wine,98.0,"The blend for this cuvee is generally an intriguing combination of Cabernet Sauvignon, Cabernet Franc and the rest Petit Verdot with just a tiny dollop of Merlot. " +Abreu Vineyards Thorevilos 2012,"Napa Valley, California",Red Wine,99.0,"Sitting 800 feet above the valley floor, wedged between the St. Helena and Howell Mountain AVAs, Thorevilos doesn't belong to any sub-appellation. “It's an outlier,” David says. When the AVA boundaries were being determined, he could have argued to have it included. “But it wouldn't have made any difference to the vineyard. Or the wine.”" +Abreu Vineyards Thorevilos 2014,"Napa Valley, California",Red Wine,97.0,"Sitting 800 feet above the valley floor, wedged between the St. Helena and Howell Mountain AVAs, Thorevilos doesn't belong to any sub-appellation. ""It's an outlier,” David says. When the AVA boundaries were being determined, he could have argued to have it included. “But it wouldn't have made any difference to the vineyard. Or the wine.""" +Abreu Vineyards Thorevilos 2015,"Napa Valley, California",Red Wine,97.0,"Thorevilos was one of David's favorite haunts as a child. There were no vines then. Just pine trees, redwoods, an old olive grove. And a rusted hog wire hanging from a tree—“Hook Man” in Abreu family lore. These days it's the dirt that engrosses him. White tufa that turns to fine powder when you grind it beneath your foot. Tannish soil peppered with orange-brown pebbles. Streaks of dry, red earth. Sitting 800 feet above the valley floor, wedged between the St. Helena and Howell Mountain AVAs, Thorevilos doesn't belong to any sub-appellation. “It's an outlier,” David says. When the AVA boundaries were being determined, he could have argued to have it included. “But it wouldn't have made any difference to the vineyard. Or the wine.” " +Accendo Cellars Cabernet Sauvignon 2016,"Napa Valley, California",Red Wine,96.0,"Reflecting the outstanding vintage, the captivating nose of this wine shows dark and brooding aromas of cassis,plum and blackberry, touched by exotic notes of lavender, anise, pencil lead and leather. On the palate, rich flavorsof ripe black fruits are wrapped around a firm structure of fine-grained tannins, minerality and beautiful freshnessthat carry on into the long, satisfying finish. Per winemakers Françoise Peschon and Nigel Kinsman: “The consistency ofan exceptional vintage is expressed in the purity, length and fineness of this wine – it is deep and powerful, yet perfectly integrated, seamlessfrom approach to finish, full of plush flavor from ripe fruit, ending with silky tannins and graphite that linger on the palate.”" +Agharta Black Label Red 2004,"North Coast, California",Red Wine,98.0,"Evolved aromas of roasted earth, dried leather and meat jus immediately emerge from the surface of this opaque liquid. Eventually fruit aromas respond to your coaxing and tiny currants, the ripest blackberries and the densest of blue fruits fill out the darker more evolved aromas of leather and tar. The wine is thick and immediately mouth coating with a very richly textured and immensely concentrated sensation of fruit and spice. The secondary aromas of delicate white flowers, black summer truffles and dark roasted coffee highlight the fruit as the wine unfolds in your mouth. This wine isn’t noticeably oaky or excruciatingly tannic or seemingly sweet, it is just all kind of 'there' composed and finely knit together in a very decadent glass of wine. " +Agharta Syrah (1.5 Liter Magnum) 2004,"North Coast, California",Red Wine,98.0,"Evolved aromas of roasted earth, dried leather and meat jus immediately emerge from the surface of this opaque liquid. Eventually fruit aromas respond to your coaxing and tiny currants, the ripest blackberries and the densest of blue fruits fill out the darker more evolved aromas of leather and tar. The wine is thick and immediately mouth coating with a very richly textured and immensely concentrated sensation of fruit and spice. The secondary aromas of delicate white flowers, black summer truffles and dark roasted coffee highlight the fruit as the wine unfolds in your mouth. This wine isn't noticeably oaky or excruciatingly tannic or seemingly sweet, it is just all kind of 'there' composed and finely knit together in a very decadent glass of wine." +Agharta Syrah 2004,"North Coast, California",Red Wine,98.0,"""Evolved aromas of roasted earth, dried leather and meat jus immediately emerge from the surface of this opaque liquid. Eventually fruit aromas respond to your coaxing and tiny currants, the ripest blackberries and the densest of blue fruits fill out the darker more evolved aromas of leather and tar. The wine is thick and immediately mouth coating with a very richly textured and immensely concentrated sensation of fruit and spice. The secondary aromas of delicate white flowers, black summer truffles and dark roasted coffee highlight the fruit as the wine unfolds in your mouth. This wine isn't noticeably oaky or excruciatingly tannic or seemingly sweet, it is just all kind of 'there' composed and finely knit together in a very decadent glass of wine.""" +Alain Voge Cornas Vieilles Vignes 2010,"Cornas, Rhone, France",Red Wine,99.0,"Cornas ""Les Vieilles Vignes"" comes from Syrah vineyards, more than 30 years old, on decomposed granite slopes, also alled ""gore"". This wine is a lighter style, with some good violet and dark red fruit." +Alban Lorraine Estate Syrah 2005,"Edna Valley, Central Coast, California",Red Wine,96.0,"The finest Syrah John Alban has yet produced, its inky/ruby/purple hue is accompanied by gorgeously sweet aromas of flowers, blueberries, black raspberries, blackberries, and subtle hints of smoky oak, bacon fat, and licorice. " +Alban Pandora 2006,"Edna Valley, Central Coast, California",Red Wine,97.0,"White flowers, cloves and mint wrap around layers of plush dark fruit in a sensual, mysterious Grenache of the very highest level. Despite its size, the Pandora is more refined than the straight Grenache. " +Alban Pandora 2009,"Edna Valley, Central Coast, California",Red Wine,97.0,"White flowers, cloves and mint wrap around layers of plush dark fruit in a sensual, mysterious Grenache of the very highest level. Despite its size, the Pandora is more refined than the straight Grenache. " +Alban Pandora 2013,"Edna Valley, Central Coast, California",Red Wine,99.0,"In the myth, Pandora is the first woman- the Greek ‘Eve’. She is fashioned out of clay and as you know, handed a vessel that she is instructed not to open. Of course, curiosity forces her to take a look. In that moment, all the challenges of the world are released- much like the effect of the apple in Eden. What is all too often overlooked is that Pandora shuts the vessel in time to retain one attribute: Hope. Naturally as the first woman, she is the source of all hope for mankind. " +Alban Reva Estate Syrah 2011,"Edna Valley, Central Coast, California",Red Wine,96.0,"Smoke, graphite, iodine and chocolate all show in this full-bodied, concentrated, yet fresh and lively Syrah. It will benefit from short-term cellaring and 15 years of longevity. " +Albert Boxler Riesling Grand Cru Brand Kirchberg 2016,"Alsace, France",White Wine,98.0,"ne whiff of this might make you want to plunge right into the glass. Once the wine hits your tongue... Nope, zingy lemon, delicate white flowers, rich mineral backbone, beautiful mouthwatering finish, incredible length... (though all true) will not come close to summing up the experience of enjoying this wine. How’s “Buy as much as you can get” for a tasting note? It’s a classic!" +Albert Boxler Riesling Grand Cru Sommerberg Eckberg 2016,"Alsace, France",White Wine,98.0,"My favorite Riesling in the store (perhaps ever). Zesty, minerally, intensely aromatic, boundlessly deep—my Alsatian ancestry approves!" +Albino Rocca Barbaresco Ronchi 2014,"Barbaresco, Piedmont, Italy",Red Wine,96.0,"Deep garnet red. Intense, frank and fruity on the nose with aromas of cherry, blackberry, vanilla, toasted nuts, sweet spices, complex, balsamic and mineral notes. The palate is rich, soft and fresh with fine tannins and a good persistence." +Aldo Conterno Granbussia Barolo Riserva 2008,"Barolo, Piedmont, Italy",Red Wine,96.0,"The Barolo Reserve Granbussia is produced by blending grapes from the oldest vines, from the Romirasco, Cicala, and Colonnello, before fermentation starts, in the following percentages respectively: 70% - 15% - 15%. Naturally these optimal values may vary depending on the year. The Granbussia remains in the cellar for at least 8 years before commercialization. It is produced exclusively in the best years and in limited quantities. " +Aldo Conterno Granbussia Barolo Riserva 2009,"Barolo, Piedmont, Italy",Red Wine,97.0,"The Barolo Reserve Granbussia is produced by blending grapes from the oldest vines, from the Romirasco, Cicala, and Colonnello, before fermentation starts, in the following percentages respectively: 70% - 15% - 15%. Naturally these optimal values may vary depending on the year. The Granbussia remains in the cellar for at least 8 years before commercialization. It is produced exclusively in the best years and in limited quantities. " +Alejandro Bulgheroni Lithology Beckstoffer To Kalon Vineyard Cabernet Sauvignon 2016,"Napa Valley, California",Red Wine,97.0,Alejandro Bulgheroni Estate Lithology is a series of single vineyard and AVA-designated wines made from select sites within Napa Valley. Lithology Beckstoffer To Kalon Vineyard is produced solely from fruit grown in the historic Beckstoffer to Kalon Vineyard planted in 1865 by W.H. Crabb and represents Oakville's famous bench land. +Almaviva (1.5 Liter Magnum) 2009,Chile,Red Wine,96.0,"Made from a blend of classic Bordeaux varieties, in which Cabernet Sauvignon predominates, Almaviva is the result of a felicitous encounter between two cultures. Chile offers its soil, its climate and its vineyards, while France contributes its winemaking savoir-faire and traditions. The result is an exceptionally elegant and complex wine. Its launch was a major milestone in the development of Chilean wines, both in Chile itself and in the international market." +Almaviva (1.5 Liter Magnum) 2018,"Maipo Valley, Chile",Red Wine,96.0,"Attractive dark ruby color, deep and opaque. The nose is pure, focused and layered, revealing delicate and clean aromas of blackberries, ripe cassis, currants and violet, associated with fine notes of tobacco, cedar and coffee bean. The mouth shows outstanding amplitude and balance, luscious texture, bright acidity, broad structure and persistence. The tannins are well refined, smooth and silky, enhancing the fresh and juicy character of the year. Precise and polished, the wine combines harmonious elegance, richness, ripeness and freshness in an exceptional and superb vintage." +Almaviva 2009,"Maipo Valley, Chile",Red Wine,96.0,"Made from a blend of classic Bordeaux varieties, in which Cabernet Sauvignon predominates, Almaviva is the result of a felicitous encounter between two cultures. Chile offers its soil, its climate and its vineyards, while France contributes its winemaking savoir-faire and traditions. The result is an exceptionally elegant and complex wine. Its launch was a major milestone in the development of Chilean wines, both in Chile itself and in the international market." +Almaviva 2018,"Maipo Valley, Chile",Red Wine,96.0,"Attractive dark ruby color, deep and opaque. The nose is pure, focused and layered, revealing delicate and clean aromas of blackberries, ripe cassis, currants and violet, associated with fine notes of tobacco, cedar and coffee bean. The mouth shows outstanding amplitude and balance, luscious texture, bright acidity, broad structure and persistence. The tannins are well refined, smooth and silky, enhancing the fresh and juicy character of the year. Precise and polished, the wine combines harmonious elegance, richness, ripeness and freshness in an exceptional and superb vintage." +Almaviva (3 Liter) 2018,"Maipo Valley, Chile",Red Wine,96.0,"Attractive dark ruby color, deep and opaque. The nose is pure, focused and layered, revealing delicate and clean aromas of blackberries, ripe cassis, currants and violet, associated with fine notes of tobacco, cedar and coffee bean. The mouth shows outstanding amplitude and balance, luscious texture, bright acidity, broad structure and persistence. The tannins are well refined, smooth and silky, enhancing the fresh and juicy character of the year. Precise and polished, the wine combines harmonious elegance, richness, ripeness and freshness in an exceptional and superb vintage." +Almaviva (375ML half-bottle) 2009,Chile,Red Wine,96.0,"Made from a blend of classic Bordeaux varieties, in which Cabernet Sauvignon predominates, Almaviva is the result of a felicitous encounter between two cultures. Chile offers its soil, its climate and its vineyards, while France contributes its winemaking savoir-faire and traditions. The result is an exceptionally elegant and complex wine. Its launch was a major milestone in the development of Chilean wines, both in Chile itself and in the international market." +Almaviva (6 Liter) 2018,"Maipo Valley, Chile",Red Wine,96.0,"Attractive dark ruby color, deep and opaque. The nose is pure, focused and layered, revealing delicate and clean aromas of blackberries, ripe cassis, currants and violet, associated with fine notes of tobacco, cedar and coffee bean. The mouth shows outstanding amplitude and balance, luscious texture, bright acidity, broad structure and persistence. The tannins are well refined, smooth and silky, enhancing the fresh and juicy character of the year. Precise and polished, the wine combines harmonious elegance, richness, ripeness and freshness in an exceptional and superb vintage." +Alphonse Mellot Edmond Sancerre Blanc 2012,"Sancerre, Loire, France",White Wine,96.0,"Pale gold yellow in colour with light green sheen - brilliant, bright and clear - a young, honest appearance. A rich and majestic nose. All is rich, ripe and powerful, whether it is fruity or floral. Density, depth and balanced graceful ""majestic nature"" are established from the outset. Honey, vanilla, lemon, brioche etc., follow each other as if in a daydream, all orchestrated through a new woody tone. Opening it makes it welcoming and tender with crisp plants revealing aniseed, menthol, licorice and spices." +Altesino Montosoli Brunello di Montalcino 2001,"Montalcino, Tuscany, Italy",Red Wine,96.0,"""Very beautiful aromas of flowers, ripe fruit and crushed blackberries. Full-bodied yet refined. Layers of tannins. Balanced. Montosoli is a great Brunello vinyard. Best after 2008."" " +Alto Moncayo Aquilon 2004,Spain,Red Wine,96.0,"""The 1,000 case luxury cuvee, the 2004 Aquilon, was fashioned from the winery's oldest vines and best material. Revealing nearly off the chart ripeness, richness, and intensity, it will undoubtedly be controversial, separating traditionalists from more progressive tasters, but I loved it. It will be interesting to see how this tour de force in winemaking ages. It is the vino equivalent of a Hummer four-wheel drive vehicle.""" +Alto Moncayo Aquilon 2002,Spain,Red Wine,96.0,"""The superb 2002 Aquilon is a selection of old vine Grenache from hillside vineyards. A gorgeously complex perfume of kirsch liqueur, black raspberries, cassis, minerals, flowers, and sweet oak is followed by a full-bodied, massively-endowed, pure, textured, well-balanced wine. Given the limited production and high quality of this fabulous effort, its high price can not be considered unfair. It should drink well for a decade. Australian winemaker Chris Ringland oversees the winemaking at this estate, a superb new discovery by broker Jorge Ordonez. This full-throttle, robust, exuberant, super-concentrated 100% Grenache offering may be the finest wine to ever emerge from this backwater Spanish appellation."" - Wine Advocate" +Alto Moncayo Aquilon 2006,Spain,Red Wine,96.0,"Dark purple. The nose offers surreal, room-filling perfume of ripe raspberry, blackberry, incense, vanilla and dried flowers. Shockingly understated on the palate, with vibrant red berry, smoked meat and baking spice flavors, silky tannins and crisp mineral bite. There's no excess fat or sweetness here. Finishes with palate-staining intensity and superb focus." +Altos las Hormigas Gualtallary Malbec 2016,"Uco Valley, Mendoza, Argentina",Red Wine,96.0,"A solid violet red color reveals a dense, concentrated, compact wine. Notes of spices and minerality make a complex nose. On the palate, a supple entry, dark berries and spices. A very structured and quite wild Malbec, with firm fine-grain tannins, showing its calcareous foundations and columns. The mouth feel is full of thrilling freshness and balance, with a long and persistent finish." +Altos las Hormigas Gualtallary Malbec 2017,"Uco Valley, Mendoza, Argentina",Red Wine,96.0,"A solid violet red color reveals a dense, concentrated, compact wine. Notes of spices and minerality make a complex nose. On the palate, a supple entry, dark berries and spices. A very structured and quite wild Malbec, with firm fine-grain tannins, showing its calcareous foundations and columns. The mouth feel is full of thrilling freshness and balance, with a long and persistent finish." +Alvear Pedro Ximenez 1830 Solera (500ML),Spain,,97.0,"The 1830 Solera is black with shades of chocolate and mahogany. Persistent aromas of cacao, dates, raisins and figs. On the palate it is dense and unctuous, with reminiscence of raisins, dried figs, tobacco and coffee with an everlasting and elegant finish." +Amapola Creek Estate Cabernet Sauvignon 2013,"Sonoma Valley, Sonoma County, California",Red Wine,96.0,"The nose on this wine opens with a luscious dollop of blackberry and red, juicy plum. Swirl the glass once or twice, and you will start to uncover darker fruit notes of blackcurrant and a bare hint of pomegranate, accented with subtle notes of oak and toasted vanilla. Take a sip, and the first thing you will notice is a firm acidity that opens quickly onto dark black fruit with just a touch of anise. As your first impression fades, you will find deeply structured tannins that fill the palate, underscoring a finish redolent with chocolate, blueberry preserves, and aged cedar. This wine evolves marvelously over the course of a glass, growing bigger and bolder as it takes in the air. The tannins unfold and show the excellent maturity of the grapes as they were brought in from the vineyard, and the fruit characters gain in intensity, building to an intricate finish that lasts for many minutes. " +Amici Beckstoffer Missouri Hopper Vineyard Cabernet Sauvignon 2016,"Oakville, Napa Valley, California",Red Wine,97.0,"A gorgeous, fragrant nose of black cherry, plum and dark chocolate is washed with hints of vanilla. The full-throttled palate is reminiscent of blackberry pie along with flavors of concentrated dark fruit and silky chocolate. Hints of clove, cassis and savory herbs pepper throughout the powerful finish." +Amici Beckstoffer To Kalon Vineyard Cabernet Sauvignon 2016,"Oakville, Napa Valley, California",Red Wine,97.0,"The power of this heritage vineyard lies in its distinct nose with classic To Kalon aromas of clay loam, wet earth and mint. Additional elevated aromatics feature blueberry jam, rhubarb compote, cassis and sweet tobacco. On the palate, the wine is both precise and dense, with soy, menthol, raspberry cordial and black raspberry jam notes. A powerful wine from start to finish, with powdery, chalky tannins and an impressively long finish. " +Anakota Helena Dakota Vineyard Cabernet Sauvignon 2010,"Knights Valley, Sonoma County, California",Red Wine,96.0,"Sourced from our Helena Dakota Vineyard on the foothills of Mount St. Helena which rises more than 4,000 feet above sea level. This distinctive, two-peaked mountain remains the heart of an ancient volcanic zone responsible for the complex, mineral-rich soils of Knights Valley and nearby grape-growing districts. The resulting wine shows complex red fruits, floral, coffee, minerality, and elegant tannins." +Anakota Helena Dakota Vineyard Cabernet Sauvignon 2012,"Knights Valley, Sonoma County, California",Red Wine,96.0,"This 12.4 acre vineyard runs southeast to northwest on the eastern side of scenic Highway 128 and possesses slopes of up to 15 degrees. Prevailing westerly winds pass over a large, cold pond and blow uphill, parallel to the rows of vines. These cooling breezes slow down the ripening of the grapes and result in wines that are packed with elegance, complexity and finesse. This wine offers a flavor profile of complex red fruits, floral, coffee, minerality, and elegant tannins." +Anakota Helena Dakota Vineyard Cabernet Sauvignon 2017,"Knights Valley, Sonoma County, California",Red Wine,96.0,"The 2017 growing season was defined by plentiful rain in the winter followed by mild conditions in spring and summer. To preserve the natural acidity in the grapes, picking began early on September 12th in the Dakota vineyard. The wines were resting in barrel prior to the Sonoma County Tubbs fire in October, therefore remained unaffected by any smoke taint. The 2017 Helena Dakota expresses perfumed aromatics of violet blossom and blackberry liquor with subtle notes of menthol and dried black currants. The luxurious, silky palate is accompanied by hints of toasted baking spices and tobacco leaf. Each element is beautifully integrated and complimented with velvety tannins and vibrant acidity, for which drive its satisfyingly long finish." +Anakota Helena Montana Vineyard Cabernet Sauvignon 2013,"Knights Valley, Sonoma County, California",Red Wine,96.0,Blend: 100% Cabernet Sauvignon +Anakota Helena Montana Vineyard Cabernet Sauvignon 2016,"Knights Valley, Sonoma County, California",Red Wine,96.0, +Anakota Helena Montana Vineyard Cabernet Sauvignon 2017,"Knights Valley, Sonoma County, California",Red Wine,96.0,"The 2017 growing season was defined by plentiful rain in the winter followed by mild conditions in spring and summer. To preserve the natural acidity in the grapes, picking began early on September 6th in the Helena Montana vineyard. The wines were resting in barrel prior to the Sonoma County Tubbs fire in October, therefore remained unaffected by any smoke taint. The 2017 Helena Montana wine possesses a deep-purple core with soft violet hues. Reminiscent of a young Bordeaux, aromatic flavors of fresh raspberry, black cherry and dried bay leaf are framed by French oak-derived nuances of toasted cardamom and vanilla. Well-structured and full-bodied, the wine offers brilliant acidity and refined tannins bringing levity, focus and balance to the long, elegant finish." +Anderson's Conn Valley Vineyards Cabernet Sauvignon Estate Reserve 2005,"Napa Valley, California",Red Wine,96.0,"""The 2005 Cabernet Sauvignon Reserve is showing even better than it did last year, which is not unusual when tasting the wines of Todd Anderson and Mac Sawyer. Dense ruby/purple to the rim, with the classic Pauillac-like nose of creme de cassis, cedar wood, a hint of tobacco leaf, and very subtle smoke, the wine displays charcoal and roasted herbs, full-bodied power, wonderfully sweet tannins, and a long, long finish. This is a 20- to 25-year wine that should just get better and better as it ages, but it is accessible enough to drink now.""" +Anderson's Conn Valley Vineyards Cabernet Sauvignon Estate Reserve 2008,"Napa Valley, California",Red Wine,98.0,"100% Cabernet Sauvignon, 100% Estate grown." +Anderson's Conn Valley Vineyards Cabernet Sauvignon Reserve (1.5 Liter Magnum) 2008,"Napa Valley, California",Red Wine,98.0,"100% Cabernet Sauvignon, 100% Estate grown." +Anderson's Conn Valley Vineyards Cabernet Sauvignon Reserve (1.5 Liter Magnum) 2009,"Napa Valley, California",Red Wine,96.0,"Dense purple with a reddish-purple edge. Red and black currents, violets and other perfumed flowers, all anchored by fantastic loamy earth and concentrated minerals. Medium to full bodied mouth feel with full mouth aftertaste. Powerful concentrated dark berry fruits are elevated by brighter red fruits but then are counterbalanced by earth, leather and graphite like minerals. The fruit and earth components are so tightly woven that once you grasped one element, the wine moves into another." +Anderson's Conn Valley Vineyards Cabernet Sauvignon Reserve (375ML half-bottle) 2005,"Napa Valley, California",Red Wine,96.0,"""The 2005 Cabernet Sauvignon Reserve is showing even better than it did last year, which is not unusual when tasting the wines of Todd Anderson and Mac Sawyer. Dense ruby/purple to the rim, with the classic Pauillac-like nose of creme de cassis, cedar wood, a hint of tobacco leaf, and very subtle smoke, the wine displays charcoal and roasted herbs, full-bodied power, wonderfully sweet tannins, and a long, long finish. This is a 20- to 25-year wine that should just get better and better as it ages, but it is accessible enough to drink now.""" +Anderson's Conn Valley Vineyards Cabernet Sauvignon Reserve (375ML half-bottle) 2009,"Napa Valley, California",Red Wine,96.0,"Dense purple with a reddish-purple edge. Red and black currents, violets and other perfumed flowers, all anchored by fantastic loamy earth and concentrated minerals. Medium to full bodied mouth feel with full mouth aftertaste. Powerful concentrated dark berry fruits are elevated by brighter red fruits but then are counterbalanced by earth, leather and graphite like minerals. The fruit and earth components are so tightly woven that once you grasped one element, the wine moves into another." +Anderson's Conn Valley Vineyards Eloge (1.5 Liter Magnum) 2007,"Napa Valley, California",Red Wine,98.0,"65% Cabernet Sauvignon, 25% Cabernet Franc, 7% Petit Verdot, 3% Merlot" +Anderson's Conn Valley Vineyards Eloge 2005,"Napa Valley, California",Red Wine,96.0,"A blend of 65% Cabernet Sauvignon, 25% Cabernet Franc, 5% Merlot and 5% Petit Verdot." +Anderson's Conn Valley Vineyards Eloge 2007,"Napa Valley, California",Red Wine,98.0,"65% Cabernet Sauvignon, 25% Cabernet Franc, 7% Petit Verdot, 3% Merlot" +Anderson's Conn Valley Vineyards Eloge (6.0 Liter Bottle) 2007,"Napa Valley, California",Red Wine,98.0,"65% Cabernet Sauvignon, 25% Cabernet Franc, 7% Petit Verdot, 3% Merlot. " +Andre Brunel Chateauneuf-du-Pape Les Cailloux Centenaire 1998,"Chateauneuf-du-Pape, Rhone, France",Red Wine,96.0,"On the nose are aromas of dried flowers, kirsch, blackcurrants, and blackberries, with spice-box, roasted meats, plum, and licorice on the palate. Mouth filling texture, brilliant concentration, and a big finish." +Andre Brunel Chateauneuf-du-Pape Les Cailloux Centenaire 2000,"Chateauneuf-du-Pape, Rhone, France",Red Wine,96.0,"A rich and expressive nose: black currants, blackberries... Powerful and roundness in the mouth: an impressively long finish in the mouth, the tannins are perfectly mellow. There are dominant aromas of undergrowth and leather. " +Andre Brunel Chateauneuf-du-Pape Les Cailloux Centenaire 2005,"Chateauneuf-du-Pape, Rhone, France",Red Wine,96.0,"Only produced in great vintages, this is an exceptional fine cuvée with an incomparably long and elegant finish. " +Andre Brunel Chateauneuf-du-Pape Les Cailloux Centenaire (3L) 2007,"Chateauneuf-du-Pape, Rhone, France",Red Wine,96.0,"The Cuvee Centenaire bottling is among the rarest and most sought after wines of Châteauneuf-du-Pape. It is produced from ancient vines planted in 1889. The Centenaire vineyard is planted to roughly 80% Grenache, 12% Mourvedre and 8% Syrah. The Grenache, which is often picked at 16 degrees potential alcohol, is vinified and aged in tank, while the Mourvedre and Syrah are finished in small barrels for up to 24 months. Brunel only makes the Cuvée Centenaire in the finest vintages, otherwise the old-vine fruit is used in the ""regular"" Les Cailloux bottling." +Andremily Mourvedre 2014,"Santa Barbara, Central Coast, California",Red Wine,96.0,"The 2014 Andremily Mourvedre, the first varietally designated Mourvedre, is terrific blend of 86% Mourvedre from Alta Mesa Vineyard, co-fermented with 14% Syrah from White Hawk Vineyard. The fruit was 30% destemmed, and aged for 23 months in 30% new French barrique. The result of all of this is a full throttle, rich- textured wine with soaring aromatics of spiced meats, chocolate, crushed pepper, and earth. A wine packed with all of the sexiest elements of Mourvedre. " +Andremily Syrah No. 1 2012,"Santa Barbara, Central Coast, California",Red Wine,97.0,"The 2012 Andremily No.1 is a 100% delicious Cuvee’ comprised predominantly of Syrah from the Famed White Hawk Vineyard in Cat Canyon, and Larner Vineyard in Ballard Canyon. The Syrah was 5% co-fermented with Viognier, and 70% destemmed. It was bottled after 25 months in French barrique, of which 58% where new. The final cuvee was finished off with a dollop of Mourvedre, serving as the cherry on top." +Andremily Syrah No. 2 (1.5 Liter Magnum) 2013,"Santa Barbara, Central Coast, California",Red Wine,99.0,"Andremily is excited to share with all of you the 2013 Andremily No.2. The No.2, which similar to the first release, is comprised predominantly of Syrah from the Famed White Hawk Vineyard in Cat Canyon, and Larner Vineyard in Ballard Canyon. The Syrah was 4% co-fermented with Viognier, and includes 35% whole cluster. We included 11% Mourvedre in the final blend, which was bottled after 23 months in French barrique, of which 62% where new." +Andremily Syrah No. 2 2013,"Santa Barbara, Central Coast, California",Red Wine,99.0,"Andremily is excited to share with all of you the 2013 Andremily No.2. The No.2, which similar to the first release, is comprised predominantly of Syrah from the Famed White Hawk Vineyard in Cat Canyon, and Larner Vineyard in Ballard Canyon. The Syrah was 4% co-fermented with Viognier, and includes 35% whole cluster. We included 11% Mourvedre in the final blend, which was bottled after 23 months in French barrique, of which 62% where new." +Andremily Syrah No. 3 (1.5 Liter Magnum) 2014,"Santa Barbara, Central Coast, California",Red Wine,96.0,"The 2014 Andremily No.3 is a sensational blend of 89% Syrah, 8% Mourvedre, and 3% Viognier. The fruit sources are White Hawk Vineyard in Cat Canyon, and Larner Vineyard in Ballard Canyon, with the Mourvedre coming from the Alta Mesa Vineyard in the Cuyama Valley. The Syrah was co-fermented with Viognier, and the final blend enjoyed just over 50% whole cluster. Andremily No.3 was raised in 60% new French barrique, and bottled after 23 months, without finning or filtration. This wine exploded from the glass with loads of blue fruit, violet, and spice, a full rich texture, and a generous finish." +Andremily Syrah No. 3 2014,"Santa Barbara, Central Coast, California",Red Wine,96.0,"The 2014 Andremily No.3 is a sensational blend of 89% Syrah, 8% Mourvedre, and 3% Viognier. The fruit sources are White Hawk Vineyard in Cat Canyon, and Larner Vineyard in Ballard Canyon, with the Mourvedre coming from the Alta Mesa Vineyard in the Cuyama Valley. The Syrah was co-fermented with Viognier, and the final blend enjoyed just over 50% whole cluster. Andremily No.3 was raised in 60% new French barrique, and bottled after 23 months, without finning or filtration. This wine exploded from the glass with loads of blue fruit, violet, and spice, a full rich texture, and a generous finish." +Andremily Syrah No. 4 (1.5 Liter Magnum) 2015,"Santa Barbara, Central Coast, California",Red Wine,97.0,"The incredibly sexy 2015 Andremily No.4. is a blend of 90% Syrah, Co-fermented with 6% Viognier, and finished off with a dash of Mourvedre. No.4 enjoyed 22 months in 70% New French Barrique, and was bottled without fining or filtration. The fruit sources for Andremily No.4 are the White Hawk Vineyard in Cat Canyon, Larner Vineyard in Ballard Canyon, as well as the addition of Watch Hill Vineyard in Alisos Canyon to the blend. this baby sure delivers, offering a rich texture, plenty of classic Syrah spice notes, as well as, bushels of black and blue fruit character." +Andremily Syrah No. 4 2015,"Santa Barbara, Central Coast, California",Red Wine,97.0,"The incredibly sexy 2015 Andremily No.4. is a blend of 90% Syrah, Co-fermented with 6% Viognier, and finished off with a dash of Mourvedre. No.4 enjoyed 22 months in 70% New French Barrique, and was bottled without fining or filtration. The fruit sources for Andremily No.4 are the White Hawk Vineyard in Cat Canyon, Larner Vineyard in Ballard Canyon, as well as the addition of Watch Hill Vineyard in Alisos Canyon to the blend. this baby sure delivers, offering a rich texture, plenty of classic Syrah spice notes, as well as, bushels of black and blue fruit character." +Andremily Syrah No. 6 2017,"Santa Barbara, Central Coast, California",Red Wine,98.0,"The 2017 Andremily No.6, is cut from the same cloth as previous wines in the sequence, but perhaps just a touch better. Andremily No.6 is a blend of 92% Syrah, from White Hawk, Larner, Harrison-Clarke, and Watch Hill Vineyards, coupled with 5% Mourvedre, from Alta Mesa, and finished off with just a dab of Viognier. Andremily No.6 is an incredible sexy, rich and full-bodied elixir, that leaps from the glass. Offering bushels of black and blue fruit, scorched earth, and exotic spice. No.6 has a wonderful texture with fine tannins, and plenty of natural acidity to deliver great lift." +Antinori Pian delle Vigne Brunello di Montalcino 1997,"Montalcino, Tuscany, Italy",Red Wine,97.0,"The latter part of winter and the beginning of Spring were very mild for the time of year and also very dry. This produced early budding - some 10 days earlier than average. In April the temperature suddenly dropped, causing and arrest in growth of the buds. The Summer was very hot and sunny and this weather continued for the whole of September and for the duration of the harvest, which meant that at the time of picking, the grapes were exceptionally healthy and with a high sugar concentration. Overall the 1997 harvest was somewhat less than expected in terms of quantity - but in terms of quality, this is an exceptional vintage, probably even better than the much acclaimed 1990 vintage and one of the greatest of the last fifty years. Full-structured and velvety, with rich perfumes and hints of flowers, vanilla and chocolate." +Antinori Solaia (1.5 Liter Magnum) 1997,"Tuscany, Italy",Red Wine,97.0,"Intensely fruity and complex with a good structure, well-balanced, with soft tannins and a lingering finish. Displays unmistakable varietal flavor while retaining strong regional character." +Antinori Solaia (1.5 Liter Magnum) 2015,"Tuscany, Italy",Red Wine,98.0,"The 2015 Solaia is an intense ruby red in color with purple highlights. The nose offers powerful notes of plum jam and berry fruit. Perfectly integrated sensations of chocolate and licorice give way on the finish to hints of fresh mint. Harmonious on the palatewith excellent structure and silky tannins, the wine concludes with an extremely long finish and lingering aftertaste." +Antinori Solaia 1997,"Tuscany, Italy",Red Wine,97.0,"Intensely fruity and complex with a good structure, well-balanced, with soft tannins and a lingering finish. Displays unmistakable varietal flavor while retaining strong regional character." +Antinori Solaia 2004,"Tuscany, Italy",Red Wine,96.0,"Blend: 75% Cabernet Sauvignon, 20% Sangiovese, 5% Cabernet Franc " +Antinori Solaia 2005,"Tuscany, Italy",Red Wine,97.0,"Solaia, which means the ‘sunny one' in Italian, is a 25-acre south-west facing vineyard that is contiguous to the Tignanello Vineyard in Chianti Classico. Solaia is produced only in exceptional years. It was not produced in the 1980, 1981, 1983, 1984 and 1992 vintages. " +Antinori Solaia 2015,"Tuscany, Italy",Red Wine,98.0,"The 2015 Solaia is an intense ruby red in color with purple highlights. The nose offers powerful notes of plum jam and berry fruit. Perfectly integrated sensations of chocolate and licorice give way on the finish to hints of fresh mint. Harmonious on the palatewith excellent structure and silky tannins, the wine concludes with an extremely long finish and lingering aftertaste." +Antinori Solaia 2016,"Tuscany, Italy",Red Wine,97.0,"A ruby red color, 2016 Solaia distinguishes itself with aromatic notes of ripe dark fruit fused with sensations of aromatic herbs and mint; notes of chocolate alternate with spicy suggestions of white pepper. The palate of this red wine is rich with silky tannins. The finish is persistent and indicates optimal aging potential. " +Antinori Solaia (3 Liter Bottle) 2015,"Tuscany, Italy",Red Wine,98.0,"The 2015 Solaia is an intense ruby red in color with purple highlights. The nose offers powerful notes of plum jam and berry fruit. Perfectly integrated sensations of chocolate and licorice give way on the finish to hints of fresh mint. Harmonious on the palatewith excellent structure and silky tannins, the wine concludes with an extremely long finish and lingering aftertaste." +Aperture Alexander Valley Red Blend 2018,"Alexander Valley, Sonoma County, California",Red Wine,96.0,"A stunning expression of our most complex Bordeaux blend, this wine is composed of one-third cabernet sauvignon, one-third merlot and expertly balanced by the remaining blend of malbec, cabernet franc and petit verdot. " +Araujo Eisele Vineyard Cabernet Sauvignon 2003,"Calistoga, Napa Valley, California",Red Wine,98.0,"Produced from a small crop of concentrated, ripe berries, this deep and dark wine exhibits an endless bouquet of crushed blackberries and cassis, highlighted by floral nuances of dried lavender and chamomile, and spicy notes of clove and nutmeg. In the mouth, it is a full-bodied, seamless wine, with a juicy mid-palate layered with hazelnuts, mocha, pencil lead and licorice, and a rich, lingering finish of wet granite and fine tannins. " +Araujo Eisele Vineyard Syrah 1994,"Calistoga, Napa Valley, California",Red Wine,98.0,"This wine's aroma is intensely spicy, full of clove and cinnamon, black tea and smoke. In the mouth the rich flavors of plum, chocolate, toffee and pepper, are deep without heaviness, and the massive but fine silky tannins linger through the long sweet finish. This wine is supple enough to drink now, but will develop in complexity with 5 to 10 years of cellaring." +Argiano Brunello di Montalcino Riserva 2010,"Montalcino, Tuscany, Italy",Red Wine,96.0,"To celebrate the best vintages, the winery decide to release a Brunello di Montalcino Riserva. They will issue this wine only in the best vintage with special numbered labels." +Argyros Vinsanto 12 Year 2001,"Santorini, Greece",,96.0,"The grapes used for Estate Argyros Assyrtiko are harvested from the oldest parcels of theestate. Located in Episkopi, the average age of the vines is 150 years old, with some vinesover 500 years old. Yields are extremely low. The ungrafted vines are basket pruned, and dryfarmed. Grapes are hand-picked in August." +Arietta H Block Hudson Vineyard Red 2002,"Napa Valley, California",Red Wine,96.0,"""A prodigious effort, possibly the finest Arietta made to date, is the 2002 Arietta (equal parts Merlot and Cabernet Franc). Huge tannin is present along with monstrous extract and richness. Nevertheless, it is an elegant, pure offering displaying the same stunning character as its siblings. Notions of menthol, scorched rocks, mocha, black cherries, cassis, chocolate, and espresso are found in this terrific offering. It will be developed and forward upon release, but will last for 12-15 years. Winemaker and part owner, John Kongsgaard, produces these wines in partnership with auctioneer, Fritz Hatton. They are all fashioned from fruit grown in the ""H Block"" of the Hudson Vineyard, the highest point on that large ranch. The vineyard is planted in white volcanic ash-dominated soils. The Cabernet Franc/Merlot blend is the Arietta and the Syrah/Merlot blend is named Variation One. These striking offerings have a European sensitivity for elegance, structure, and delineation, but are clearly products of California, as evidenced by their prodigious ripeness as well as intensity. They are expensive, but impressive efforts that should be long-lived."" - Wine Advocate" +Arietta H Block Hudson Vineyards Red Blend 2000,"Carneros, California",Red Wine,96.0,"The ""H Block"" designation was first added to the Arietta Red Wine label in this vintage, and honors the extraordinary, 2.3 acre Cabernet Franc block at the top of the Hudson Ranch in Napa/Carneros which forms the core of the wine. This is another miraculously rich and dramatically aromatic Arietta, and once again is a product of a relatively cool and late vintage. Critic Robert Parker gave the 2000 Arietta H Block the highest score of any Napa Red Wine in the 2000 vintage. The blend is 50% Cabernet Franc and 50% Merlot. This wine has harmonized beautifully in the bottle and is hard to resist, though should evolve for another five or ten years. " +Arkenstone Estate Red 2015,"Howell Mountain, Napa Valley, California",Red Wine,97.0,"Ruby red with deep black undertones, this dense yet elegantly focused beauty is a very special expression of the Howell Mountain terroir, and the beautiful 2015 vintage. Cassis, violet, mocha, graphite, and dried tea leaves greet the nose, along with our signature earth, sweet tobacco, and leather. A clean minerality and bright acidity are complemented by dark black cherry, star anise and mocha on the front palate while deep espresso, blackberry cobbler, blueberries, lavender and baking spices roundly fill the mid-palate. Very fine, lush tannins hold the richly dark chocolate, cassis-laden, long velvety finish. This wine is drinking beautifully balanced and youthfully vibrant right now, but will easily lie down for 30+ years." +Arrowood Reserve Speciale Cabernet Sauvignon 1997,"Sonoma Valley, Sonoma County, California",Red Wine,97.0,"This is a beautiful deep purple and ruby colored wine with incredible depth and flavor. While the nose is complex, with blackberry and plum fruit, spice and notes of cedar in the background, on the palate, the wine spills over with rich blackberry and cherry fruit flavors and cassis. The toasty oak and spice flavors combine to provide a wonderfully pleasing finish." +Arrowood Saralee's Vineyard Syrah 2002,"Sonoma County, California",Red Wine,96.0,"Arrowood considers their Saralee's Vineyard Syrah the ""Grande Dame"" of their Syrah portfolio. Not only is it the first Syrah Arrowood produced, but it also comes from one of Sonoma County's ""Grande Dame"" vineyards. Saralee's Vineyard, located in the cool-climate Russian River Valley, has a reputation for producing some of California's finest fruit and with the 2002 Saralee's Vineyard Syrah it's easy to see why. In fact, Robert Parker calls this one of the greatest Syrahs that Arrowood has ever produced. " +Artadi Pagos Viejos 1995,"Rioja, Spain",Red Wine,96.0,"Many say Artadi is one of the most sought-after estates in Rioja and Pagos Viejos one of the most sought-after wines in the world. Decades of intense labor in the vineyards have given famed winemaker and owner Juan Carlos Lopez de Lacalle the experience and passion for making wines of true excellence. Containing fine aromas and an elegant mouth feel that is fruit-forward on the mid-palate, and supported by round tannins, Artadi's Pagos Viejos is the ideal representation of what an artisanal wine should taste like when carefully made from the old-vine Tempranillo that is grown in Rioja Alavesa. An experience to be enjoyed on special occasions, this wine is dark cherry red in color and is both elegant and aromatic. Containing intriguing aromas of dark chocolate, black minerals, cigar box and fresh coconut, this wine is unctuous and elegant with a very long finish. " +Artadi Pagos Viejos 1998,"Rioja, Spain",Red Wine,96.0,"An experience to be enjoyed on special occasions, this wine is dark cherry red in color and is both elegant and aromatic. Containing intriguing aromas of dark chocolate, black minerals, cigar box and fresh coconut, this wine is unctuous and elegant with a very long finish. " +Artadi Pagos Viejos 2001,"Rioja, Spain",Red Wine,97.0,"The Artadi estate was created in 1985 by the dynamic visionary winemaker, Juan Carlos Lopez de la Calle. His objective and vision was to seek and nurture the concept that Tempranillo, when cultivated at high altitudes, low-cropped, and from old vines, produces extraordinarily rich, deeply colored, and profound wines. This, coupled with specific barrel treatment (with minor American oak influences) produces one of Rioja's most exciting new wines. Artadi is about purity of deeply extracted fruit with almost Burgundian textures, sheer power, complexity, and startling finesse! The results have have been astounding." +Artadi Vina el Pison 2007,"Rioja, Spain",Red Wine,98.0,"Deep cherry in color with a vivacious violet rim, the wine has clean aromas of ripe black fruit, English toffee and dark chocolate. On the palate it is complex and meaty with notes of ripe berries, toasted malt and sweet tobacco. A wine with surprising expressiveness that is full of character and personality, it has natural elegance and great propensity for long bottle aging." +Artadi Vina el Pison Riserva 1996,"Rioja, Spain",Red Wine,97.0,"The wine that hails from this unique vineyard site reflects the expertise of Juan Carlos' ancestors and their passion to keep the spirit of the old-vine Tempranillo alive. The vineyard's unique micro-ecosystem produces a wine that is densely chromatic, deep and complex on the palate with a fresh ripeness and fine, elegant tannins. Containing seductive aromas and a long, lingering finish, this wine has an exclusive character and personality that gives it an exceptional propensity for long bottle aging." +Attilio Ghisolfi Barolo Bussia Bricco Visette 2011,"Barolo, Piedmont, Italy",Red Wine,96.0,"The color is a deep garnet red, with a nose that reveals elegantand intense red fruit and various spices. The taste is rich andmajestic with medium tannins majestic with medium tannins." +Au Bon Climat Bien Nacido Vineyard Pinot Noir 2010,"Central Coast, California",Red Wine,96.0,"This wine is quintessential Bien Nacido, big, rich and velvety on the palate with loads of forward cherry & strawberry fruit framed in with attractive spice, cola and toasty characteristics adding complexity. This wine is eminently drinkable today but also has a great track record of aging for 6-8 years." +Aubert CIX Vineyard Chardonnay 2014,"Sonoma Coast, Sonoma County, California",White Wine,99.0,"The 2014 CIX Estate Chardonnay conveys the quintessential hybrid of Sonoma Coast and Grand Cru White Burgundy. CIX’s ethereal blend of subtleties and power are tightly wound into one. Please note the greenish hue on the edge of the glass, which is indicative of the health of the wine. Subtle aromatics of powdered citrus and jasmine are complimented by youthful minerality. The evolution of the wine begins to display more expressive notes of baked pear, straw and fresh herbs. The palate reveals more tension with vin-de-garde acidity. The 2014 CIX is built to age with its combination of power, tension and structure, and will cellar for the next 10 to 15 years. The wine has a slight hazy clarity showing our commitment to minimal intervention winemaking." +Aubert CIX Vineyard Pinot Noir (1.5L Magnum) 2015,"Sonoma Coast, Sonoma County, California",Red Wine,99.0,"Aubert’s first ever Estate Pinot Noir, the CIX is Grand Cru Aubert. This Pinot is the winery’s most reminiscent of red Burgundy. This cooler site in Forestville creates an ethereal, delicate, and elegant wine." +Aubert CIX Vineyard Pinot Noir 2014,"Sonoma Coast, Sonoma County, California",Red Wine,96.0,"Please note the color saturation, clarity and health of this wine. Initial aromatics offer a charming blend of black cherry pie, blood oranges and cocoa powder. Tertiary aromas of smoked tea leaves, charcuterie and Tahitian vanilla meld together into a distinct and engaging array of aromatics. Across the palate the wine offers plush tannins and enticing freshness. The 2014 CIX is a dynamic wine from a memorable vintage. Suggested drinking window is 2018 through 2029." +Aubert CIX Vineyard Pinot Noir 2015,"Sonoma Coast, Sonoma County, California",Red Wine,99.0,"Aubert’s first ever Estate Pinot Noir, the CIX is Grand Cru Aubert. This Pinot is the winery’s most reminiscent of red Burgundy. This cooler site in Forestville creates an ethereal, delicate, and elegant wine." +Aubert Eastside Russian River Chardonnay 2015,"Russian River, Sonoma County, California",White Wine,98.0,"Eastside is Aubert's only Russian River AVA Chardonnay. Located on a hill overlooking the expanses of the Russian River Valley, these vines grow on the rockiest of sites; a distinguishing aspect of its terroir. The rare Chardonnay clonal selection is matched to this low vigor site, equating to a remarkably powerful, yet delicately elegant wine." +Aubert Eastside Russian River Chardonnay 2017,"Russian River, Sonoma County, California",White Wine,98.0,"The 2017 Eastside Chardonnay is powerful and opulent. Notes of the stony terroir weave through seductive aromas of lemon zest, apple crumble, and orange blossom. The palate is carried by an integrated acid line complemented by dried apricot and lime dust. The greenish hue on the edge of the glass is indicative of the health of the wine. Expressive and palate-staining, the 2017 Eastside has the energy to drink young for over a decade. The wine is slightly hazy showing our commitment to minimal intervention winemaking." +Aubert Hudson Vineyard Chardonnay (1.5L Magnum) 2015,"Carneros, California",White Wine,98.0,"The Hudson Vineyard runs along a northern stretch of Carneros soils that are thin and rocky. As a result, these 20-year-old vines struggle to produce even the most modest of crops. " +Aubert Hudson Vineyard Chardonnay 2015,"Carneros, California",White Wine,98.0,"The Hudson Vineyard runs along a northern stretch of Carneros soils that are thin and rocky. As a result, these 20-year-old vines struggle to produce even the most modest of crops. " +Aubert Larry Hyde & Sons Vineyard Chardonnay (1.5 Liter) 2014,"Carneros, California",White Wine,97.0,"There is a greenish hue on the edge of the glass, which is indicative of the health of the wine. Initially, aromatics of white nectarines and green apple showcase delicate fruits. Secondary aromas evolve with time to form more expressive, complex notes of bergamot, sea air and citrus flowers. The palate is racy, yet rich, with intense gras and oily textures. Layered with extract and acid, the 2014 Larry Hyde & Sons has what it takes to age for the next 10 to 15 years. The wine has a slight hazy clarity showing our commitment to minimal intervention winemaking." +Aubert Powder House Chardonnay 2017,"Sonoma Coast, Sonoma County, California",White Wine,97.0,"The inaugural 2017 Powder House Chardonnay makes a powerful debut with captivating aromas of ripe peach, green apple, lime powder, and candied lemon peel. The palate is intense and concentrated with lemon cream, citrus spice, and a savory note. This wine is full-bodied and complex with a precision acid backbone leading to a long and persistent finish. There is a healthy greenish hue on the edge of the glass. The wine is slightly hazy showing our commitment to minimal intervention winemaking." +Aubert Sugar Shack Estate Chardonnay (1.5L Magnum) 2014,"Alexander Valley, Sonoma County, California",White Wine,97.0,"The 2014 Sugar Shack Estate Chardonnay continues to blur the lines between Napa Valley Chardonnay and its Sonoma cousins. Restrained and tightly integrated, the 2014 is the most dynamic bottling yet. Please note the greenish hue on the edge of the glass, which is indicative of the health of the wine. Initial intensities of lemon meringue, candied citrus and dried papaya offer more primary notes. Secondary nuances of honeysuckle, graham cracker and spiced apple offer intrigue and oenological insight. While the palate has exceptional density and concentration, it is laced with refreshing minerality. The wine’s significant palate presence and ample acidity bode well for 7 – 8 years of cellar life. The wine has a slight hazy clarity showing Aubert’s commitment to minimal intervention winemaking." +Aubert Sugar Shack Estate Chardonnay 2014,"Napa Valley, California",White Wine,97.0,"The 2014 Sugar Shack Estate Chardonnay continues to blur the lines between Napa Valley Chardonnay and its Sonoma cousins. Restrained and tightly integrated, the 2014 is the most dynamic bottling yet. Please note the greenish hue on the edge of the glass, which is indicative of the health of the wine. Initial intensities of lemon meringue, candied citrus and dried papaya offer more primary notes. Secondary nuances of honeysuckle, graham cracker and spiced apple offer intrigue and oenological insight. While the palate has exceptional density and concentration, it is laced with refreshing minerality. The wine’s significant palate presence and ample acidity bode well for 7 – 8 years of cellar life. The wine has a slight hazy clarity showing our commitment to minimal intervention winemaking." +Aubert Sugar Shack Estate Chardonnay 2015,"Napa Valley, California",White Wine,99.0,"The 2015 Sugar Shack Estate Chardonnay is a wine of immense proportion and is a thrill to drink. Full of brazen character, it astonishingly never crosses the line. Please note the greenish hue on the edge of the glass, which is indicative of the health of the wine. An inviting nose of honeyed citrus, candle wax, florals and a hint of bacon fat. Flavors focus on golden apple juice with baking spice and fennel adding complexity. A creamy texture frames the tasting experience, while the acid wash keeps this liquid confection lively and in check. The 2015 Sugar Shack will probably last a decade, but why wait? The wine is slightly hazy showing their commitment to minimal intervention winemaking." +Aubert Sugar Shack Estate Chardonnay 2017,"Napa Valley, California",White Wine,98.0,"The 2017 Sugar Shack Estate Chardonnay is a compelling wine. Aromatics of green apple, salted caramel, pecan pie, and honeysuckle intertwine with wafts of exotic citrus oils. Rich and forward on the mouth, the layers of lush orchard fruits are integrated with refined hints of savory spices that saturate the palate a leave a lasting impression. This is a stunning Chardonnay to drink now or hold for 10 years. The wine is slightly hazy showing our commitment to minimal intervention winemaking." +Aubert UV-SL Vineyard Chardonnay (1.5 Liter Magnum) 2012,"Sonoma Coast, Sonoma County, California",White Wine,97.0,"2012 is one of Aubert's most concentrated and intriguing UV-SL Chardonnays to date. Night harvests and refrigerated trucks were used to ensure the preservation of flavor nuances. Primary fermentation was conducted in barrel and took nearly six months to complete. This long and arduous process results in wines with outstanding freshness, lively aromatics, and telltale nuances that retain site specificity. The 2012 UV-SL Chardonnay was aged in 100% new French oak barrels for 11 months, then carefully racked to tank for three months to clarify and concentrate before being bottle unfined and unfiltered." +Aubert UV-SL Vineyard Chardonnay (1.5 Liter Magnum) 2014,"Sonoma Coast, Sonoma County, California",White Wine,96.0,"The 2014 UV-SL Vineyard Chardonnay is Aubert’s interpretation of the ‘real Sonoma Coast.’ In the far, westerly reaches of the rugged California coastline, UV-SL defies the extreme cool climate for which the area is known. Please note the greenish hue on the edge of the glass, which is indicative of the health of the wine. Initial fruit aromatics of orange oils, dried apricots and ripe white peaches fill the glass. Notes of sea air, roasted nuts, and baking spices intermingle with the ripe fruits. The texture is oily and rich with a clean, crisp wash of acidity in the finish. The 2014 UV-SL Chardonnay has the phenolic and acid structure to age on a slow path over the next 7 to 8 years. The wine has a slight hazy clarity showing the winery’s commitment to minimal intervention winemaking." +Aubert UV-SL Vineyard Chardonnay 2012,"Sonoma County, California",White Wine,96.0,"2012 is one of Aubert's most concentrated and intriguing UV-SL Chardonnays to date. Night harvests and refrigerated trucks were used to ensure the preservation of flavor nuances. Primary fermentation was conducted in barrel and took nearly six months to complete. This long and arduous process results in wines with outstanding freshness, lively aromatics, and telltale nuances that retain site specificity. The 2012 UV-SL Chardonnay was aged in 100% new French oak barrels for 11 months, then carefully racked to tank for three months to clarify and concentrate before being bottle unfined and unfiltered." +Aubert UV-SL Vineyard Chardonnay 2014,"Sonoma Coast, Sonoma County, California",White Wine,96.0,"The 2014 UV-SL Vineyard Chardonnay is Aubert's interpretation of the 'real Sonoma Coast.' In the far, westerly reaches of the rugged California coastline, UV-SL defies the extreme cool climate for which the area is known. Please note the greenish hue on the edge of the glass, which is indicative of the health of the wine. Initial fruit aromatics of orange oils, dried apricots and ripe white peaches fill the glass. Notes of sea air, roasted nuts, and baking spices intermingle with the ripe fruits. The texture is oily and rich with a clean, crisp wash of acidity in the finish. The 2014 UV-SL Chardonnay has the phenolic and acid structure to age on a slow path over the next 7 to 8 years. The wine has a slight hazy clarity showing commitment to minimal intervention winemaking." +Aubert UV-SL Vineyard Pinot Noir 2014,"Sonoma Coast, Sonoma County, California",Red Wine,98.0,"Aubert most masculine Pinot Noir, the UV-SL is opulent in color, reflecting a tangible fullness across the palate. The vineyard’s proximity to the ocean is deceptive, as the notably warm climate allows the grapes to reach our optimal ripeness. " +Auguste Clape Cornas 2015,"Cornas, Rhone, France",Red Wine,97.0,#77 +Austin Hope Cabernet Sauvignon 2016,"Paso Robles, Central Coast, California",Red Wine,96.0,"Deep ruby in color, the 2016 Austin Hope Cabernet Sauvignon expresses intense fragrances of black currants, ripe black cherries, and blackberries with subtle notes of violets, mocha, and dried spices. It’s a big, powerful, modern-styled wine with velvety tannins and heaps of juicy blackberry and cherry fruit, while nuances of cedar, clove, and vanilla bean round out the long, smooth finish. It’s full-bodied, rich and balanced by fresh acidity with a supple, polished tannin structure." +Avignonesi Vin Santo Occhio di Pernice (375ML half-bottle) 1999,"Tuscany, Italy",,98.0,"Deep amber in color, this wine shows elements of dark chocolate, dried figs and candied red fruit underlined by smokey, balsamic notes. Occhio di Pernice 1999 is incredibly rich and full on the palate, with hints of juniper berries and typical Mediterranean flora and a lingering, smooth, sweet finish." +Bacio Divino Janzen Beckstoffer To Kalon Cabernet Sauvignon 2014,"Napa Valley, California",Red Wine,97.0,"Andy Beckstoffer’s To Kalon Vineyard is considered perhaps the best vineyard in all of Napa Valley. Soils, aspect, drainage, meticulous growing practices- all have a part in the remarkability of this site. Wines from this vineyard are renowned for incredible delicacy, finesse and elegance. Bacio Divino's Janzen Beckstoffer To Kalon Cabernet Sauvignon is infused with the vineyard’s signature minerality, red fruit and graphite." +Banfi Poggio alle Mura Brunello di Montalcino 1997,"Montalcino, Tuscany, Italy",Red Wine,96.0,"Seductive, silky, smoky red that is deep ruby in color with a nose that explodes with violets, fruits and berries as well as cigar box, cedar and exotic spices. Unfiltered to retain subtle nuances." +Barnett Vineyards Rattlesnake Cabernet Sauvignon (1.5L Magnum) 2013,"Spring Mountain District, Napa Valley, California",Red Wine,98.0,"The 2013 Rattlesnake is nearly black in color. The complex nose is very serious in its youth, but after a bit of air the layers of complexity emerge. Blackcurrant puree and fresh blackberries are matched with dark chocolate, crushed violets and coffee grounds. Beautiful underlying aromas of spring rain and volcanic earth begin to emerge. Silky at the beginning the tannins begin to emerge and show the wines youth. Blueberry pie and more dark chocolate are prominent on the palate. The sizeable tannins are in a chalky complex form that are matched by the acidity but scream for cellaring. " +Barnett Vineyards Rattlesnake Cabernet Sauvignon 2012,"Napa Valley, California",Red Wine,96.0,"Intensely dark purple in color this vintage the wine is big and very concentrated. Aromas of raspberries and vanilla bean are complemented by dark chocolate and licorice. Layers of allspice, clove and cassis are also apparent. Upon tasting the wine is very viscous with darker fruit flavors to match the vanilla and pure black peppercorn emerges. The tannins are quite firm with great acidity to back it up. Although some bottle bouquet will begin to develop after ten years this is an ager, for those with patience this wine will progress gracefully for the next 20 years." +Barnett Vineyards Rattlesnake Cabernet Sauvignon 2013,"Spring Mountain District, Napa Valley, California",Red Wine,98.0,"The 2013 Rattlesnake is nearly black in color. The complex nose is very serious in its youth, but after a bit of air the layers of complexity emerge. Blackcurrant puree and fresh blackberries are matched with dark chocolate, crushed violets and coffee grounds. Beautiful underlying aromas of spring rain and volcanic earth begin to emerge. Silky at the beginning the tannins begin to emerge and show the wines youth. Blueberry pie and more dark chocolate are prominent on the palate. The sizeable tannins are in a chalky complex form that are matched by the acidity but scream for cellaring. " +Bartolo Mascarello Barolo 2010,"Barolo, Piedmont, Italy",Red Wine,96.0,#50 +Beaux Freres The Upper Terrace Pinot Noir 2012,"Ribbon Ridge, Willamette Valley, Oregon",Red Wine,97.0,"Gorgeous yet subtle notes of plum, Asian spice, black and blue fruits and forest flora emanate from the perfume. Full-bodied but still holding back, it has great delineation, focus, purity and richness. Some patience will be essential to appreciate the future glories of this very limited cuvée from our steep terraced vineyard. " +Bedrock Wine Company Drummonds Vineyard Petite Sirah 2015,California,Red Wine,96.0,"The Drummond's Petite Sirah is fashioned after the great, long-lived Petite Sirah's of the 1970's like Ridge and Freemark Abbey. The wine is sourced from Eaglepoint Ranch in Mendocino and the Palisades vineyard in Calistoga." +Bedrock Wine Company Weill Vineyard Syrah Exposition 2 2012,"Sonoma Valley, Sonoma County, California",Red Wine,96.0,"Blend: 92% Syrah, 8% Viognier" +Bedrock Wine Company Weill Vineyard Syrah Exposition 2 2013,"Sonoma Valley, Sonoma County, California",Red Wine,96.0,"Bedrock Wine Company's third and final year of this experiment, as Syrah decline is unfortunately starting to ravage this wonderful vineyard. All sourced from the various aspects, clones, and blocks of Weill a Way Vineyard located at the mouth of Sonoma Valley, these wines are a love-letter to the LaLa wines (La Landonne, La Turque and La Mouline) of Guigal in Cote Rotie." +Behrens & Hitchcock Napa Valley Cabernet Sauvignon 2001,"Napa Valley, California",Red Wine,96.0,"Blend: 80% Cabernet Sauvignon, 20% Merlot" +Bell Wine Cellars Clone 6 Cabernet Sauvignon 2016,"Rutherford, Napa Valley, California",Red Wine,96.0,"Cabernet Sauvignon Clone 6, Bell Wine Cellars' flagship wine, is a plant brought to California in the mid 1800's, pre-phylloxera. In the glass, a sea of crushed red velvet with a dusty nose of blackberry, red cherry, spiced peppers and tobacco. The palate enters with a great amount of zeal fervor. Pure and focused fruits of red currants, pomegranate, and a wonderful charcuterie characteristic satisfy the earth loving wine drinker. The finish is incredibly long, more than a minute, with a display of kirsch liqueur, sweet oak spice, and licorice. An incredible powerhouse of a wine with a delicate, precise delivery." +Benjamin Romeo Contador 2008,"Rioja, Spain",Red Wine,98.0,"Benjamin Romeo was the winemaker at the iconic Rioja winery Artadi. After 15 years there, he started Contador, his own personal project, also in the Rioja Alavesa. There he very quickly received international recognition when his 2004 vintage Contador Cuvee was awarded 100 points from The Wine Advocate. Benjamin Romeo's Contador is one of only two Spanish wines ever to receive consecutive 100 point ratings from Robert Parker. The only other wine to achieve a perfect rating is another Eric Solomon Selection, Clos Erasmus, made by Daphne Glorian. Benjamin Romeo's bodega (warehouse) is located at the foot of a clock tower, pictured on the label for Contador. " +Benjamin Romeo Contador 2010,"Rioja, Spain",Red Wine,96.0,"Contador 2010 has a purple red color with high intensity andbrightness. In the nose, plus red and black fruits mature, appears the character of balsamic and aromatic herbs (thyme, rosemary, lavender and fennel). It also shows a marked mineral character with fine and well integrated wood notes. The palate is fine and powerful. It is very fine. It shows a great balance between fruit and oak. Final aftertaste is long and intense." +Benjamin Romeo Contador 2011,"Rioja, Spain",Red Wine,96.0,"Contador 2011 has a blackberry color with high intensity and brightness. In the nose, plus red and black fruits mature, appears the character of balsamic and aromatic herbs (thyme, rosemary, lavender and fennel). It also shows a marked mineral character with fine and well integrated wood notes. The palate is fine and powerful. It is very fine. It shows a great balance between fruit and oak. Final aftertaste is long and intense. Very ripe and tasty. " +Benjamin Romeo Contador (3 Liter Bottle) 2001,"Rioja, Spain",Red Wine,98.0,Contador is bright and deep garnet in color. Very ripe redand black fruit on the nose overlaid with mineral and herbaltouches reminiscent of aromatic plants which live alongside thevines in our most select vineyards. Notes of high quality wood anddark burnt caramel. Full and smooth in the mouth at first. This isfollowed by a good level of tannin and a refined mouth-wateringfreshness. The finish is long and pleasant. +Benjamin Romeo La Cueva del Contador 2004,"Rioja, Spain",Red Wine,97.0,"""The 2004 La Cueva del Contador is purple-colored with a splendid nose of espresso roast, scorched earth, black currants, blueberry and chocolate. On the palate the wine is supple and somehow manages to be elegant despite its layers of red and black fruits and extract. Rich and amazingly long, this wine will evolve for a decade and drink well for another 35-40 years.""" +Benjamin Romeo La Vina de Andres Romeo 2004,"Rioja, Spain",Red Wine,98.0,"""There are a mere 200 bottles of the 2004 La Vina de Andres Romeo. This wine is tightly wound and remains an infant developmentally. Nevertheless, all the ingredients for greatness are present but it will take a decade of cellaring for them to be full expressed. This sensational effort should easily drink well for 40-50 years like a great first growth Bordeaux.""" +Beringer Nightingale Semillon-Sauvignon Blanc (375ML) 2003,"Napa Valley, California",Collectible,97.0,"This very special wine offers a golden hue and features aromas of apricot preserve, creme brulee and honey. Rich flavors of butterscotch, stone fruit and spice coat the mouth and linger for a long, luxurious finish. Whether paired with a cheese course or rich dessert, Nightingale is a wonderful way to end a meal." +Beringer Private Reserve Cabernet Sauvignon 2001,"Napa Valley, California",Red Wine,97.0,"I love the individual expression of terroir in single-vineyard wines, but the opulence, power and grace of Beringer's Private Reserve can only be achieved by blending. Each of our Napa Valley Vineyards, with its own distinct soil, climate and terrain, has specific character that is elevated in the Private Reserves. It's this mosaic of single-vineyards that creates wines of uncommon richness, complexity and concentration." +Beringer Private Reserve Cabernet Sauvignon (3 Liter Bottle) 1992,"Napa Valley, California",Red Wine,96.0,"Lush, ripe fruit. A pretty, elegant wine. Aromas more subdued than in the past. Nice balance between fruit and oak. Cedar, into and coffee, covers the palette with black fruit. Nice long finish." +Betz Family Winery La Cote Patriarche Syrah 2014,"Yakima Valley, Columbia Valley, Washington",Red Wine,98.0,"The 2014 La Cote Patriarche shows the wine's hallmark traits: a deep black-magenta color, a palate of vibrant blue fruits and subtle aromatic notes of thyme and lavender. For the second season in a row, 500 liter barrels were used to maintain fresh fruit character and lower oak influence. The new concrete fermentation vessels lend roundness to the blend and length to the finish. The result is a brooding and youthful La Cote Patriarche with superb structural integration and fine texture." +Betz Family Winery La Cote Rousse Syrah 2015,"Red Mountain, Yakima Valley, Columbia Valley, Washington",Red Wine,96.0,"This year, the final blend of La Côte Rousse included barrels from all 4 blocks of Red Mountain Syrah. Clone 383 brings the softest texture, and most perfume to the blend. Delicate notes of lavender and iron are its hallmark. Clone 99 is the most concentrated and structured. Here the fruits lean toward blackberry and raspberry, where both tannin and acid are abundant.. Clone 174 expresses the ripest character of the French clones, combining boysenberry, and pomegranate. At Ranch at the end of the Road, the early ripening Tablas creek clone provides blueberry fruit and smoky meatiness." +Betz Family Winery Pere de Famille Cabernet Sauvignon 2015,"Columbia Valley, Washington",Red Wine,96.0,"2015 Père de Famille Cabernet Sauvignon shows its lineage clearly, while also expressing the conditions of the vintage. It’s a deep magenta through to the core. A knockout aroma of black currant and black cherry comes next, enhanced by bay leaf and thyme. Black olive notes share the stage with baking spices. Aromas of white flowers and red currants tease their way out with time in the glass. The palate impression is one of early integration between the oak and grape tannins. The inclusion of Merlot and Petit Verdot help create a seamless texture, and extend the length of flavor on the palate. Expect 2015 Père de Famille to be delicious young, but to offer up to two decades of cellar life." +Bevan Cellars Cabernet Sauvignon Tin Box 2014,"Oakville, Napa Valley, California",Red Wine,96.0,Super dark flavors dominate and then the wine takes a serious turn. The power from the old vines grows in the glass. This is big boy Cabernet Sauvignon. +Bevan Cellars De Crescenzo/Tench The Impetus 2014,California,Red Wine,97.0,"The 2014 Impetus is Cabernet Franc from the DeCrescenzo Estate Vineyard and Cabernet Sauvignon from the Tench Vineyard. This is Bevan Cellars' darkest wine in 2014. The Cabernet Franc core is a black hole, which seems to suck light from the air. Dark roasted coffee, anise and spice mingle with the fruit flavors of the Cabernet Sauvignon to give the wine amazing complexity." +Bevan Cellars Harbison Vineyard Cabernet Sauvignon 2014,"Napa Valley, California",Red Wine,99.0,"The Harbison Cabernet Sauvignon also has great power and intensity that makes for a rock star wine. The plum, cherry and berry flavors bombard you, and then the acidity cleans up the palate and carries a long finish that lasts for almost a minute." +Bevan Cellars Ontogeny 2014,"Oakville, Napa Valley, California",Red Wine,96.0,"This is a mix of all Bevan Cellars' big boy vineyards and two small special vineyards that give this wine life. Winemaker Russell Bevan uses several press barrels from Tin Box, Tench and Wildfoote, which have chewy, vibrant textures. So as not to make a ""beast,"" Russell throws in a little kiss of Sugarloaf Merlot, which pulls everything back together. This vintage is reminiscent of the 2009, as it has so much power and richness at the same time." +Bevan Cellars Proprietary Red EE Tench Vineyard 2016,"Oakville, Napa Valley, California",Red Wine,98.0,"The 2016 EE Red Blend combines Cabernet Sauvignon, Cabernet Franc, and Merlot. It has a higher percentage of Cabernet Sauvignon than ever before making it even livelier than the 2013 EE, a vintage which produced some of our most massive wines. The Cabernet Franc provides an amazing violet quality and the Merlot adds a little extra richness. The result is luxurious, intense dark fruit. " +Bevan Cellars Sugarloaf Mountain 2015,"Napa Valley, California",Red Wine,98.0,"Sugarloaf Mountain Proprietary Red Wine can be described in one word: consistent. Vintage to vintage, the wines are very similar, offering notes of cocoa, espresso, flowers and blackberry. The wine is super round and complex with an incredible finish." +Bevan Cellars Sugarloaf Mountain 2016,"Napa Valley, California",Red Wine,97.0,"The 2016 Sugarloaf is better than any of the previous vintages. Drop the mic, walk off. Good night. " +Bevan Cellars Tench Vineyard Cabernet Sauvignon 2016,"Oakville, Napa Valley, California",Red Wine,97.0,Tench Vineyard Cabernet Sauvignon has massive blue fruit qualities. The textures are pure Tench: massive and lively. +Bila-Haut by Michel Chapoutier Occultum Lapidem 2013,"Languedoc, South of France, France",Red Wine,97.0,"The Occultum Lapidem displays great dark garnet-red color in the glass. The nose is laden with aromas of black fruits, pepper, leather and graphite with hints of shrubs. On the palate, the fleshy quality of the wine is apparent straightaway from the attack. Rich and dense, the wine finishes with balance of fruit and delicate tannins. " +Blandy's Bual Madeira 1920,Portugal,Collectible,97.0,"Golden color with golden green tinges at the rim. Intense, exuberant and concentrated bouquet of dried fruits with an aroma of licorice. Notes of wood, toffee and vanilla. Luxurious long finish of dried fruits, spices and tobacco." +Blandy's Terrantez 1980,Portugal,Boutique,96.0,"This medium rich madeira is auburn in color with scents of orange zest and citrus on the nose. A medium sweet harmony of dried fruits, honeycomb and spices persists in balance with deeper tones of earth and wood-smoke. A magnificent, complex madeira with a long, elegant and fresh finish." +Blankiet Paradise Hills Cabernet Sauvignon (1.5 liter) 2002,"Napa Valley, California",Red Wine,98.0,This wine is sheer power in a silk glove. +Blankiet Paradise Hills Cabernet Sauvignon 2002,"Napa Valley, California",Red Wine,98.0,"The vineyards, known as Paradise Hills, are stunningly beautiful with gorgeous views of the valley. These Cabernet Sauvignon grapes are planted on volcanic soil." +Blankiet Paradise Hills Merlot 2003,"Napa Valley, California",Red Wine,96.0,"""The 2003 Merlot is better out of bottle than it was from cask. An explosively rich wine that ranks among the finest Merlots I have tasted from California in the last decade, it boasts an incredibly perfumed nose of espresso roast, mocha-infused chocolate, blackberry, cassis, cherry liqueur, and smoke. With an enormous texture, fabulous concentration, a packed-and-stacked mid-palate, and an explosive intense, ripe, long finish, this stunning wine is extraordinarily complex and savory. Anticipated maturity: now-2020. As I have written before, the only way readers are going to get any of this wine is to be on the mailing list or check out one of the few restaurants that receives an allocation. This is an amazing operation on the hillsides overlooking the huge Dominus/Napanook estate. A complex set of caves and a remarkable, nearly surreal chateau grace the property. Winemaker Helen Turley, working with her viticulturalist husband, John Wetlaufer, is fashioning some spectacular wines from these hillsides of volcanic ash and basalt. These are big, structured, potentially long-lived wines that will need some cellar time for those lucky enough to latch onto a few bottles. Everything to date has been aged in 100% new Taransaud barrels for 18-19 months and then bottled unfiltered."" - Wine Advocate""" +Blankiet Paradise Hills Vineyard Proprietary Red 2012,"Yountville, Napa Valley, California",Red Wine,96.0,"The Blankiet Bordeaux Medoc blend of predominantly Cabernet Sauvignon with Merlot, Cabernet Franc and Petit Verdot. This wine is sheer power in a silk glove." +Blankiet Paradise Hills Vineyard Proprietary Red 2013,"Yountville, Napa Valley, California",Red Wine,98.0,"Our Bordeaux Medoc blend of predominantly Cabernet Sauvignon with Merlot, Cabernet Franc and Petit Verdot. This wine is sheer power in a silk glove." +Blankiet Rive Droite Paradise Hills 2012,"Yountville, Napa Valley, California",Red Wine,99.0,Bordeaux Right Bank style wine. Merlot with a touch of Cabernet Franc. This wine is gorgeously fruit forward with a core of minerality. +Bodega Colome Altura Maxima Malbec 2012,"Salta, Argentina",Red Wine,96.0,Winemaker Thibaut Delmotte has crafted wines of distinction and international acclaim for Colome. He believes the Malbec from Altura Maxima Vineyard is the embodiment of two extremes - a traditional grape variety from his French origins made from the vineyard that challenges all convention in the modern viticultural world. +Bodega Colome Reserva Malbec 2007,Argentina,Red Wine,96.0,"Black, deep and intense color with nose of ripe black fruit, blackberries, blackpepper and plum. Plenty of volume and powerful in the mouth. Round, with lotsof tannins, but with finesse and harmony. A wine that is powerful and at the sametime refined. Best paired with osso bucco, lamb, strong cheeses, roasted walnuts,and other hearty fare." +Bodegas El Nido El Nido 2004,"Jumilla, Spain",Red Wine,99.0,"""The consulting winemaker at Bodegas El Nido is Chris Ringland of Barossa Valley fame. Amazingly, the 2004 El Nido is even better. It is 70% Cabernet Sauvignon and 30% Monastrell sourced from the same vineyards as its sibling but from the tenderloin portions, and it received the same oak treatment. Similar in color, the nose offers a beautiful perfume of pain grille, vanilla, forest floor, black currant, and blackberry liqueur. The wine is more elegant on the palate with a velvety texture, layers of spicy black fruits, and great depth and balance. It admirably marries elegance and power. Cellar this fabulous wine for 3-4 years and drink it over the following 10-15."" - The Wine Advocate" +Bodegas El Nido El Nido 2005,"Jumilla, Spain",Red Wine,98.0,"""Opaque violet. Seductively perfumed bouquet of red and dark berry liqueur, graphite, Asian spices and incense. This saturates every nook and cranny of the palate with flavors of sweet raspberry, boysenberry, candied licorice, cinnamon and vanilla. Impressively fresh for such flavor impact, thanks to gentle tannins and vibrant finishing minerality. A lingering, subtle strawberry quality underscores this wine's impression of elegance over brute force.""" +Bodegas El Nido El Nido 2006,"Jumilla, Spain",Red Wine,97.0,"This red is jam packed with blackberry, black cherry, plum, blueberry, creme de cassis, tobacco, leather, minerals and oak. Powerful, yet refined and well-balanced. " +Bodegas El Nido El Nido 2007,"Jumilla, Spain",Red Wine,96.0,"Opaque violet. Seductively perfumed bouquet of red and dark berry liqueur, graphite, Asian spices and incense. This saturates every nook and cranny of the palate with flavors of sweet raspberry, boysenberry, candied licorice, cinnamon and vanilla. Impressively fresh for such flavor impact, thanks to gentle tannins and vibrant finishing minerality. " +Bodegas Fernando Remirez de Ganuza Rioja Reserva 2005,"Rioja, Spain",Red Wine,96.0,"90% Tempranillo, 10% Graciano aged 24 months in oak casks (80% French, 20% American)." +Bodegas Lan Culmen Reserva 2004,"Rioja, Spain",Red Wine,96.0,"Intense and bright cherry color. Ripe fruit nose, with hints of plums, cherries and wildberries. Spicy, roasted and balsamic aromas as well as mineral notes. Complex. Culmen is only produced from harvests of outstanding quality. " +Bodegas Lan Culmen Reserva 2015,"Rioja, Spain",Red Wine,96.0,"Bright cherry red color with a deep intensity. Predominant notes of liquorised red fruit, and spiced hints of nutmeg and cinnamon. A multitude of textures and flavours burst in the mouth. Balsamic notes as well as mineral nuances characteristic of the soil of the “Viña Lanciano”. Silky and full- bodied in the mouth with an intense and long enjoyable finish." +Bodegas Lan Rioja Edicion Limitada 2004,"Rioja, Spain",Red Wine,96.0, +Bodegas Mas Alta La Creu Alta 2012,"Priorat, Spain",Red Wine,96.0,"On the nose, very intense aromas associated with black berry. After, the wine reveals mineral notes, Mediterranean herbs, typical vegetation of Priorat, and balsamic notes, keeping the same intensity. The attack is elegant and ample. After, the tannins appear, giving a concentrated and flexibile sensation. Powerful, big volume, elegant with persistent notes of coffee and spicy on the finish." +Bodegas Pujanza Norte 2016,"Rioja, Spain",Red Wine,96.0,"Intense cherry-red color with violet glints. Clear and bright. Wild berries, spices and well-integrated oak. Wild and complex red with palate-tingling acidity, chalky freshness and flavors of plum and damson embellished by stylish French barrel notes." +Bodegas Raul Perez Sketch Albarino 2009,"Rias Baixas, Spain",White Wine,96.0,"A light gold-colored wine, Sketch is a remarkable Albariño that has high-pitched aromas of lemon and talc with an unmistakable saline note. Similar to the aromas, the wine's flavors are incredibly packed and concentrated on the palate, with huge, squeaky-clean flavors of minerals, citrus, and fresh stone fruits and their skins. In character and palate presence, this easily recalls a Montrachet, Batard Montrachet or fine Chablis from Raveneau or Dauvissat. The wine shows intense power with depth and finesse. " +Bodegas Raul Perez Ultreia de Valtuille Mencia 2008,Spain,Red Wine,96.0,100% Mencia from Bierzo +Bodegas Uvaguilera Aguilera Palomero 2001,"Ribera del Duero, Spain",Red Wine,96.0,"The nose presents a perfect balance between the fruit and oak. Complex and persistent, yet soft and elegant on the palate." +Bodegas Valderiz Ribera del Duero 2016,"Ribera del Duero, Spain",Red Wine,96.0,"The grapes are sourced from vineyards planted by Tomás Esteban and are more than 25 years old, yielding a production of 4,000 kg per hectare. They are totally free of any artificial fertilizers or systematic chemical treatments." +Bodegas Vega Sicilia Unico Tinto 1996,"Rioja, Spain",Red Wine,96.0,"""The 1996 Unico seems more developed aromatically than the 1995 with elements of coffee and mocha but not quite the richness of fruit of the 1995. It is more supple on the palate but with less depth. It can be enjoyed now and over the next 20 years.""" +Bodegas Vega Sicilia Unico Tinto 1998,"Ribera del Duero, Spain",Red Wine,98.0,"It comes from the oldest vines on the property and in its composition, in addition to tempranillo are cabernet sauvignon and merlot. Although it is old, it maintains as a lively red wine. It has an intense ripe cherry color. Hints of toasted wood notes. " +Bodegas y Vinedos Alion 2003,"Ribera del Duero, Spain",Red Wine,96.0,"A bright deep red color with streaks of violet. Full and elegant on the nose, with a wide rangeof aromas, such as vanilla, ripe fruits, compote and syrups. The palate is opulent and elegantwith harmonious tannins providing a subtle backbone to the wine; great aromatic persistence." +Bodegas y Vinedos Maurodos Toro San Roman 2009,Spain,Red Wine,96.0,"Full-bodied, opulent, and floral, with a wide range of aromas and nuances. Very complete, rich and elegant, with silky tannin sand juicy fruitiness. Excellent maturity in a vintage full of fruit with very expressive wines." +Bollinger La Grande Annee Brut with Gift Box 2008,"Champagne, France",Sparkling & Champagne,96.0,"La Grande Année 2008 is from one of the most anticipated vintages since the start of the 21st century. The exceptional 2008 harvest resulted in a wine of infinite depth, concentration, and freshness. It expresses its distinctiveness in this deep, complex and harmonious wine. The clear wines were very promising: the Chardonnays were pure and straight and the Pinot Noirs rich and expressive. These two grape varieties compliment each other to give a blend with a rare balance. It has great aging potential. " +Bollinger R.D. Extra Brut with Gift Box 2004,"Champagne, France",Sparkling & Champagne,96.0,"Bright and deep gold. Abundant stewed and candied fruits on the nose, accompanied by touches of sweet spice. With time, notes of mirabelle and preserved orange unfold in the glass. A grand generosity. Intense cooked fruit and tarte tatin flavours express themselves in a mouth that is full and harmonious." +Bollinger R.D. Extra Brut with Gift Box 2002,"Champagne, France",Sparkling & Champagne,96.0,"R.D. (Recently Disgorged) is the result of a great vision of Madame Bollinger, R.D. is a magnification of the very best that theChampagne region's terroirhas to offer. R.D. starts as a Grande Année, the prestige cuvéeof Bollinger, and is allowed to mature for an extra 8 to 20 years, sometimes more." +Bond Melbury (1.5 Liter Magnum) 2013,"Napa Valley, California",Red Wine,97.0,"The name Melbury is in homage to an historic area in London, where the estate owners reside much of the year. Since its debut with the 1999 vintage, the consistent hallmarks of Melbury have been plush red fruits (currants, bing cherries), redolent with spice and the scent of violets. Elegance and a supple texture define the structure of this wine. The particular exposition of this rocky 7-acre hillside vineyard is southerly overlooking Lake Hennessey, allowing the vines to capture the morning sun yet moderating afternoon temperatures." +Bond Melbury 2013,"Napa Valley, California",Red Wine,97.0,"The name Melbury is in homage to an historic area in London, where the estate owners reside much of the year. Since its debut with the 1999 vintage, the consistent hallmarks of Melbury have been plush red fruits (currants, bing cherries), redolent with spice and the scent of violets. Elegance and a supple texture define the structure of this wine. The particular exposition of this rocky 7-acre hillside vineyard is southerly overlooking Lake Hennessey, allowing the vines to capture the morning sun yet moderating afternoon temperatures." +Bond Pluribus 2009,"Spring Mountain District, Napa Valley, California",Red Wine,96.0,"The name refers to the Latin word for many, and was chosen to signify the various facets involved in creating a fine wine: from the sun, soil, and climate of a vineyard, to the team of people who guide a wine through its evolution. A breathtaking mountainous 7-acre site with steep exposures to the north, east and southeast, the soil is comprised of volcanic bedrock. Pluribus, which debuted in the 2003 vintage, is defined as a bold, rich and concentrated wine; elements of dark plum, roasted coffee, and scents of cedar are inherent throughout the vintages." +Bond Pluribus (375ML half-bottle) 2009,"Spring Mountain District, Napa Valley, California",Red Wine,96.0,"The name refers to the Latin word for many, and was chosen to signify the various facets involved in creating a fine wine: from the sun, soil, and climate of a vineyard, to the team of people who guide a wine through its evolution. A breathtaking mountainous 7-acre site with steep exposures to the north, east and southeast, the soil is comprised of volcanic bedrock. Pluribus, which debuted in the 2003 vintage, is defined as a bold, rich and concentrated wine; elements of dark plum, roasted coffee, and scents of cedar are inherent throughout the vintages." +Bond Quella (1.5 Liter Magnum) 2012,"Howell Mountain, Napa Valley, California",Red Wine,98.0,"Making its debut with the 2006 vintage, the name is derived from the German word for a pristine source or an artesian aquifer. This property is steeply sloped facing southwest. The site is an ancient riverbed composed of cobble and rocks interwoven with pockets of tufa (volcanic ash) that were uplifted during the last volcanic activity in the area. Quella displays an almost ethereal quality of blue fruits, graphite, and a vibrant, subtle finish." +Bond St. Eden (1.5 Liter Magnum) 2013,"Oakville, Napa Valley, California",Red Wine,99.0,"Always seemingly the more forward and showy in the early years, Bond’s 2013 St. Eden has wonderful notes of cedar wood, new saddle leather, Asian plum sauce, blackcurrants, licorice, and a touch of toasty oak. Dense purple in color, full-bodied and voluptuous, this stunner is easily the most approachable of the Bond 2013s." +Bond St. Eden 2002,"Oakville, Napa Valley, California",Red Wine,96.0,"""The inky/purple-tinged 2002 St. Eden Proprietary Red reveals notes of unlit cigar tobacco, beautiful blueberry and creme de cassis fruit, and notions of licorice, spice box, and incense. It is full-bodied, with wonderful sweetness and plumpness as well as a meaty richness that cascades over the palate with a seamlessness that must be tasted to be believed. " +Bond St. Eden 2013,"Oakville, Napa Valley, California",Red Wine,99.0,"The red rocky soil of this northfacing site originates from high in the Vaca Mountains. St. Eden, which appeared first in the 2001 vintage, reliably shows great focus, an opulent ""sweet"" center and notes of creme de cassis, dark chocolate, and roasted herbs. Mineral-tinged and broad on the palate, the wine consistently displays fine-grained tannins and a lush concentration." +Bonneau du Martray Corton-Charlemagne Grand Cru 2017,"Aloxe-Corton, Cote de Beaune, Cote d'Or, Burgundy, France",White Wine,96.0,"The composition of this unique Bonneau du Martray cuvée reflects the complexity and richness of this great terroir, the most authentic representation of Charlemagne's terroir" +Booker Vineyard Estate 24 2014,"Paso Robles, Central Coast, California",Red Wine,96.0,"Blend: 51% Tempranillo, 28% Syrah, 13% Petit Verdot, 8% Grenache" +Booker Vineyard Estate Syrah Blend 2013,"Paso Robles, Central Coast, California",Red Wine,96.0,"Fashioned after the old Alchemist, this wine was meant to bemassive but also extremely rustic using very little oak. Notes of stewed black cherries are overwhelming. A ""must-have"" in your cellar, and definitely presents a unique identity comparedto the rest of the line-up. " +Booker Vineyard Fracture Syrah 2011,"Paso Robles, Central Coast, California",Red Wine,97.0,Just over half of our property is planted with Syrah. We put our best barrels of Syrah into Fracture and then age in 228L Barriques. The name is a tribute to the high content of limestone in our soil. Limestone causes our vineyard soil to fracture rather than crumble. +Booker Vineyard Jada 2015,"Paso Robles, Central Coast, California",Red Wine,96.0,"This Grenache heavy wine is very elegant and pretty, but in no way a light and simple wine. It is red fruits galore, mostly raspberries, but it also has a strong base from the little bit of Syrah that was was added." +Booker Vineyard My Favorite Neighbor 2013,"Paso Robles, Central Coast, California",Red Wine,99.0,"A candidate for the wine of the vintage, the inky colored 2013 My Favorite Neighbor Proprietary Blend is a heavenly blend of 37% Cabernet Sauvignon, 34% Petit Verdot and 29% Syrah that spent 18 months in French oak. Thrillingly pure, layered, unctuous and massively concentrated, it exhibits classic notes of blueberries, violets, black raspberries, spice and graphite. These give way to a full-bodied, seamless and layered 2013 that has building tannin, incredible purity of fruit and a blockbuster finish. Give it a year or two and enjoy bottles through 2025." +Booker Vineyard My Favorite Neighbor 2014,"Paso Robles, Central Coast, California",Red Wine,99.0,"Always one of Booker Vineyard's most popular wines, MFN was aged in French oak for 24 months and is as balanced as it has ever been before. In barrel the Cabernet and Syrah wanted to rear their head and show their ripeness, but the massive Petit Verdot would not allow them. This is reminiscent of one of (my favorite neighbor) Stephan Asseo's legendary Estate Cuvee wines. You will be rewarded for aging this wine 2 years." +Booker Vineyard Remnant 24 2012,"Paso Robles, Central Coast, California",Red Wine,96.0, +Booker Vineyard Ripper Grenache 2011,"Paso Robles, Central Coast, California",Red Wine,96.0,"Most consider our Ripper to be the most elegant wine we produce with its delicate red fruits and hints of cherry cola. We partially age the wine in neutral French 500L oak barrels, and the other part of the wine in concrete tanks. The Ripper is only made in select years when our Grenache crop shows top-quality." +Booker Vineyard Ripper Grenache 2012,"Paso Robles, Central Coast, California",Red Wine,96.0,"Most consider our Ripper to be the most elegant wine we produce with its delicate red fruits and hints of cherry cola. We partially age the wine in neutral French 500L oak barrels, and the other part of the wine in concrete tanks. The Ripper is only made in select years when our Grenache crop shows top-quality." +Booker Vineyard Ripper Grenache 2014,"Paso Robles, Central Coast, California",Red Wine,98.0,"Most consider the Ripper to be the most elegant wine Booker Vineyard produces with its delicate red fruits and hints of cherry cola. They partially age the wine in neutral French 500L oak barrels, and the other parts of the wine in concrete tanks. The Ripper is only made in select years when the Grenache crop shows top-quality." +Booker Vineyard Ripper Grenache 2015,"Paso Robles, Central Coast, California",Red Wine,97.0,"Another Southern Rhone wine, this 100% Grenache is a bowl full of strawberries and raspberries. No new wood, no stems, just pure, unadulterated Grenache that has historically been Booker Vineyard's flagship and one of the few true Grenaches at this level on the market. In 2014 they pushed the envelope by heating at high temps during fermentation and extracting lots of color and tannins. In 2015 they wanted to go back to my traditional style of making a wine that is approachable immediately as opposed to having you wait and cellar." +Booker Vineyard Ripper Grenache 22 2015,"Paso Robles, Central Coast, California",Red Wine,96.0,"The extended version of Ripper is softer and denser than its counterpart, and will need 6 months to start showing off beautiful color and extraction, with deeper red flavors than in the past. The early bottling shows more ripe strawberries and raspberries, whereas the extra time in barrel mellows those out and converts to stewed red fruits. The density is beautiful and the finish is more than a minute long." +Booker Vineyard Tempranillo 2013,"Paso Robles, Central Coast, California",Red Wine,96.0,"As most of you know, the Tempranillo is only made in stellar vintages. A large and masculine wine, the Tempranillo shows classic black notes of espresso and dark chocolate with hints of blackberry and firm tannins on the finish. The real beauty of this wine though is that as masculine as it is, it is not overly massive or syrupy. Quite the contrary! It accomplishes the goal of seeming like a massive wine while still coming across the palate as elegant as the top Spanish Tempranillos do! " +Booker Vineyard Tempranillo 2014,"Paso Robles, Central Coast, California",Red Wine,99.0,"As massive and dark as this wine has ever been, this vintage truly screams all things dark with a double espresso shot with firm tannins yet surprising hints of red fruit on the finish. This beast will need at least a year to relax and become consumer friendly." +Booker Vineyard The Ripper Grenache (1.5 Liter Magnum) 2011,"Paso Robles, Central Coast, California",Red Wine,96.0,"Most consider our Ripper to be the most elegant wine we produce with its delicate red fruits and hints of cherry cola. We partially age the wine in neutral French 500L oak barrels, and the other part of the wine in concrete tanks. The Ripper is only made in select years when our Grenache crop shows top-quality." +Booker Vineyard Vertigo 2013,"Paso Robles, Central Coast, California",Red Wine,97.0,"Holy cow! This wine is a beast. Great fruit, density, length, andstructure. As always, this blend of Grenache, Syrah, and Mourvèdreis made using whole clusters in fermentation. This adds a gorgeousspice and tannin that sets this wine completely apart from allothers. Big and dense like Fracture, but paired with a beautifularray of spices and floral aromatics. Currently it is drinking verytight, like most whole cluster wines, and likely will be bestconsumed in six months to a year's time." +Booker Vineyard Vertigo 24 2012,"Paso Robles, Central Coast, California",Red Wine,97.0,"With roughly 40% whole cluster, the extended version shows impeccable structure with hints of spice that should make it a perfect pair for upcoming holiday dinners. This wine was aged in once-used 300L hogshead barrels and has a lot of structure and tannin. This is surely a wine that will benefit from an extra six months of aging. " +Bouchard Pere & Fils Bonnes Mares Grand Cru 2006,"Burgundy, France",Red Wine,96.0,"Aromas of red and blue pinot fruit with violet hints that precede ripe, pure and very serious broad-shouldered flavors that possess a beguiling texture and impressive mid-palate concentration that still does not completely buffer the firm, long and chewy finish. This is a big wine that will require plenty of cellar patience." +Bouchard Pere & Fils Chambertin Clos de Beze Grand Cru 2006,"Burgundy, France",Red Wine,96.0,95 +Bouchard Pere & Fils Montrachet Grand Cru 2006,"Burgundy, France",White Wine,96.0,97 +Brancaia Il Blu 2004,"Tuscany, Italy",Red Wine,96.0, +Brancaia Ilatraia 2003,"Tuscany, Italy",Red Wine,96.0, +Brand Cabernet Sauvignon 2015,"Napa Valley, California",Red Wine,96.0,"This stunning Cabernet Sauvignon puts forth a magnificent nose of licorice, graphite, with concentrated black fruits and hints of truffle and toasted oak. On the palate, its powerful yet elegant tannins engulf the senses with layers of dark cherry, blackberry, cassis and dark chocolate, culminating with a finish you’ll enjoy long after the final sip. " +Branson Coach House Coach House Block Cabernet Sauvignon 2004,"Barossa Valley, Barossa, South Australia, Australia",Red Wine,98.0,"""A compelling Cabernet Sauvignon, the 2004 Coach House Block was aged in 100% new French Taransaud barrels. Its blue/black/purple color is followed by beautiful aromas of graphite, acacia flowers, blackberries, and creme de cassis. Full-bodied, dense, and rich, this amazing Cabernet admirably demonstrates what heights this varietal can achieve in the Barossa. Cellar it for 3-4 years and enjoy it over the following 2-3 decades.""" +Branson Coach House Coach House Block Shiraz 2003,"Barossa Valley, Barossa, South Australia, Australia",Red Wine,96.0,"This single-vineyard bottling from the makers of Two Hands is a huge wine that doesn't feel as big as it is, glowing at the center with blueberry, purple plum and currant fruit, shaded on the edges with sweet spices, sage and a touch of creamy oak, all of it expanding on the finish against ultrafine tannins. The aftertaste lingers for days. Best from 2007 through 2020. 750 cases made." +Brovia Barolo Villero 2005,"Barolo, Piedmont, Italy",Red Wine,96.0,"A classic powerful and full-bodied wine from a historical vineyard of Castiglione Falletto. The color is intense ruby red with a light presence of orange reflections. The smell is elegant, intense, pleasant, balanced and with a hint of withered roses, plums, minerals, tobacco, liquorice, smoke and leather. The taste is full bodied, balanced and velvety, with a huge structure and a very long finish. " +Brovia Ca'Mia Barolo (1.5 Liter Magnum) 2006,"Barolo, Piedmont, Italy",Red Wine,96.0,"A very complete and long aging wine from a great vineyard of Serralunga d'Alba. The color is intense ruby red. The smell is intense, pleasant, balanced and spicy with a bouquet of plums, cedar, tobacco, liquorice, soy and floral notes. The taste is full bodied, concentrated and rich, with a firm tannic structure that classic Barolo needs for a long aging." +Brovia Ca'Mia Barolo 2008,"Barolo, Piedmont, Italy",Red Wine,96.0,"We often call this cru ""Il Ruffiano"" for its rustic, raffish nature. This is a boisterous, friendly Barolo from the heart of Serralunga d'Alba with all that zone's lush fruit and generous body. Here the wine thrusts us into the dense ambience of the forest: the dark berry-like fruit, the moss and underbrush, the truffles and mushrooms of the Langhe. It's all there with bravado and confidence. Warm, rich, dense … one of our best friends at the table." +Brovia Garblet Sue Barolo 2008,"Piedmont, Italy",Red Wine,96.0,"The Garblet Sue distinguishes itself by its enormous energy, a positive and heady wine with a gorgeous interplay of black fruits and minerals. The lively presence on the palate reminds one of the remarkable ability of Nebbiolo to retain its vibrant acidity while building its sugar reserves. A favorite of ours." +Brovia Garblet Sue Barolo 2013,"Barolo, Piedmont, Italy",Red Wine,98.0,"The tannic and mineral structure of the 2013 elevates the “Garblet Sue” to another level. Initially, the wine is quite generous and pleasant, with somewhat high-toned, red fruits underscored by dark feral and dried-herb notes, but the wine finishes with an edgy acidity and ferocious tannins that are reminiscent of the “Villero”. The complexity and structure of the 2013 “Garblet Sue” is a testament to the seriousness and potential longevity of this classically structured vintage. If you must pull corks on your ‘13s early, this is your best bet, but we recommend you give all of these wines as much time as you can muster." +Brovia Rocche (1.5 Liter Magnum) 2007,"Piedmont, Italy",Red Wine,96.0,"An extremely fine and elegant wine from one of the great vineyards of Castiglione Falletto. The color is garnet red with light orange colored reflections. The nose is balanced and intense with violets, strawberries, prunes, cherries, mint, woody essence, licorice and some balsamic notes. The taste begins slowly, but it grows incrementally until coating the palate. " +Brovia Rocche 2007,"Piedmont, Italy",Red Wine,96.0,"An extremely fine and elegant wine from one of the great vineyards of Castiglione Falletto. The color is garnet red with light orange colored reflections. The nose is balanced and intense with violets, strawberries, prunes, cherries, mint, woody essence, licorice and some balsamic notes. The taste begins slowly, but it grows incrementally until coating the palate. " +Brovia Rocche 2008,"Piedmont, Italy",Red Wine,96.0,"This splendid site in Castiglione Falletto, the fabled ""Rocche,"" gives us a window onto the elegant, feminine side of Barolo. Always the most aromatic and sensual of the crus from Brovia, the Rocche dei Brovia carries its weight with a ballerina-like delicacy on top of tannins that are sweet and silky. A seductress that tempts you to the table with its near-athletic versatility, the Rocche is the one member of this special quartet of crus that will charm you from the outset." +Bruna Grimaldi Barolo Badarina 2013,"Barolo, Piedmont, Italy",Red Wine,97.0,"This wine's color is an intense and brilliant garnet with orange highlights. The aroma is ample and intense, with sensations of violets, pepper, raspberries, and dried roses along with the classic notes of tar. The flavor is robust, persistent, and elegant." +Bruno Giacosa Barbaresco Asili Riserva (1.5 Liter Magnum) 2014,"Barbaresco, Piedmont, Italy",Red Wine,97.0,"Intense red garnet color with orange highlights. Notes of raspberry and wild strawberry are layered with floral aromas of rose and violet. On the palate, good structure is matched with freshness of fruit and sweet, silky tannins. " +Bruno Giacosa Barbaresco Asili Riserva 2014,"Barbaresco, Piedmont, Italy",Red Wine,97.0,"Intense red garnet color with orange highlights. Notes of raspberry and wild strawberry are layered with floral aromas of rose and violet. On the palate, good structure is matched with freshness of fruit and sweet, silky tannins. " +Bruno Giacosa Barbaresco Asili Riserva (3 Liter) 2014,"Barbaresco, Piedmont, Italy",Red Wine,97.0,"Intense red garnet color with orange highlights. Notes of raspberry and wild strawberry are layered with floral aromas of rose and violet. On the palate, good structure is matched with freshness of fruit and sweet, silky tannins. " +Bruno Giacosa Barbaresco Rabaja 2000,"Barbaresco, Piedmont, Italy",Red Wine,96.0,"""As seductive as it gets. Forget the slightly amber hue. Full-bodied, with fabulous, decadent, ripe plum, cedar and berry character, layers of velvety tannins and a long, long finish. Superb. Best after 2009. 580 cases made.""" +Bruno Giacosa Barolo Falletto 2008,"Barolo, Piedmont, Italy",Red Wine,96.0,"Garnet red color with orange reflections. Ample and complex bouquet with notes recalling truffle and licorice. In the mouth it feels dry, full and velvety, unfolding a great personality." +Bruno Giacosa Barolo Falletto Red Label 1996,"Barolo, Piedmont, Italy",Red Wine,96.0,"Especially impressive for firm but elegant tannins. This Barolo is rich in dark fruit, leather and anise aromas. Very refined and balanced with abundant flavors of chocolate and tobacco. Big! Recommended with beef dishes, game and other richly flavored dishes." +Bruno Giacosa Barolo Le Rocche del Falletto 2011,"Barolo, Piedmont, Italy",Red Wine,97.0,"Garnet red color with orange reflections. Ample and complex bouquet with notes recalling truffle and liquorice. In the mouth it feels dry, full and velvety, unfolding a great personality." +Bruno Giacosa Barolo Le Rocche del Falletto Riserva (1.5 Liter Magnum) 2007,"Barolo, Piedmont, Italy",Red Wine,98.0,"Le Rocche del Falletto Riserva is an intense red garnet color. The bouquet is a very fine and elegant, with violets, orange peel and red fruit notes. In the mouth the wine is structured and wel-balanced with velvety tannins and a long finish." +Bruno Giacosa Barolo Le Rocche del Falletto Riserva (1.5 Liter Magnum) 2008,"Barolo, Piedmont, Italy",Red Wine,96.0,"Garnet red color; ample and persistent bouquet with reminiscences of ripe fruit, withered flowers and sweet spices. Dry, warm and austere flavor. The best vintages can bear the denomination “Riserva” on the label." +Bruno Giacosa Barolo Le Rocche del Falletto Riserva (1.5 Liter Magnum) 2012,"Barolo, Piedmont, Italy",Red Wine,96.0,"Red garnet color with orange glints. Elegant and refined on the nose with notes of mature red fruit, rose petal and dried flowers. On the palate, the wine showcases a silky texture, full body, good acidity and velvety tannins." +Bruno Giacosa Barolo Le Rocche del Falletto Riserva 1999,"Barolo, Piedmont, Italy",Red Wine,96.0,"Hedonistic and very, very rich. Blockbuster. Racy. Masses of fruit on the nose, with plum, berry, and toasted oak. Full-bodied, with chunky tannins and a long, long finish. Fruit bomb. From a tiny section of the Barolo maestro's own vineyard in Falletto. Best after 2010. 950 cases made. (JS)" +Bruno Giacosa Barolo Le Rocche del Falletto Riserva 2001,"Barolo, Piedmont, Italy",Red Wine,97.0,"""Darker and more backward than the Falletto in both its aromas and flavors, Giacosa's staggering 2001 Barolo Riserva Le Rocche del Falletto offers an explosive nose of spices, menthol, minerals, smoke and scorched earth followed by waves of sweet fruit that coat the palate in a potent mix of finesse and sheer power, with fine tannins, and a lingering balsamic note on the finish. This complex, multi-dimensional wine will require considerable patience and will age gracefully for several decades. Made from the oldest vines at Falletto, the 2001 Barolo Riserva Le Rocche del Falletto is another towering achievement from Bruno Giacosa. An Azienda Agricola Falletto di Bruno Giacosa bottling. To be released in 2007. Anticipated maturity: 2013-2031."" - Wine Advocate" +Bruno Giacosa Barolo Le Rocche del Falletto Riserva 2008,"Barolo, Piedmont, Italy",Red Wine,96.0,"Garnet red color. Ample, complex and elegant bouquet with reminiscences of rose, ripe fruit, truffle and spices. Its flavour is dry, full, generous, harmonious and velvety. Wine of aristocratic personality that in the best vintages can boast the denomination ""Riserva""""on the label." +Bruno Giacosa Barolo Le Rocche del Falletto Riserva 2007,"Barolo, Piedmont, Italy",Red Wine,97.0,"Le Rocche del Falletto Riserva is an intense red garnet color. The bouquet is a very fine and elegant, with violets, orange peel and red fruit notes. In the mouth the wine is structured and wel-balanced with velvety tannins and a long finish." +Bruno Giacosa Barolo Le Rocche del Falletto Riserva 2011,"Barolo, Piedmont, Italy",Red Wine,97.0,"Garnet red color. Ample, complex and elegant bouquet with reminiscences of rose, ripe fruit, truffle and spices. Its flavour is dry, full, generous, harmonious and velvety. Wine of aristocratic personality that in the best vintages can boast the denomination “Riserva” on the label." +Bruno Giacosa Barolo Le Rocche del Falletto Riserva 2012,"Barolo, Piedmont, Italy",Red Wine,96.0,"Red garnet color with orange glints. Elegant and refined on the nose with notes of mature red fruit, rose petal and dried flowers. On the palate, the wine showcases a silky texture, full body, good acidity and velvety tannins." +Bruno Giacosa Barolo Le Rocche del Falletto Riserva (3 Liter) 2008,"Barolo, Piedmont, Italy",Red Wine,96.0,"Garnet red color; ample and persistent bouquet with reminiscences of ripe fruit, withered flowers and sweet spices. Dry, warm and austere flavor. The best vintages can bear the denomination “Riserva” on the label." +Bruno Giacosa Barolo Le Rocche del Falletto Riserva (3L Dbl Magnum) 2007,"Barolo, Piedmont, Italy",Red Wine,98.0,"Le Rocche del Falletto Riserva is an intense red garnet color. The bouquet is a very fine and elegant, with violets, orange peel and red fruit notes. In the mouth the wine is structured and wel-balanced with velvety tannins and a long finish." +Bruno Giacosa Barolo Le Rocche del Falletto Riserva (3 Liter) 2012,"Barolo, Piedmont, Italy",Red Wine,96.0,"Red garnet color with orange glints. Elegant and refined on the nose with notes of mature red fruit, rose petal and dried flowers. On the palate, the wine showcases a silky texture, full body, good acidity and velvety tannins." +Bruno Rocca Barbaresco Rabaja 2000,"Barbaresco, Piedmont, Italy",Red Wine,97.0,"Unbelievable aromas, with rich, ripe plum but also mineral, tobacco and cedar undertones. Full-bodied, with lovely ripe tannins and a unctuous combination of ripe fruit and light toasty oak. Goes on and on. Fabulous. Greatest wine ever from Bruno Rocca. Best after 2007. 1,500 cases made. (JS)" +Bryant Family Cabernet Sauvignon 1994,"Napa Valley, California",Red Wine,97.0,"The enormously promising, potentially perfect 1994 Cabernet Sauvignon is one of those rare wines that possesses awesome aromatic, flavor, and texture dimensions. Totally dry, it comes across as sweet because of its highly extracted, ripe fruit. Opaque purple/black-colored, with a knock-out nose of black fruit (cassis and black-raspberries), this wine hits the palate with phenomenal concentration that brilliantly manages to be neither heavy nor overbearing. Plenty of velvety tannin is concealed behind the fruit's remarkable intensity. The wine's purity, presence, and finish are unbelievable." +Bryant Family Cabernet Sauvignon 1995,"Napa Valley, California",Red Wine,99.0,"Bryant Family Vineyard Cabernet Sauvignon is 100% Cabernet Sauvignon made from our 13-acre estate vineyard atop Pritchard Hill, overlooking Lake Hennessey. This first growth vineyard is meticulously farmed by David Abreu, with whom we have worked closely for more than 12 years. A beautiful expression of our unique terroir, this wine is a testament to the dedication of our winemaking and vineyard team who aim to produce the finest wine possible from this site." +Bryant Family Cabernet Sauvignon 2014,"Napa Valley, California",Red Wine,97.0,"100% Cabernet Sauvignon made from our 13-acre estate vineyard atop Pritchard Hill, overlooking Lake Hennessey. This first growth vineyard is meticulously farmed by David Abreu, with whom we have worked closely for more than 12 years. A beautiful expression of our unique terroir, this wine is a testament to the dedication of our winemaking and vineyard team who aim to produce the finest wine possible from this site. " +Buccella Cabernet Sauvignon 2012,"Napa Valley, California",Red Wine,96.0,"The 2012 Buccella Cabernet Sauvignon is a stunning balance between power and finesse. The wine is a lush, layered example of the best Napa Valley Cabernet Sauvignon can offer. Aromas of blackberry, cassis, and blueberry mingle with notes of molasses, bay, pastry crust, and graphite. The palate showcases a velvet texture, with supple tannins wrapped around flavors of black current, dark chocolate flavors, and a rich finish of incredible length." +Buccella Cabernet Sauvignon 2013,"Napa Valley, California",Red Wine,96.0,"The 2013 Cabernet Sauvignon offers an exciting purity of flavors. Aromas of blueberry, crushed stone and violets jump out of the glass. On the palate layers of dark cocoa and black fruits encompass soft round tannins. This wine dances between fresh approachability and a serious age ability." +Burge Family G3 2002,"Barossa Valley, Barossa, South Australia, Australia",Red Wine,96.0,"Blend: 52% Grenache, 42% Shiraz, 6% Mourvedre" +Burlotto Barolo Vigneto Monvigliero 2016,"Barolo, Piedmont, Italy",Red Wine,99.0,"The greatness of Monvigliero lies in its signature aromatics, which are unlike any Barolo. Its astonishingly intense, and instantly recognizable, perfume of wild strawberries, rose petals, cedar and truffle is nothing short of hypnotic. And it could come from no place else on earth. It is the essence of its terroir." +Buscado Vivo o Muerto La Verdad Gualtallary 2015,"Uco Valley, Mendoza, Argentina",Red Wine,96.0,"Gualtallary is located in the northern Uco Valley, in the county of Tupungato, at an altitude of 5,000’ elevation. It is the last vineyard district before the Andean foothills. " +By Farr Sangreal Pinot Noir 2014,"Geelong, Victoria, Australia",Red Wine,97.0,"Each year the same descriptive notes come to mind for this wine: seductive, perfumed, seamless balance and moreish. It is a site that wavers very little in more difficult vintages and excels in the great ones—this is the backbone of By Farr wines. The alluring characters of this vineyard, combined with red fruits, whole bunch, acidity and oak, have produced a beautifully interwoven expression of site and vintage. That’s what it’s all about." +By Farr Shiraz 2014,"Geelong, Victoria, Australia",Red Wine,96.0,"A powerful nose, with the depth and complexity of cool-climate shiraz. This wine is spiced with pepper and mineral elements, leaning towards earthy. The co-fermented viognier adds a little richness to both the bouquet and palate, which has a very pleasant sweetness to start, followed by intense fruit and earthy long tannins to complete the delicate structure and overall elegance of the wine." +CADE Howell Mountain Estate Cabernet Sauvignon 2008,"Howell Mountain, Napa Valley, California",Red Wine,98.0,"We feel that the 2008 CADE Estate Cabernet Sauvignon eclipses our blockbuster 2007, the reasons being that theweather in October 2008 was fantastic with not a drop of rain falling during ripening season and harvest." +Caiarossa 2016,"Tuscany, Italy",Red Wine,96.0,"The purest expression of the vineyards, Caiarossa shows all the complexity and the nobility of the land. The seven varieties in the blend weave together a perfect tapestry of the estate’s terroir. A true expression of the luxury of nature. " +Cakebread Benchland Select Cabernet Sauvignon 2007,"Napa Valley, California",Red Wine,96.0,"Our Benchland Select Cabernet Sauvignon is crafted from several prime vineyard sites in Napa Valley's gently sloping western benchlands. In 2007, 54% of our Benchland Select grapes came from the acclaimed Rutherford appellation, with 46% from its equally esteemed southern neighbor, Oakville. Each lot of grapes was hand-harvested at night to ensure the freshest flavors, and then fermented and aged separately prior to blending. " +Calera Mt. Harlan Chardonnay 2009,"Mt. Harlan, Central Coast, California",White Wine,96.0,"Our 2009 Mt Harlan Chardonnay entices with an alluring mineral, peach gelato bouquet and notes of gooseberry, honeysuckle, Bosc pear and golden apple. It is a statuesque wine; elegant, savory and velvety, with its gentle, creamy texture yet pronounced structure, hinting towards this vineyards proven, astounding aging potential, although admittedly it is wonderful to drink young as well." +Cardinale Cabernet Sauvignon 2003,"Napa Valley, California",Red Wine,96.0,"""A more challenging vintage means a more challenging blend period, as it was for this blend. After compiling at least 20 different blends, I kept coming back to this wine. The black currant, anise and minerality of Mount Veeder and Howell Mountain combine with the middle gravelly palate of Oakville and the sweet/soft character of Stags' Leap."" - Christopher Carpenter, Cardinale Winemaker" +Cardinale Cabernet Sauvignon 2008,"Napa Valley, California",Red Wine,96.0,"As you would enjoy the varied nuances and subtle layers of a Fellini film, so you should enjoy Cardinale. The 2008 has an aromatic element that evokes violets and orange blossoms with a fruitcomponent of dark cherry combined with a palate that offers currant, ripe blackberry and toast with a velvety texture on a long, drawn finish." +Cardinale Cabernet Sauvignon 2013,"Napa Valley, California",Red Wine,96.0,"At Cardinale, as we sat down to blend the 2013s, we knew that Mother Nature had created her transcendent work. It was up to us to present Cardinale to you as one of the wines that would exemplify this vintage now and far into the future. This was a responsibility we did not take lightly, knowing we had to focus on the depth, the power, the subtlety and complexity of this vintage. In the end I am confident we created a wine that captures that idea and those aspects and celebrates 2013 as it should be–transcendent. Enjoy! " +Cardinale Cabernet Sauvignon 2014,"Napa Valley, California",Red Wine,96.0,"With the 2014 vintage, a smooth and steady growing season that had only a few short heat spikes, I finally decided on 24 different wines, spanning six different appellations and 12 vineyard sites. Roughly 33% of the final blend came from Spring Mountain whose vineyard sites have soils composed primarily of volcanic loam, imparting fine tannins and delicate floral notes to the wine. To the east on Howell Mountain, we have two estate vineyards making up roughly 25% that contribute dark fruit characters, herbs and weight adding complexity and depth. " +Carte Blanche Cabernet Sauvignon 2015,"Oakville, Napa Valley, California",Red Wine,97.0,"A super complex nose leaps from the glass, showing dark and red fruits, cassis, graphite, and lead pencil layered seamlessly. A broad palate opens to reveal black fruits, hint of red currant, and fresh tobacco leaf, all leading to a mile long silky finish." +Carter Cellars Beckstoffer To Kalon The Three Kings 2013,"Oakville, Napa Valley, California",Red Wine,97.0,"The Three Kings Beckstoffer To Kalon is crafted from the classic Napa Cabernet clone 7, renown for fruit first profile. It opens up immediately with floral aromatics mixed with dark currants, exotic spices and blue/black fruits. Once again, this To Kalon is noticeably darker and the most virile wine of the Carter Cellar's 2013 offering. Revealing superb balance and concentration it is a successful expression of richness and power - the hallmark of this Beckstoffer To Kalon wine. The pliant mid-palate is composed of firm but sweet tannins which are fully integrated into the plush dark fruit and toasted oak notes. While drinking superb now, give this beautiful wine a few years in the cellar to round out and you’ll be rewarded by mature and developed nuances for 12-18 years to come." +Carter Cellars Beckstoffer To Kalon Vineyard The G.T.O. (1.5L) 2014,"Oakville, Napa Valley, California",Red Wine,96.0,"Referred to as ""a true bucket list Cabernet Sauvignon,"" the 2014 Carter Cellars available only in Magnum format is sourced from the very best barrels, in the very best slices of the Beckstoffer To Kalon Vineyard. A monumental wine, that possesses huge notes of smoke, tobacco leaf, crushed flowers, blueberries, blackberries, and licorice in both the aromatic and flavor profiles. The finish is endless in this super-intense, rich wine. Like all of our Beckstoffer To Kalons the sweetness of tannins and the emerging complexity permits enjoyment at this early stage, but let it age for 10 to 25 years to see the best of what this wine has to offer. As always, extremely limited, so act with haste." +Carter Cellars Cabernet Sauvignon Beckstoffer Las Piedras Vineyard 2014,"Oakville, Napa Valley, California",Red Wine,98.0,"The wine shows a strikingly dark hue and the nose emits a show stopping rush of blueberry and black fruits. The first taste is an opulent and rich attack on the senses, while the underlying minerality and significant structure result in a muscular but well-balanced Cabernet. A full-bodied mid-palate reveals the finely integrated tannins that lift the overall back bone of the wine into a finish abundant with black and blue fruits, and currants." +Carter Cellars Cabernet Sauvignon Beckstoffer To Kalon The O G 2014,"Oakville, Napa Valley, California",Red Wine,97.0,"As in the previous years, 2014 was a very good year for the ‘O.G.’ block of Beckstoffer To Kalon. This dense and ethereal Napa Cabernet Sauvignon reveals gorgeous notes of blackberry liqueur, complex floral undertones all matched with an inky deep purple color. Sweet tannins integrate with a plush, persistent and prodigious palate making this a complex wine which expertly showcases Napa Valley terroir. As with prior vintages of this wine, the structure and power of the clone 337 from the Beckstoffer To Kalon Vineyard lends itself well to an extended decant or several years of bottle age to really spread its wings. This wine should hit its prime in 7 to 10 years and continue to age and become more complex for decades" +Casanova di Neri Brunello di Montalcino Cerretalto (1.5 Liter Magnum) 2012,"Montalcino, Tuscany, Italy",Red Wine,98.0,"The 2012 Cerretalto is a wine with a strong charisma, in which the main traits of every Cerretalto joined together: richness, pleasantness together with freshness and elegance. It shows a very young and brilliant ruby red. The nose is mineral and charismatic, with an intense red fruit melted with chocolate, liquorice and followed by hints of citrus, smoky notes and the unmistakable graphite. Long and wide in the mouth, this wine has a thick and dense tannic texture enhanced by the finesse and silkiness. Endless aftertaste. " +Casanova di Neri Brunello di Montalcino Cerretalto 2004,"Montalcino, Tuscany, Italy",Red Wine,98.0,"The Brunello di Montalcino Cerretalto is produced from a selection of vineyards situated in the natural amphitheatre by the Asso river. The particular microclimate, the ""terroir"", the low production per vine and the great attention to detail in the winery together produce a well balanced wine with character and good alcohol content. It is only produced when we consider the quality of the grapes harvested to be excellent. It is aged for about 2 years in French oak casks and then for at least 18 months in the bottle." +Casanova di Neri Brunello di Montalcino Cerretalto 2012,"Montalcino, Tuscany, Italy",Red Wine,98.0,"The 2012 Cerretalto is a wine with a strong charisma, in which the main traits of every Cerretalto joined together: richness, pleasantness together with freshness and elegance. It shows a very young and brilliant ruby red. The nose is mineral and charismatic, with an intense red fruit melted with chocolate, liquorice and followed by hints of citrus, smoky notes and the unmistakable graphite. Long and wide in the mouth, this wine has a thick and dense tannic texture enhanced by the finesse and silkiness. Endless aftertaste. " +Casanova di Neri Brunello di Montalcino Cerretalto 2013,"Montalcino, Tuscany, Italy",Red Wine,97.0,"The 2013 vintage best represents the Cerretalto work of art: deepness, intensity, and greatness. Once poured in the glass, it shows a bright ruby red color while the bouquet has unmistakable graphite followed by hints of young and dark red fruits, chocolate and licorice. On the palate, it is immense, thick and elegant at the same time with an incredible and persistent finish. Tannins are perfectly smoothed and integrated. The Cerretalto 2013 has a long life ahead. It should be opened at least 3 hours in advance at the recommended service temperature" +Casanova di Neri Brunello di Montalcino Cerretalto (6 Liter) 2012,"Montalcino, Tuscany, Italy",Red Wine,98.0,"The 2012 Cerretalto is a wine with a strong charisma, in which the main traits of every Cerretalto are joined together -- richness and pleasantness together with freshness and elegance. It shows a very young and brilliant ruby red. The nose is mineral and charismatic, with intense notes of red fruit melted with chocolate, as well as licorice and hints of citrus, smoke and unmistakable graphite. Long and full on the palate, this wine has a thick and dense tannic texture enhanced by finesse and silkiness. Endless aftertaste. It should be opened 3 hours in advance at the right service temperature (60-63 degrees fahrenheit)." +Casanova di Neri Brunello di Montalcino Tenuta Nuova (1.5 Liter Magnum) 2013,"Montalcino, Tuscany, Italy",Red Wine,96.0,"At first sight, Tenuta Nuova 2013 already shows its potential from the bright red color. The bouquet is very expressive and intense, with notes of young red fruit, blackberry and the typical balsamic. In the mouth is full body, persistent and rich, with silky tannins and a superb lenght. A combination of elegance and power, it should be opened at least 2 hours in advance or alternatively decanting gently." +Casanova di Neri Brunello di Montalcino Tenuta Nuova 2013,"Montalcino, Tuscany, Italy",Red Wine,96.0,"At first sight, Tenuta Nuova 2013 already shows its potential from the bright red color. The bouquet is very expressive and intense, with notes of young red fruit, blackberry and the typical balsamic. In the mouth is full body, persistent and rich, with silky tannins and a superb lenght. A combination of elegance and power, it should be opened at least 2 hours in advance or alternatively decanting gently." +Casanova di Neri Brunello di Montalcino Tenuta Nuova (3 Liter Bottle) 2013,"Montalcino, Tuscany, Italy",Red Wine,96.0,"The Tenuta Nuova 2013 is bright red in color. The bouquet is very expressive and intense, with notes of young red fruit and blackberry. On the palate, it is full-bodied, persistent and rich, with silky tannins and superb length. A combination of elegance and power, it should be opened at least 2 hours in advance." +Casanova di Neri Pietradonice 2001,"Tuscany, Italy",Red Wine,96.0,"""Fantastic aromas of crushed blackberry, raspberry and cherry follow through to a full-bodied palate, with a solid core of tannins and a long, long finish. Dense yet refined, with excellent richness and structure. This is stunning and only the second year from Brunello's great producer. 95 percent Cabernet Sauvignon, 5 percent Sangiovese. Best after 2007. 985 cases made.""" +Casanova di Neri Pietradonice 2004,"Tuscany, Italy",Red Wine,96.0,"The agronomist's attention, the correct distance between the plants, the uniqueness of the microclimate and the components of the earth have produced a wine with exceptional analytical values. It has a deep color, and it has been aged in new barriques for 18 months. Using the experience of Tenuta Nuova, the Sant'Antimo Rosso DOC Pietradonice has been created by planting Cabernet Sauvignon in this ""terroir"" to see how vines other than Sangiovese perform in the Montalcino area. " +Castello dei Rampolla d'Alceo 1997,"Tuscany, Italy",Red Wine,97.0,"The color is a deep purple with the flavor of espresso, sweet melted licorice, black currant jam, tobacco and toasty oak. Full-bodied, with super refined tannins There is great intensity, superb purity, and a finish that lingers for nearly a minute. Perfect with wild meat, chicken, turkey, ham, aged cheese and mushrooms." +Castello dei Rampolla d'Alceo 2006,"Tuscany, Italy",Red Wine,96.0,"The color is a deep purple with the flavor of espresso, sweet melted licorice, black currant jam, tobacco and toasty oak. Full-bodied, with super refined tannins There is great intensity, superb purity, and a finish that lingers for nearly a minute. Perfect with wild meat, chicken, turkey, ham, aged cheese and mushrooms. " +Castello dei Rampolla d'Alceo 2008,"Tuscany, Italy",Red Wine,96.0,"Deep purple color. On the nose, espresso, sweet melted licorice, black currant jam, tobacco and toasty oak. Full-bodied, with refined tannins." +Castello di Bossi Corbaia 2008,"Tuscany, Italy",Red Wine,96.0,"Intense ruby-red in color with garnet highlights, Corbaia offers jammy aromas of black currant, cherry, and cassis backed by hints of tobacco, chocolate, and coffee. On the palate, the powerful Corbaia is supple and layered with rich texture and well-integrated tannins. " +Castello di Bossi Vin San Laurentino (375ML half-bottle) 2000,"Tuscany, Italy",Collectible,96.0,"Amber gold in color, this wine has characteristic aromas and well balanced flavors. Vin San Laurentino goes well with various soft and blue cheeses, foie gras and sweets." +Catena Zapata Adrianna Vineyard Malbec 2004,Argentina,Red Wine,97.0,"""The single-vineyard 2004 Malbec Adrianna Vineyard from the Gualtallary district is inky purple with aromas of wood smoke, pencil lead, game, black cherry, and blackberry liqueur. Opulent, full-flavored, yet remarkably light on its feet, this medium to full-bodied Malbec is all about pleasure. It will certainly evolve for a decade but is hard to resist now. It is a fine test of one's ability to defer immediate gratification. When all is said and done, Catena Zapata is the Argentina winery of reference – the standard of excellence for comparing all others. The brilliant, forward-thinking Nicolas Catena remains in charge, with his daughter, Laura, playing an increasingly large role. The Catena Zapata winery is an essential destination for fans of both architecture and wine in Mendoza. It is hard to believe, given the surge in popularity of Malbec in recent years, that Catena Zapata only began exporting Malbec to the United States in 1994.""" +Catena Zapata Adrianna Vineyard River Stones Malbec 2014,"Uco Valley, Mendoza, Argentina",Red Wine,98.0,"This cuvée takes its name from a small parcel of the Adrianna Vineyard that is completely covered with oval white stones and was the site of an ancient riverbed. The abundant stones provide optimal drainage and extreme temperatures. They absorb heat and moderate the nights, but also function like ice cubes after a very cold night. Stony soil Malbecs tend to be extremely aromatic, rich and luxurious, just like the River Stones Malbec from Adrianna. This wine can be enjoyed young or aged for decades." +Catena Zapata Adrianna White Bones Chardonnay 2013,"Mendoza, Argentina",White Wine,97.0,"The Catena Zapata White Bones Chardonnay has a bright lemon yellow color in the glass. The nose shows an excellent melange of citrus and white fruit notes with vanilla. The mouthfeel is rich and concentrated, showing ripe pear, apple and apricot flavors with salty notes. The finish shows bright, clean acidity and wonderful length." +Catena Zapata Adrianna White Bones Chardonnay 2015,"Mendoza, Argentina",White Wine,96.0,There are many theories about why the grapes coming from these rows have such distinctive floral aromatics with an earthy minerality in the nose and palate. It may be related to the minerals in the soil or to the effects that the calcareous deposits have on root penetration. +Catena Zapata Adrianna White Stones Chardonnay 2016,"Mendoza, Argentina",White Wine,98.0,"The White Stones Chardonnay has a bright lemon yellow color with gold highlights. Aromas of pears and apples are underscored by notes of vanilla and white flowers and a stony minerality. On the palate, the wine has flavors of baked red apples, Bosc pears, and quince along with notes of creamy vanilla and baking spices. The finish is crisp and bright with a stony minerality that lingers on the palate." +Catena Zapata Argentino Vineyard Malbec 2004,Argentina,Red Wine,98.0,"""The single-vineyard 2004 Malbec Argentino Vineyard spent 17 months in new French oak. Remarkably fragrant and complex aromatically, it offers up aromas of wood smoke, creosote, pepper, clove, black cherry, and blackberry. Made in a similar, elegant style, it is the most structured of the three single vineyard wines, needing a minimum of a decade of additional cellaring. It should easily prove to be a 25-40 year wine. It is an exceptional achievement in Malbec. When all is said and done, Catena Zapata is the Argentina winery of reference – the standard of excellence for comparing all others. The brilliant, forward-thinking Nicolas Catena remains in charge, with his daughter, Laura, playing an increasingly large role. The Catena Zapata winery is an essential destination for fans of both architecture and wine in Mendoza. It is hard to believe, given the surge in popularity of Malbec in recent years, that Catena Zapata only began exporting Malbec to the United States in 1994.""" +Catena Zapata Nicasia Vineyard Malbec 2004,Argentina,Red Wine,96.0,"""The single-vineyard 2004 Malbec Nicasia Vineyard is located in the Altamira district of Mendoza. It was aged for 18 months in new French oak. Opaque purple-colored, it exhibits a complex perfume of pain grille, scorched earth, mineral, licorice, blueberry, and black cherry. Thick on the palate, bordering on opulent, it has layers of fruit, silky tannins, and a long, fruit-filled finish. It will age effortlessly for another 6-8 years and provide pleasure through 2025. When all is said and done, Catena Zapata is the Argentina winery of reference – the standard of excellence for comparing all others. The brilliant, forward-thinking Nicolas Catena remains in charge, with his daughter, Laura, playing an increasingly large role. The Catena Zapata winery is an essential destination for fans of both architecture and wine in Mendoza. It is hard to believe, given the surge in popularity of Malbec in recent years, that Catena Zapata only began exporting Malbec to the United States in 1994.""" +Cavallotto Barolo Riserva Bricco Boschis (chipped wax - 3L) 2001,"Barolo, Piedmont, Italy",Red Wine,96.0,A wine of great structure but with elegance and complexity. Initially fruity with floral and spice aromas that open up. An excellent wine for aging. +Caymus Special Selection Cabernet Sauvignon 1987,California,Red Wine,98.0,A superlative wine from a great vintage. Aging beautifully with years to go. Very limited. +Caymus Special Selection Cabernet Sauvignon (6.0L) 2004,"Napa Valley, California",Red Wine,96.0," This is a 6-liter bottle, also known as an Imperial size. It contains the equivalent of eight ""regular"" 750ML bottles. " +Cayuse Armada Syrah 2003,"Walla Walla Valley, Columbia Valley, Washington",Red Wine,97.0,"The wine itself is beautifully perfumed, plush, super-rich, with layers of sweet black and blue fruits." +Cayuse God Only Knows Grenache 2006,"Walla Walla Valley, Columbia Valley, Washington",Red Wine,97.0,"Intensely fruity on the nose, with spicy flavors that follow and expand across the palate. This has excellent grip and depth, along with balancing acidity and structure. Plum, kirsch and concentrated cherry flavors pop out. It's a wine of refined power." +Celler Cal Pla Mas d'en Compte Planots 2005,"Priorat, Spain",Red Wine,98.0,"""The 2005 Mas d'En Compte Planots is 50% Garnacha and 50% Carinena from 100+-year-old vines aged in new French oak for 16 months. Purple-colored, the nose is more fruit confit than spice cabinet along with notes of wild blueberry and blackberry. This is followed by a ripe, totally hedonistic wine with extreme length and a decade of cellaring potential. While it will be hard to resist young, patient purchasers will be well rewarded."" - Wine Advocate" +Celler Pasanau El Vell Coster Priorat 2005,"Priorat, Spain",Red Wine,97.0,"""The 2005 El Vell Coster is 80% old-vine Carinena and 20% Cabernet Sauvignon from Pasanau. Opaque purple-colored, it has an enthralling nose of scorched earth, slate, mushroom, truffle, tar, blueberry, and black cherry. This is followed by an opulent, powerful, loaded wine with great concentration and impeccable balance. It has a decade of cellaring potential and should be at is peak between 2015 and 2030.""" +Ceretto Barolo Bricco Rocche 2000,"Barolo, Piedmont, Italy",Red Wine,96.0,"Polished and elegant in style, it benefits from the additional freshness and continuity provided by the sensations of mint and tobacco on its lingering finish. " +Ceretto Bricco Rocche Barolo 1995,"Barolo, Piedmont, Italy",Red Wine,96.0,Color: Ruby red. +Ceritas Costalina Pinot Noir 2018,"Sonoma Coast, Sonoma County, California",Red Wine,96.0,"Comprised of barrel selections from Hellenthal, Elliott and Porter-Bass along with the Occidental Road Vineyard. Soil profiles vary from sandstone, shale and mudstone. The wine showcases all of the vineyards Ceritas farms along the entire Sonoma Coast." +Chambers Rosewood Rutherglen Rare Muscat (375ML half-bottle),"Rutherglen, Victoria, Australia",Collectible,96.0,"Produced from Muscat a Petit Grains, or Brown Muscat as it is more commonly known, the Rare Muscat offers a complex nose of dried raisins, candied fruit skins, ground coffee and complex rancio characters. The intense, syrupy palate explodes with molasses, dried fruitand walnuts, with drying tannins and brisk acidity to carry the amazingly intense finish." +Champalou Vouvray Les Tries (500ML) 2015,"Vouvray, Touraine, Loire, France",White Wine,96.0,"The fruit is sorted, grape by grape, to find the best and most concentrated grapes. Les Tries is only produced in years in which noble rot fully develops. In the last twenty years, only 5 vintages have been produced: 1996, 1997, 2003, 2009, and 2015." +Chappellet Pritchard Hill Estate Vineyard Cabernet Sauvignon (1.5 Liter) 2007,"Napa Valley, California",Red Wine,96.0,"Our 2007 Pritchard Hill Cabernet Sauvignon was blended using the most exceptional fruit from our finest vineyard blocks. As a result, it is both complex and complete, displaying all of the elements that have come to define great Pritchard Hill Cabernet Sauvignon. The color is deep, dark and saturated, seeming to stain the glass, while the aromas offer lovely violet notes that mingle with elements of sweet blackberry, anise, and espresso. On the palate, this wine immediately reveals sweet berry and chocolate flavors that morph into a liqueur-like veneer. Smooth, layered tannins and an excellent structure leave a silky impression through-out the long, satisfying finish. This wine is no aperitif; to enjoy its fullest expression, its substantial character and flavor deserve to be paired with roasted or grilled meats, or with rich cheeses." +Chappellet Pritchard Hill Estate Vineyard Cabernet Sauvignon (1.5 Liter) 2014,"Napa Valley, California",Red Wine,99.0,"Notes of blackberry and dark cherry layer with an abundance of sweet oak and spice. Concentrated flavors of sun-soaked red and black fruit, cola and roasted coffee envelop the palate and flow through the finish. This is a wine of monumental size and concentration worthy of patient cellaring." +Chappellet Pritchard Hill Estate Vineyard Cabernet Sauvignon (1.5 Liter) 2017,"Napa Valley, California",Red Wine,96.0,"Powerful, profound, and impeccably structured, this wine captures the essence of great mountain-grown Cabernet Sauvignon. As it evolves in the glass, concentrated aromas of blueberry, blackberry, and black currant meld with hints of anise, graphite, complex herbs, dark chocolate, espresso, and spice. Though lush and viscous on the palate, a supple elegance frames the rich black cherry and ripe berry flavors, with taut underlying acidity adding poise and purity to a long resonating finish. " +Chappellet Pritchard Hill Estate Vineyard Cabernet Sauvignon 2007,"Napa Valley, California",Red Wine,96.0,"Our 2007 Pritchard Hill Cabernet Sauvignon was blended using the most exceptional fruit from our finest vineyard blocks. As a result, it is both complex and complete, displaying all of the elements that have come to define great Pritchard Hill Cabernet Sauvignon. The color is deep, dark and saturated, seeming to stain the glass, while the aromas offer lovely violet notes that mingle with elements of sweet blackberry, anise, and espresso. On the palate, this wine immediately reveals sweet berry and chocolate flavors that morph into a liqueur-like veneer. Smooth, layered tannins and an excellent structure leave a silky impression through-out the long, satisfying finish. This wine is no aperitif; to enjoy its fullest expression, its substantial character and flavor deserve to be paired with roasted or grilled meats, or with rich cheeses." +Chappellet Pritchard Hill Estate Vineyard Cabernet Sauvignon 2014,"Napa Valley, California",Red Wine,99.0,"The most sought-after wine in our portfolio, this limited-production Cabernet Sauvignon represents the pinnacle of Chappellet winemaking and embodies the elegant power and complexity of Pritchard Hill winegrowing. Like the great Bordeaux wines that first inspired Donn Chappellet, this wine is crafted by blending Cabernet Sauvignon with other classic Bordeaux varietals. The wine was aged for 22 months in 100% new French oak. Grown on our rocky, mountainside vineyard, our Cabernets have consistently displayed an ability to age for several decades." +Chappellet Pritchard Hill Estate Vineyard Cabernet Sauvignon 2017,"Napa Valley, California",Red Wine,96.0,"Powerful, profound, and impeccably structured, this wine captures the essence of great mountain-grown Cabernet Sauvignon. As it evolves in the glass, concentrated aromas of blueberry, blackberry, and black currant meld with hints of anise, graphite, complex herbs, dark chocolate, espresso, and spice. Though lush and viscous on the palate, a supple elegance frames the rich black cherry and ripe berry flavors, with taut underlying acidity adding poise and purity to a long resonating finish. " +Chappellet Signature Cabernet Sauvignon 2013,"Napa Valley, California",Red Wine,96.0,"The Signature Cabernet Sauvignon has been Chappellet's flagship wine for more than three decades. It is a benchmark for the long-lived hillside wines of the Napa Valley; full of structure and aging potential, yet seductively forward in its concentrated varietal character. The dry, rocky soils of Pritchard Hill produce small, intensely flavorful grapes. Crop thinning allows for full, even ripening and further elevates flavor complexity." +Charles Heidsieck Blanc des Millenaires Brut 1990,"Champagne, France",Sparkling & Champagne,97.0,"""The Blanc des Millenaires is 100% Chardonnay and offers a beautiful, stately expression of this grape. It's very refined in texture and complex, revealing honey, coffee, citrus confit and ginger notes enmeshed in the supple, finely grained texture. It's firm, yet perfectly integrated with the other elements.""" +Charles Heidsieck Vintage Rose 1985,"Champagne, France",Sparkling & Champagne,96.0,"First impressions are of fresh and rich aromas with magnificent expressivity. This cuvée offers a perfect balance of brilliance, abundance and length, qualities that will complement the wine’s excellent capacity to age." +Charles Smith Wines King Coal Stoneridge Vineyard 2008,"Columbia Valley, Washington",Red Wine,96.0,"Co-ferment leads with Cabernet all the way! With its savory herb and pipe tobacco aromas, currants, lavendar, and black olive, it comes together so regal, it can only be related to the Royal City." +Charles Smith Wines Old Bones Syrah 2005,"Columbia Valley, Washington",Red Wine,99.0,100% Royal Slope Syrah +Charles Smith Wines Royal City Syrah 2006,"Columbia Valley, Washington",Red Wine,97.0,"Earth, cool stone, tobacco, faint dark fruit, Asian five spice. Harmonic, complex, ethereal. Its hard to know where the wine ends and you begin. The very best to date." +Charles Smith Wines Royal City Syrah 2008,"Columbia Valley, Washington",Red Wine,96.0,"Every vintage it just seems to get better. Deeper than the '06, more luxurious than the '07. Layer upon layer upon layer. Earth, cool stone, tobacco, faint dark fruit, Asian five spice. Harmonic, complex, ethereal. Its hard to know where the wine ends and you begin. The very best to date." +Charles Smith Wines Royal City Syrah 2012,"Columbia Valley, Washington",Red Wine,99.0,"Only one is Royal City! Not just in a name, but in everything it is. Green and black olive, dry meat, roasted meat, camphor, warm earth, crushed rock. So elegant. Complex. Concentrated with finesse forever. " +Charles Smith Wines Royal Slope Heart Syrah 2007,"Columbia Valley, Washington",Red Wine,98.0,"Moderation is out the window with this and the other wines from the Royal Slope. Big, unctuous wine—moody and mouth filling, a compoteof black fruit and complementary spices—yet still amazingly balanced." +Charles Smith Wines The Skull Syrah 2005,"Columbia Valley, Washington",Red Wine,98.0,100% Royal Slope Syrah +Chateau Angelus (1.5 Liter Magnum) 2000,"St. Emilion, Bordeaux, France",Red Wine,97.0,"The 2000 Chateau Angelus is a blackish-purple colored wine that exhibits aromas of blackberies, plums and blackcurrants with delicate smoky notes and licorice. There is volume on the palate, phenominal concentration and a magnificent tannic strcture. The balance between richness and acidity brings great freshness. " +Chateau Angelus 2000,"St. Emilion, Bordeaux, France",Red Wine,96.0,"The dazzlingly fruity, creamy balanced Merlot were blended with the slightly generously-ripe Cabernet Franc. The wines have a purplish black robe and display aromas of blackberry, plum and blackcurrant as well as delicate hints of smoke and liquorice. They fill the mouth, are amazingly concentrated and have a magnificent tannic structure. The balance between acidity and lush richness produces a strong impression of freshness. These wines will keep for a very long time indeed. " +Chateau Angelus 2003,"St. Emilion, Bordeaux, France",Red Wine,99.0, +Chateau Angelus 2005,"St. Emilion, Bordeaux, France",Red Wine,96.0,"This vintage also belongs on the list of great, legendary Bordeaux vintages. At Chateau Angelus, the vintage was crowned with outstanding scores by the great wine critics and acclaimed by all the professionals. Harmony, balance between power and freshness, and aromatic precision are the features of this unique vintage." +Chateau Angelus 2015,"St. Emilion, Bordeaux, France",Red Wine,96.0,"Blend: 62% Merlot, 38% Cabernet Franc" +Chateau Angelus 6-Pack OWC (Futures Pre-Sale) 2018,"St. Emilion, Bordeaux, France",Red Wine,98.0,"Magnificient freshness in the Merlot, a selection of very old Cabernet Franc planted on clay-limestone soils and gentle extraction during vinification have combined to make this vintage a very great Chateau Angelus. A lovely depth of color attracts the eye. Perfect aromatic purity (the fruit of precision work on a daily basis), together with notes of black fruit give great charm on the nose. On the palate, a sweet note gives way to elegant tension with refined, velvety tannins. The alcohol (below that of 2010) and the oak are perfectly integrated. The finish is lingering, underpinned by the elegance of the Cabernet Franc, by the purity of the fruit, and accompanied by delicate spicy notes. " +Chateau Angelus 6-Pack OWC (Futures Pre-Sale) 2019,"St. Emilion, Bordeaux, France",Red Wine,99.0,"This 2019 vintage, made while the estate was undergoing conversion to organic-farming status, turned out to be easier to manage than the 2018, which was a vintage that ended up superbly but which caused worries and tensions. In this vintage, the Merlot has given our wine an opulent texture and succulent fruit, while our Cabernet Franc has brought freshness and tension. We chose to vinify with delicate extractions in order to preserve the brightness of the wine’s character and the purity of its fruit. The barrel-ageing process is ongoing, and the wine seems to be absorbing the tannins of the oak barrels without losing any of its bright fruit character or its balance. It possesses the depth, balance, tension and energy to be a vintage of great complexity and have an ageing potential worthy of the greatest years." +Chateau Angelus (Futures Pre-Sale) 2018,"St. Emilion, Bordeaux, France",Red Wine,98.0,"Magnificient freshness in the Merlot, a selection of very old Cabernet Franc planted on clay-limestone soils and gentle extraction during vinification have combined to make this vintage a very great Chateau Angelus. A lovely depth of color attracts the eye. Perfect aromatic purity (the fruit of precision work on a daily basis), together with notes of black fruit give great charm on the nose. On the palate, a sweet note gives way to elegant tension with refined, velvety tannins. The alcohol (below that of 2010) and the oak are perfectly integrated. The finish is lingering, underpinned by the elegance of the Cabernet Franc, by the purity of the fruit, and accompanied by delicate spicy notes. " +Chateau Angelus (Futures Pre-Sale) 2019,"St. Emilion, Bordeaux, France",Red Wine,99.0,"This 2019 vintage, made while the estate was undergoing conversion to organic-farming status, turned out to be easier to manage than the 2018, which was a vintage that ended up superbly but which caused worries and tensions. In this vintage, the Merlot has given our wine an opulent texture and succulent fruit, while our Cabernet Franc has brought freshness and tension. We chose to vinify with delicate extractions in order to preserve the brightness of the wine’s character and the purity of its fruit. The barrel-ageing process is ongoing, and the wine seems to be absorbing the tannins of the oak barrels without losing any of its bright fruit character or its balance. It possesses the depth, balance, tension and energy to be a vintage of great complexity and have an ageing potential worthy of the greatest years." +Chateau Ausone 2016,"St. Emilion, Bordeaux, France",Red Wine,99.0,"Blend: 50% Merlot, 50% Cabernet Franc" +Chateau Beausejour Duffau-Lagarrosse (Futures Pre-Sale) 2019,"St. Emilion, Bordeaux, France",Red Wine,98.0,The Barrel Sample for this wine is above 14% ABV. +Chateau Bellevue Mondotte 2005,"St. Emilion, Bordeaux, France",Red Wine,97.0,"The wine's color is reminiscent of black cherries, a sign of perfect youth. Its aromas are an elegant association of fresh and jammy black fruit; careful aging has added a fine, charming woodiness and additional grilled notes of toasted bread. On the palate the attack is fresh, and young, tight tannins are well-incorporated into the wine's body. The tannins will develop with time, but for now they are nicely balanced with the wine's fresh, nervous acidity. The mid-palate is opulent, with a texture that reflects the wine's spirited style. The finish is still dominated by young tannins, and is very long, flavorful and refined. Although this wine will offer great pleasure in several years, it has an incredible potential to age well into the future." +Chateau Bellevue Mondotte 2012,"St. Emilion, Bordeaux, France",Red Wine,96.0,"Bellevue Mondotte's two-hectares have produced a complete wine, with very fine, ripe fruit aromas of cherries, black currants, and fresh blackberries. The harvest's clearly apparent maturity does not preclude an appealing elegance. In the mouth the wine is smooth, powerful and full-bodied, with a good tannic presence, balance and extraction. An attractive, flavorful, mouthwatering finish is accompanied by tight tannins to prolong the length of a still-aging wine, made from some of the vintage's finest Merlot." +Chateau Bellevue Mondotte St. Emilion 2005,"St. Emilion, Bordeaux, France",Red Wine,97.0,"The wine's color is reminiscent of black cherries, a sign of perfect youth. Its aromas are an elegant association of fresh and jammy black fruit; careful aging has added a fine, charming woodiness and additional grilled notes of toasted bread. On the palate the attack is fresh, and young, tight tannins are well-incorporated into the wine's body. The tannins will develop with time, but for now they are nicely balanced with the wine's fresh, nervous acidity. The mid-palate is opulent, with a texture that reflects the wine's spirited style. The finish is still dominated by young tannins, and is very long, flavorful and refined. Although this wine will offer great pleasurein several years, it has an incredible potential to age well into the future." +Chateau Beychevelle (1.5 Liter Futures Pre-Sale) 2019,"St-Julien, Bordeaux, France",Red Wine,96.0,"The 2019 wines have good, strong colours, well-defined, fresh fruit, and a more moderate alcohol content than the previous vintage; their tannic structures reveal impressive elegance and depth. The volumes harvested enabled a very rigorous selection - around 55% - to produce a grand vin in the tradition of its predecessors." +Chateau Beychevelle (1.5 Liter Magnum) 2018,"St-Julien, Bordeaux, France",Red Wine,96.0,"Beychevelle 2018 can be characterized by two words: Harmony and Concentration. This vintage presents a balanced rarely achieved at this stage. A bouquet of well-ripened red and black fruit invites us to sample the intense, harmonious palate. Very silky tannins accompanied by fruit bursting with freshness and concentration. 2018 will join the list of Chateau Beychevelle's truly exceptional vintages. " +Chateau Beychevelle 2018,"St-Julien, Bordeaux, France",Red Wine,96.0,"Beychevelle 2018 can be characterized by two words: Harmony and Concentration. This vintage presents a balanced rarely achieved at this stage. A bouquet of well-ripened red and black fruit invites us to sample the intense, harmonious palate. Very silky tannins accompanied by fruit bursting with freshness and concentration. 2018 will join the list of Chateau Beychevelle's truly exceptional vintages. " +Chateau Beychevelle (6-Pack OWC Futures Pre-Sale) 2019,"St-Julien, Bordeaux, France",Red Wine,96.0,"The 2019 wines have good, strong colours, well-defined, fresh fruit, and a more moderate alcohol content than the previous vintage; their tannic structures reveal impressive elegance and depth. The volumes harvested enabled a very rigorous selection - around 55% - to produce a grand vin in the tradition of its predecessors." +Chateau Beychevelle (Futures Pre-Sale) 2019,"St-Julien, Bordeaux, France",Red Wine,96.0,"The 2019 wines have good, strong colours, well-defined, fresh fruit, and a more moderate alcohol content than the previous vintage; their tannic structures reveal impressive elegance and depth. The volumes harvested enabled a very rigorous selection - around 55% - to produce a grand vin in the tradition of its predecessors." +Chateau Calon-Segur 2016,"St. Estephe, Bordeaux, France",Red Wine,96.0,"Blend: 60% Cabernet Sauvignon, 18% Cabernet Franc, 20% Merlot, 2% Petit Verdot" +Chateau Calon-Segur (Futures Pre-Sale) 2019,"St. Estephe, Bordeaux, France",Red Wine,97.0,"The vintage 2019 was born under favorable auspices. The dry and warm summer conditions remind us of the Great Vintage 2018. The hydric pressure allowed us to reach remarkable levels of maturity on each one of our varieties. With an exceptional sanitary state, the merlots were collected from September 24thto 28th and the entirety of Cabernets, Sauvignon and Franc as well as the Petit Verdot between September 30th and October 9th.This vintage offers once more a complex aromatic palette, floral and fruity, with a freshness going along with silky, refined and elegant tannins. A new vintage at competition with 2016 and 2018… " +Chateau Canon (1.5 Liter Magnum) 2015,"St. Emilion, Bordeaux, France",Red Wine,96.0,"Chateau Canon offers floral and fresh fruit aromas. This unctuous, well-balanced wine goes the full length." +Chateau Canon 2015,"St. Emilion, Bordeaux, France",Red Wine,96.0,"The wine displays an intense crimson red hue. It is fresh and elegant on the nose with aromas of red currant and raspberry evolving towards spicy notes. On the palate, the wine speaks of the terroir. It is precise, vibrant and delicate. The tannins are fine and silky. They show a magnificent unctuosity and a smooth, soft texture, demonstrating the maturity of the vintage. The wine’s beautiful length on the finish reveals the elegant character of this wine." +Chateau Canon 6-Pack OWC (Futures Pre-Sale) 2018,"St. Emilion, Bordeaux, France",Red Wine,97.0,"2018 is vibrant from the first nose thanks to its brilliant fruit. An aromatic explosion that mingles aromas of cherries with delicious notes of marzipan. Minty notes of cedar and rose provide a burst of freshness. Carried by this ethereal balance, the wine then reveals its depth and density. It is full-blooded and full-bodied, yet always elegant. The palate is broad, the tannins refined and silky. It possesses the delectable tangy sweetness of a Bakewell tart. This 2018 shows all the power and grace of a prima ballerina, lost in her art. " +Chateau Canon La Gaffeliere (1.5 Liter Futures Pre-Sale) 2018,"St. Emilion, Bordeaux, France",Red Wine,96.0,"Chateau Canon La Gaffeliere's terroir consists of clay-limestone and clay-sand soil that is very permeable and particularly efficient at retaining heat. Reflecting the estate's soil, the proportions of grape varieties are rather atypical for the appellation: a perfect 50/50 divide between Merlot and Cabernet Sauvignon. Cabernet Sauvignon ripens early on Canon La Gaffeliere's warm soil, adding power and aromatic complexity to Merlot's opulence to create wines of natural elegance and finesse. The wine is classy, remarkably well-structured, complex, pure, and always elegant." +Chateau Canon La Gaffeliere (1.5 Liter Futures Pre-Sale) 2019,"St. Emilion, Bordeaux, France",Red Wine,97.0,"Blend: 49% Merlot, 39% Cabernet Franc, 12% Cabernet Sauvignon" +Chateau Canon La Gaffeliere 6-Pack OWC (Futures Pre-Sale) 2018,"St. Emilion, Bordeaux, France",Red Wine,96.0,"Chateau Canon La Gaffeliere's terroir consists of clay-limestone and clay-sand soil that is very permeable and particularly efficient at retaining heat. Reflecting the estate's soil, the proportions of grape varieties are rather atypical for the appellation: a perfect 50/50 divide between Merlot and Cabernet Sauvignon. Cabernet Sauvignon ripens early on Canon La Gaffeliere's warm soil, adding power and aromatic complexity to Merlot's opulence to create wines of natural elegance and finesse. The wine is classy, remarkably well-structured, complex, pure, and always elegant." +Chateau Canon La Gaffeliere 6-Pack OWC (Futures Pre-Sale) 2019,"St. Emilion, Bordeaux, France",Red Wine,97.0,"Blend: 49% Merlot, 39% Cabernet Franc, 12% Cabernet Sauvignon" +Chateau Canon La Gaffeliere (Futures Pre-Sale) 2018,"St. Emilion, Bordeaux, France",Red Wine,96.0,"Chateau Canon La Gaffeliere's terroir consists of clay-limestone and clay-sand soil that is very permeable and particularly efficient at retaining heat. Reflecting the estate's soil, the proportions of grape varieties are rather atypical for the appellation: a perfect 50/50 divide between Merlot and Cabernet Sauvignon. Cabernet Sauvignon ripens early on Canon La Gaffeliere's warm soil, adding power and aromatic complexity to Merlot's opulence to create wines of natural elegance and finesse. The wine is classy, remarkably well-structured, complex, pure, and always elegant." +Chateau Canon La Gaffeliere (Futures Pre-Sale) 2019,"St. Emilion, Bordeaux, France",Red Wine,97.0,"Blend: 49% Merlot, 39% Cabernet Franc, 12% Cabernet Sauvignon" +Chateau Cheval Blanc (1.5 Liter Futures Pre-Sale) 2019,"St. Emilion, Bordeaux, France",Red Wine,96.0,"In this vintage, the expressions of the 3 different terroirs of Cheval Blanc stand out perfectly. Although rich and powerful at 14.4% the early picking of the Merlot helped to preserve freshness, purity and tension. The slower ripening of the Cabernet helped the grapes to reach ideal phenolic maturity. This is reflected in the wines which have a remarkable tannic presence. This vintage combines freshness and complexity, power and precision, balance and density. Aromatic complexity dominates from the first nose and this wine expresses the elegance brought to it by optimal weather conditions. The significant proportion of Merlot brings particularly intense aromas of red and black fruit. The impressive nose is pure and precise with notes of raspberry, cherry, blackberry and blackcurrant embalmed in balsamic and subtle sweet aromas of pastries. The generosity and complexity of the nose dominate. Clean, pure and precise, this wine is lush and juicy reflecting perfectly the traits of the fresh fruit when it is tasted directly in the vineyard. A full, attractive attack is redolent of the Merlot of this vintage which is unctuous, round and mouth filling. The Cabernet Franc lends a lovely freshness to the mid-palate and gives the wine length on the finish. This wine is both dense and powerful whilst at the same time soft, unctuous and round. Depth, length and balance are the hallmarks of this vintage and form the identity of this wine." +Chateau Cheval Blanc (1.5 Liter Magnum) 2014,"St. Emilion, Bordeaux, France",Red Wine,96.0,"Lovely, deep ruby-red color. The rich and elegant bouquet reflects an impressive intensity, evolving into a cedar-wood bouquet. The black- and red-berry fruits presents an harmonious blend of blackberries, blackcurrants, cherries and raspberries. It also had heady, fruity and floral overtones, reminiscent of roses. The key descriptors for the bouquet of this vintage are its aromatic brilliance and precision. The initial impression on the palate is clean and powerful – even opulent. The mid-palate is bursting with fruit and has an unctuous texture, with a richness that perfectly envelops the density and tightness of the lovely, ripe tannins. The fresh and elegant aftertaste is remarkably long." +Chateau Cheval Blanc (1.5 Liter Magnum) 2015,"St. Emilion, Bordeaux, France",Red Wine,98.0,"2015 is a dry vintage, hot early in the year, then fresh on maturation. The harvest was of historical homogeneity, leading the estate not to produce Petit Cheval. The wines of 2015 are remarkably harmonious and balanced. " +Chateau Cheval Blanc (1.5 Liter Magnum) 2016,"St. Emilion, Bordeaux, France",Red Wine,97.0,"Blend: 59% Merlot, 38% Cabernet Franc, 3% Cabernet Sauvignon " +Chateau Cheval Blanc 2014,"St. Emilion, Bordeaux, France",Red Wine,96.0,"Lovely, deep ruby-red color. The rich and elegant bouquet reflects an impressive intensity, evolving into a cedar-wood bouquet. The black- and red-berry fruits presents an harmonious blend of blackberries, blackcurrants, cherries and raspberries. It also had heady, fruity and floral overtones, reminiscent of roses. The key descriptors for the bouquet of this vintage are its aromatic brilliance and precision. The initial impression on the palate is clean and powerful – even opulent. The mid-palate is bursting with fruit and has an unctuous texture, with a richness that perfectly envelops the density and tightness of the lovely, ripe tannins. The fresh and elegant aftertaste is remarkably long." +Chateau Cheval Blanc 2015,"St. Emilion, Bordeaux, France",Red Wine,98.0,"2015 is a dry vintage, hot early in the year, then fresh on maturation. The harvest was of historical homogeneity, leading the estate not to produce Petit Cheval. The wines of 2015 are remarkably harmonious and balanced. " +Chateau Cheval Blanc 2016,"St. Emilion, Bordeaux, France",Red Wine,97.0,"Blend: 59% Merlot, 38% Cabernet Franc, 3% Cabernet Sauvignon " +Chateau Cheval Blanc 6-Pack OWC (Futures Pre-Sale) 2018,"St. Emilion, Bordeaux, France",Red Wine,98.0,"Deep, intense red color. The nose is redolent of tremendously fruity and floral notes, with touches of raspberry and violet. Swirling in the glass reveals a more intense bouquet with black cherry, blackberry and blackcurrant aromas. The ever-present floral notes go on to develop rose and lilac overtones. Spicy and balsamic nuances round off the already complex bouquet with cocoa beans and black pepper aromas. The nose is impressively fresh, complex, and well-defined. The wine starts out sumptuously rich and full-bodied on the palate. The powerful rich tannins contribute to the deep, long, firm, well-balanced, and refined structure. Very elegant, it coats the palate and continues into a long, crunchy, fresh aftertaste. The finish marks a return to floral and fruity aromas with spicy overtones. The precision and balance of this wine are on par with the estate's greatest vintages. " +Chateau Cheval Blanc 6-Pack OWC (Futures Pre-Sale) 2019,"St. Emilion, Bordeaux, France",Red Wine,96.0,"In this vintage, the expressions of the 3 different terroirs of Cheval Blanc stand out perfectly. Although rich and powerful at 14.4% the early picking of the Merlot helped to preserve freshness, purity and tension. The slower ripening of the Cabernet helped the grapes to reach ideal phenolic maturity. This is reflected in the wines which have a remarkable tannic presence. This vintage combines freshness and complexity, power and precision, balance and density. Aromatic complexity dominates from the first nose and this wine expresses the elegance brought to it by optimal weather conditions. The significant proportion of Merlot brings particularly intense aromas of red and black fruit. The impressive nose is pure and precise with notes of raspberry, cherry, blackberry and blackcurrant embalmed in balsamic and subtle sweet aromas of pastries. The generosity and complexity of the nose dominate. Clean, pure and precise, this wine is lush and juicy reflecting perfectly the traits of the fresh fruit when it is tasted directly in the vineyard. A full, attractive attack is redolent of the Merlot of this vintage which is unctuous, round and mouth filling. The Cabernet Franc lends a lovely freshness to the mid-palate and gives the wine length on the finish. This wine is both dense and powerful whilst at the same time soft, unctuous and round. Depth, length and balance are the hallmarks of this vintage and form the identity of this wine." +Chateau Cheval Blanc (Futures Pre-Sale) 2018,"St. Emilion, Bordeaux, France",Red Wine,98.0,"Deep, intense red color. The nose is redolent of tremendously fruity and floral notes, with touches of raspberry and violet. Swirling in the glass reveals a more intense bouquet with black cherry, blackberry and blackcurrant aromas. The ever-present floral notes go on to develop rose and lilac overtones. Spicy and balsamic nuances round off the already complex bouquet with cocoa beans and black pepper aromas. The nose is impressively fresh, complex, and well-defined. The wine starts out sumptuously rich and full-bodied on the palate. The powerful rich tannins contribute to the deep, long, firm, well-balanced, and refined structure. Very elegant, it coats the palate and continues into a long, crunchy, fresh aftertaste. The finish marks a return to floral and fruity aromas with spicy overtones. The precision and balance of this wine are on par with the estate's greatest vintages. " +Chateau Cheval Blanc (Futures Pre-Sale) 2019,"St. Emilion, Bordeaux, France",Red Wine,96.0,"In this vintage, the expressions of the 3 different terroirs of Cheval Blanc stand out perfectly. Although rich and powerful at 14.4% the early picking of the Merlot helped to preserve freshness, purity and tension. The slower ripening of the Cabernet helped the grapes to reach ideal phenolic maturity. This is reflected in the wines which have a remarkable tannic presence. This vintage combines freshness and complexity, power and precision, balance and density. Aromatic complexity dominates from the first nose and this wine expresses the elegance brought to it by optimal weather conditions. The significant proportion of Merlot brings particularly intense aromas of red and black fruit. The impressive nose is pure and precise with notes of raspberry, cherry, blackberry and blackcurrant embalmed in balsamic and subtle sweet aromas of pastries. The generosity and complexity of the nose dominate. Clean, pure and precise, this wine is lush and juicy reflecting perfectly the traits of the fresh fruit when it is tasted directly in the vineyard. A full, attractive attack is redolent of the Merlot of this vintage which is unctuous, round and mouth filling. The Cabernet Franc lends a lovely freshness to the mid-palate and gives the wine length on the finish. This wine is both dense and powerful whilst at the same time soft, unctuous and round. Depth, length and balance are the hallmarks of this vintage and form the identity of this wine." +Chateau Clinet 2015,"Pomerol, Bordeaux, France",Red Wine,97.0,"This vintage presents a beautiful appearance, a velvety texture and complex aromas of fruit (forest fruits, tangy raspberry) and spices(Malabar pepper, liquorice). A finish which grows in intensity whilstremaining flavoursome. A very distinguished wine whose softness is met with elegance and freshness." +Chateau Clinet (6-Pack OWC Futures Pre-Sale) 2018,"Pomerol, Bordeaux, France",Red Wine,96.0,"Blend: 85% Merlot, 15% Cabernet Sauvignon" +Chateau Clinet (6-Pack OWC Futures Pre-Sale) 2019,"Pomerol, Bordeaux, France",Red Wine,97.0,"A vintage ranked among the very best. This decade has produced a number of powerful, voluptuous vintages (2010, 2016, 2018) and 2019 is no exception. Château Clinet 2019 remains true to the unique style of Clinet. With a greater presence in the blend than in previous vintages, the Cabernet Sauvignon helps to shape a wine that displays freshness, tension, structure and elegance." +Chateau Clos Marsalette (Futures Pre-Sale) 2018,"Pessac-Leognan, Bordeaux, France",Red Wine,96.0,"Magnificently sited on gravelly rises deposited aeons ago in order to produce the very best wine the terroir is capable of. The red wine is round, fruity, and distinguished. " +Chateau Cos d'Estournel (1.5 Liter Futures Pre-Sale) 2019,"St. Estephe, Bordeaux, France",Red Wine,98.0,"Silky, delicate and immensely profound, the 2019 vintage embodies the quintessence of Cos d’Estournel. Multi-faceted, it delivers aromas of cinnamon and jasmine alongside fine mineral notes and a touch of spice that perfectly structures the wine through its finish. A dazzling expression of the estate’s terroir, exceptional and full of grace, Cos d’Estournel 2019 is an alluring vintage with universal appeal that promises many wonderful years of cellaring." +Chateau Cos d'Estournel (1.5 Liter Magnum) 2016,"St. Estephe, Bordeaux, France",Red Wine,96.0,"Cos d'Estournel is slow to reveal itself. Little by little, it evokes stories of distant places, market stalls brimming with unfamiliar fruits, spices and wares, village festivities warmed by the joy of revelers and the setting sun, and sumptuous visions of ladies and their voluptuous curves. A myriad of scents, colors and tastes appeals to the senses. The Grand Vin of Cos d'Estournel is both demure and deliberately sensuous, a fascinating and elegant nectar. " +Chateau Cos d'Estournel (1.5 Liter Magnum) 2018,"St. Estephe, Bordeaux, France",Red Wine,97.0,"Finely structured and vibrant, Cos d'Estournel 2018 is both powerful and balanced, with very soft tannins. It offers a multitude of nuances, including remarkably elegant spices and an extremely long and lingering finish. It is an outstanding vintage with immense cellaring potential that will surley count among the most legendary vintages of the estate. " +Chateau Cos d'Estournel 2009,"St. Estephe, Bordeaux, France",Red Wine,96.0,"Blend: 65% Cabernet Sauvignon 33% Merlot, 2% Cabernet Franc" +Chateau Cos d'Estournel 2016,"St. Estephe, Bordeaux, France",Red Wine,96.0,"Cos d'Estournel is slow to reveal itself. Little by little, it evokes stories of distant places, market stalls brimming with unfamiliar fruits, spices and wares, village festivities warmed by the joy of revelers and the setting sun, and sumptuous visions of ladies and their voluptuous curves. A myriad of scents, colors and tastes appeals to the senses. The Grand Vin of Cos d'Estournel is both demure and deliberately sensuous, a fascinating and elegant nectar. " +Chateau Cos d'Estournel 2018,"St. Estephe, Bordeaux, France",Red Wine,97.0,"Finely structured and vibrant, Cos d'Estournel 2018 is both powerful and balanced, with very soft tannins. It offers a multitude of nuances, including remarkably elegant spices and an extremely long and lingering finish. It is an outstanding vintage with immense cellaring potential that will surley count among the most legendary vintages of the estate. " +Chateau Cos d'Estournel (3 Liter Bottle) 2016,"St. Estephe, Bordeaux, France",Red Wine,96.0,"Cos d'Estournel is slow to reveal itself. Little by little, it evokes stories of distant places, market stalls brimming with unfamiliar fruits, spices and wares, village festivities warmed by the joy of revelers and the setting sun, and sumptuous visions of ladies and their voluptuous curves. A myriad of scents, colors and tastes appeals to the senses. The Grand Vin of Cos d'Estournel is both demure and deliberately sensuous, a fascinating and elegant nectar. " +Chateau Cos d'Estournel (6 Liter Bottle) 2016,"St. Estephe, Bordeaux, France",Red Wine,96.0,"Cos d'Estournel is slow to reveal itself. Little by little, it evokes stories of distant places, market stalls brimming with unfamiliar fruits, spices and wares, village festivities warmed by the joy of revelers and the setting sun, and sumptuous visions of ladies and their voluptuous curves. A myriad of scents, colors and tastes appeals to the senses. The Grand Vin of Cos d'Estournel is both demure and deliberately sensuous, a fascinating and elegant nectar. " +Chateau Cos d'Estournel 6-Pack OWC (Futures Pre-Sale) 2019,"St. Estephe, Bordeaux, France",Red Wine,98.0,"Silky, delicate and immensely profound, the 2019 vintage embodies the quintessence of Cos d’Estournel. Multi-faceted, it delivers aromas of cinnamon and jasmine alongside fine mineral notes and a touch of spice that perfectly structures the wine through its finish. A dazzling expression of the estate’s terroir, exceptional and full of grace, Cos d’Estournel 2019 is an alluring vintage with universal appeal that promises many wonderful years of cellaring." +Chateau Cos d'Estournel (Futures Pre-Sale) 2019,"St. Estephe, Bordeaux, France",Red Wine,98.0,"Silky, delicate and immensely profound, the 2019 vintage embodies the quintessence of Cos d’Estournel. Multi-faceted, it delivers aromas of cinnamon and jasmine alongside fine mineral notes and a touch of spice that perfectly structures the wine through its finish. A dazzling expression of the estate’s terroir, exceptional and full of grace, Cos d’Estournel 2019 is an alluring vintage with universal appeal that promises many wonderful years of cellaring." +Chateau Coutet (375ML Futures Pre-Sale) 2019,"Barsac, Bordeaux, France",,97.0,"The tasting of the 2019 vintage brings out Coutet's signature nose, marked by notes of pear, ginger and exotic fruits. The palate is particularly fresh this year, offering a very modern Coutet." +Chateau de Beaucastel Chateauneuf-du-Pape 2018,"Chateauneuf-du-Pape, Rhone, France",Red Wine,97.0,"The 2018 Chateau de Beaucastel red has an elegant deep ruby-red colour. The powerful and elegant nose offers superb notes of spices, cherries and cocoa. Elegantly and perfectly balanced, the mouth reveals a beautiful dense structure with fine tannins and complex aromas of red fruit such as blackcurrants and floral notes. The finish is very long and harmonious. A very sophisticated wine, signature of Beaucastel’s style." +Chateau de Beaucastel Chateauneuf-du-Pape (375ML half-bottle) 2018,"Chateauneuf-du-Pape, Rhone, France",Red Wine,97.0,"The 2018 Chateau de Beaucastel red has an elegant deep ruby-red colour. The powerful and elegant nose offers superb notes of spices, cherries and cocoa. Elegantly and perfectly balanced, the mouth reveals a beautiful dense structure with fine tannins and complex aromas of red fruit such as blackcurrants and floral notes. The finish is very long and harmonious. A very sophisticated wine, signature of Beaucastel’s style." +Chateau de Beaucastel Chateauneuf-du-Pape (signs of seepage) 1989,"Chateauneuf-du-Pape, Rhone, France",Red Wine,97.0,An exceptional vintage for Mourvedre. A hot summer with warm nights until the end of the harvest. +Chateau de Beaucastel Chateauneuf-du-Pape Vieilles Vignes Roussanne 2006,"Chateauneuf-du-Pape, Rhone, France",White Wine,96.0,"Châteauneuf-du-Pape, between Orange and Avignon. The Chateau de Beaucastel white ""Vieilles Vignes"" (old vines) is 3 hectares / 7 acres in size. In this case the old vines are at least 75 years old. " +Chateau de Beaucastel Chateauneuf-du-Pape Vieilles Vignes Roussanne 2010,"Chateauneuf-du-Pape, Rhone, France",White Wine,96.0,"Beautiful golden color. The nose is shows a hint of oak, with an explosion of honey, peaches, exotic fruit and an exceptional richness and intensity. The mouth has a remarkable texture, thick but fresh. We find notes of white flowers and honeysuckle, lavender, honey and orange zest. The balance is perfect especially with the minerality, coming from the limestone, which gives this wine a great texture." +Chateau de Beaucastel Chateauneuf-du-Pape Vieilles Vignes Roussanne 2011,"Chateauneuf-du-Pape, Rhone, France",White Wine,96.0,"This 100% Roussanne is a beautiful golden color. The nose is shows a hint of oak, with an explosion of honey, peaches, exotic fruit and an exceptional richness and intensity. The mouth has a remarkable texture, thick but fresh. We find notes of white flowers and honeysuckle, lavender, honey and orange zest. The balance is perfect especially with the minerality, coming from the limestone, which gives this wine a great texture." +Chateau de Beaucastel Chateauneuf-du-Pape Vieilles Vignes Roussanne 2013,"Chateauneuf-du-Pape, Rhone, France",White Wine,96.0,"Beautiful golden color. The nose is shows a hint of oak, with an explosion of honey, peaches, exotic fruit and an exceptional richness and intensity. The mouth has a remarkable texture, thick but fresh. We find notes of white flowers and honeysuckle, lavender, honey and orange zest. The balance is perfect especially with the minerality, coming from the limestone, which gives this wine a great texture." +Chateau de Beaucastel Chateauneuf-du-Pape Vieilles Vignes Roussanne 2015,"Chateauneuf-du-Pape, Rhone, France",White Wine,97.0,"A beautiful bright yellow color with green highlights. The nose is discreet, stylish and elegant, with notes of rose petals and beeswax. In the mouth the wine grows and turns right, with notes of gingerbread, cinnamon, close and white pepper. The finish is beautifully balanced between salinity and minerality." +Chateau de Beaucastel Chateauneuf-du-Pape Vieilles Vignes Roussanne 2017,"Chateauneuf-du-Pape, Rhone, France",White Wine,99.0,"Very beautiful golden colour with shiny reflections. On the nose, this wine offers notes of quince, lime and roasted pineapple. Very elegant on the palate, delicately oaky with an opulent texture, it reveals aromas of white flowers such as acacia and honeysuckle, honey and citrus zest. The finish is exceptionally long and salty." +Chateau de Beaucastel Hommage Jacques Perrin Chateauneuf-du-Pape (1.5L) 2001,"Chateauneuf-du-Pape, Rhone, France",Red Wine,99.0,"""The 2001 Chateauneuf du Pape Hommage a Jacques Perrin is a blend of 60% Mourvedre, 20% Grenache, 10% Counoise, and 10% Syrah. Full-bodied, excruciatingly backward, and nearly impenetrable, it boasts an inky/blue/purple color in addition to a promising nose of new saddle leather, melted asphalt, camphor, blackberries, smoky, roasted herbs, and Asian spices. A huge lashing of tannin as well as a formidable structure result in the antithesis of its more flattering, forward, and voluptuous sibling, the classic Beaucastel. Readers lucky enough to come across this cuvee should plan on waiting at least a decade before it begins to approach adolescence. Anticipated maturity: 2012-2040.""" +Chateau de Beaucastel Hommage Jacques Perrin Chateauneuf-du-Pape 2000,"Chateauneuf-du-Pape, Rhone, France",Red Wine,97.0,"The Château de Beaucastel Hommage à Jacques Perrin from those years was made mostly from very old Mourvedre vines yielding tiny quantities of intensely ripe, concentrated fruit. Those fortunate enough to have tasted it never forget it. Truly, a ‘grand vin'." +Chateau de Beaucastel Hommage Jacques Perrin Chateauneuf-du-Pape 2001,"Chateauneuf-du-Pape, Rhone, France",Red Wine,99.0,"""The 2001 Chateauneuf du Pape Hommage a Jacques Perrin is a blend of 60% Mourvedre, 20% Grenache, 10% Counoise, and 10% Syrah. Full-bodied, excruciatingly backward, and nearly impenetrable, it boasts an inky/blue/purple color in addition to a promising nose of new saddle leather, melted asphalt, camphor, blackberries, smoky, roasted herbs, and Asian spices. A huge lashing of tannin as well as a formidable structure result in the antithesis of its more flattering, forward, and voluptuous sibling, the classic Beaucastel. Readers lucky enough to come across this cuvee should plan on waiting at least a decade before it begins to approach adolescence. Anticipated maturity: 2012-2040.""" +Chateau de Beaucastel Hommage Jacques Perrin Chateauneuf-du-Pape 2005,"Chateauneuf-du-Pape, Rhone, France",Red Wine,97.0,"Deep black-ruby color. Profound aromas of black cherry, cassis, spice, leather and game, with an almost medicinal aspect. Very sweet entry, then firm and closed, almost too hard on the palate today. Extremely concentrated on the finish." +Chateau de Beaucastel Hommage Jacques Perrin Chateauneuf-du-Pape 2009,"Chateauneuf-du-Pape, Rhone, France",Red Wine,97.0,"Deep black-ruby color. Profound aromas of black cherry, cassis, spice, leather and game, with an almost medicinal aspect. Very sweet entry, then firm and closed, almost too hard on the palate today. Extremely concentrated on the finish. This is a wine to be kept for your retirement." +Chateau de Beaucastel Hommage Jacques Perrin Chateauneuf-du-Pape 2009,"Chateauneuf-du-Pape, Rhone, France",Red Wine,97.0,"Deep black-ruby color. Profound aromas of black cherry, cassis, spice, leather and game, with an almost medicinal aspect. Very sweet entry, then firm and closed, almost too hard on the palate today. Extremely concentrated on the finish. This is a wine to be kept for your retirement." +Chateau de Beaucastel Hommage Jacques Perrin Chateauneuf-du-Pape 2009,"Chateauneuf-du-Pape, Rhone, France",Red Wine,97.0,"Deep black-ruby color. Profound aromas of black cherry, cassis, spice, leather and game, with an almost medicinal aspect. Very sweet entry, then firm and closed, almost too hard on the palate today. Extremely concentrated on the finish. This is a wine to be kept for your retirement." +Chateau de Beaucastel Hommage Jacques Perrin Chateauneuf-du-Pape 2011,"Chateauneuf-du-Pape, Rhone, France",Red Wine,96.0,"The Chateau de Beaucastel Hommage Jacques Perrin opens to a gorgeous nose with red fruits (blackberries, redcurrants), figs, black pepper and spices. The mouth is round and lush with a lot of flesh and intensity, backed by a great graphite spine. It displays aromas of blue fruits, porcini mushrooms, black truffles and mourvedre meaty components. The wine is long and round with intense tannins that are already soft but will hold the wine for the next 20-30 years." +Chateau de Beaucastel Hommage Jacques Perrin Chateauneuf-du-Pape 2012,"Chateauneuf-du-Pape, Rhone, France",Red Wine,96.0,"The nose is gorgeous with red fruits (blackberries, redcurrants), figs, black pepper and spices. The mouth isround and lush with a lot of flesh and intensity, backed by a great graphite spine. It displays aromas of blue fruits, porcinimushrooms, black truffles and mourvedre meaty components. The wine is long and round with intense tanins that are alreadysoft but will hold the wine for the next 20-30 years." +Chateau de Beaucastel Hommage Jacques Perrin Chateauneuf-du-Pape 2013,"Chateauneuf-du-Pape, Rhone, France",Red Wine,96.0,"The nose is gorgeous with red fruits (blackberries, redcurrants), figs, black pepper and spices. The mouth is round and lush with a lot of flesh and intensity, backed by a great graphite spine. It displays aromas of blue fruits, porcini mushrooms, black truffles and Mourvedre meaty components. The wine is long and round with intense tannins that are already soft but will hold the wine for the next 20-30 years." +Chateau de Beaucastel Hommage Jacques Perrin Chateauneuf-du-Pape 2014,"Chateauneuf-du-Pape, Rhone, France",Red Wine,96.0,"Deep black-ruby color. Profound aromas of black cherry, cassis, spice, leather and game, with an almost medicinal aspect. Very sweet entry, then firm and closed, almost too hard on the palate today. Extremely concentrated on the finish. A wine to be kept for your retirement." +Chateau de la Negly L'Ancely Coteaux du Languedoc 2011,"Languedoc, South of France, France",Red Wine,96.0,"Intense ruby red robe. The nose associates aromas of kirsch, mocha cocoa, soft spices. On the palate, this wine is rich, heavy with silky tannins. Its notes of ripe fruit and the roasted coffee bean finish give a glimpse of the great ageing potential of this wine, elegant and racy." +Chateau de Saint Cosme Gigondas Hominis Fides 2010,"Gigondas, Rhone, France",Red Wine,97.0,"Hominis Fides always proposes a paradox: is it a masculine or a feminine wine? The debate is open. There is some depth with finesse, there is some power with fruit, there is some ripeness with freshness, it is secret but generous: being a paradox is the main characteristic of this soil. 2010 proposes a very interesting version of Hominis Fides, with very obvious fruit and freshness. This has notes of blueberry, rose and almonds. " +Chateau de Saint Cosme Gigondas Hominis Fides 2012,"Gigondas, Rhone, France",Red Wine,96.0,"The famous limestony sands left by the Miocène sea are marvelous and enigmatic at the same time. They can be found in small quantites in Gigondas, at Chateau Rayas in Chateauneuf, in the Massif d'Uchaux, at Chateau de Montfaucon just on the other side of the Rhone river. They give to the grenache grape a very special expression, very refined and precise. The lieu-dit ""Hominis Fides"" was planted before 1902. It doesn't change much: it is a respectable age anyway. This vine has the ability to compensate the excesses of the vintages: it beautifully regulates itself. In a hot year, it will balance the alcohol with a very good physiological ripening. In a cool year, it will ripe quicker than the other vines. " +Chateau de Saint Cosme Gigondas le Claux 2012,"Gigondas, Rhone, France",Red Wine,96.0,"Classic Gigondas, with the fine bouquet so characteristic; very complex and charming. The typical aromas of camphor can be found along with notes of raspberries and peat. " +Chateau de Saint Cosme Gigondas le Claux 2015,"Gigondas, Rhone, France",Red Wine,97.0,"Château de Saint Cosme Le Claux offers alluring notes of raspberry and roasted almond with subtle rustic nuances. The full body and solid structure create a wine to be enjoyed today or years from this point, due to its wonderful ability to age. " +Chateau de Saint Cosme Gigondas le Claux 2018,"Gigondas, Rhone, France",Red Wine,96.0,"The soil at Le Claux is a yellowish limestone marl and produces the most “Burgundian” wine at Saint Cosme. “It’s extremely refined and fresh with lots of bouquet. Its propensity to mature is excellent,” says Barruol. The wine features aromas and flavors of wild strawberries, violet, peat, Chinese Five Spice, and camphor. " +Chateau de Saint Cosme Gigondas le Poste 2009,"Gigondas, Rhone, France",Red Wine,96.0,"Le Poste in 2009 is elegant like a black truffle aroma. A fruit made out of earth and stones. The wine is beautiful, a little different, with a very clear ""Poste"" expression. Find notes of violet, raspberry, blackberry, lode and limestone." +Chateau de Saint Cosme Gigondas le Poste 2010,"Gigondas, Rhone, France",Red Wine,98.0,"Le Poste is a favourite wine at Saint Cosme. It is everything they like in wine - it is a wine of fruit and a wine to keep, a wine of complexity and an easy to understand one, a wine of structure and a wine of freshness. You'll find notes of Violet, almond, raspberry, and blackberry in this wine. " +Chateau de Saint Cosme Gigondas le Poste 2012,"Gigondas, Rhone, France",Red Wine,97.0,"Le Poste is probably the easiest wine to recognize because its style is distinctive : the most feminine and the most charming of our Gigondas wines. With a south / south-west exposure to sun, Le Poste works really well in cool years such as 2008 for example. In 2012, we had at Le Poste a perfectly accomplished ripening. Try to keep these bottles from 10 to 15 years." +Chateau de Saint Cosme Gigondas le Poste 2015,"Gigondas, Rhone, France",Red Wine,96.0,"Aromas and supple flavors of violet and tar emanate from the glass in the Château de Saint Cosme Gigondas Le Poste. Full and rich, the old vines pass down fine intensity and a substantial finish to the final wine. " +Chateau de Saint Cosme Gigondas Valbelle 2010,"Gigondas, Rhone, France",Red Wine,96.0,"Valbelle 2010 is just like the great Valbelle 1995, 1996, 2005, 2007. It was wonderful to vinify Valbelle this year because all the characteristic aromas of Valbelle could be found by smelling the vat fermenting, from the stage they develop to the time they marry to get the homogeneity. The 2010 vintage has aromas and flavors of wild raspberry, white pepper, graphite, and laurel. This bottle will have to be kept. " +Chateau d'Issan (Futures Pre-Sale) 2019,"Margaux, Bordeaux, France",Red Wine,96.0,"A vintage with charisma. The 2019 vintage displays perfect balance between its sun-ripened aromas and the texture of its tannins. Harmonious and silky, it fully expresses the features of its historic terroir." +Chateau Doisy Daene (375ML half-bottle) 2015,"Barsac, Bordeaux, France",,96.0,"The wine of Doisy-Daëne has a particular style, privileging the brilliance of the fruit concentrated by the ""noble rot"", nervousness, balance and delicacy of flavors. This style is both the expression a great limestone terroir and a family aesthetic tradition, that of racy white wines, a Diamond purity, combining power and freshness, in an endless youth." +Chateau Doisy Daene L'Extravagant Sauternes (375ML half-bottle) 2001,"Sauternes, Bordeaux, France",,98.0,"""Liquid honey in appearance. Incredibly ripe with dried apricot, orange and mace. Full-bodied, thick and powerful with amazing richness and spiciness. It goes on and on and on. This concentration is phenomenal. Yet it's lively and spicy. Huge finish. Best after 2012. 140 cases made.""" +Chateau Doisy Daene L'Extravagant Sauternes (375ML half-bottle) 2009,"Sauternes, Bordeaux, France",Collectible,98.0,"Doisy Daëne wine has a style of its own that privileges a bursting fruit concentrated by the ""noble rot"", strength, balance and subtlety of the flavors. The Doisy-Daëne style is all at once the expression of a great calcareous soil and a truly aesthetic family tradition, the one of distinguished white wines, of crystal-like purity, combining power and freshness, in an infinite youth. " +Chateau Ducru-Beaucaillou (1.5 Liter Futures Pre-Sale) 2018,"St-Julien, Bordeaux, France",Red Wine,98.0,"Deep, intense, brillant purple-black color. Vivid and attractive. Aromas redolent of black fruits, hint of graphite and violets.Powerful and elegant structure, fleshy, rich, polished tannins, remarkable length risen by a wonderful freshness. A new standard." +Chateau Ducru-Beaucaillou (1.5 Liter Futures Pre-Sale) 2019,"St-Julien, Bordeaux, France",Red Wine,99.0,"Blend: 80% Cabernet Sauvignon, 20% Merlot" +Chateau Ducru-Beaucaillou (1.5 Liter Magnum) 2015,"St-Julien, Bordeaux, France",Red Wine,97.0,#84 +Chateau Ducru-Beaucaillou (1.5 Liter Magnum) 2016,"St-Julien, Bordeaux, France",Red Wine,97.0,"Blend: 85% Cabernet Sauvignon, 15% Merlot" +Chateau Ducru-Beaucaillou 2010,"St-Julien, Bordeaux, France",Red Wine,96.0,"Profound dark violet in color, with notes of black fruits and a hint of spices on the nose. The palate is round and luscious, with an imposing structure that is fleshy but nicely buttressed by acidity. The tannins are sauve and velvety. The finish is fleshy and impressively persistent." +Chateau Ducru-Beaucaillou 2015,"St-Julien, Bordeaux, France",Red Wine,97.0,#84 +Chateau Ducru-Beaucaillou 2016,"St-Julien, Bordeaux, France",Red Wine,97.0,"Blend: 85% Cabernet Sauvignon, 15% Merlot" +Chateau Ducru-Beaucaillou (6-Pack OWC Futures Pre-Sale) 2019,"St-Julien, Bordeaux, France",Red Wine,99.0,"Blend: 80% Cabernet Sauvignon, 20% Merlot" +Chateau Ducru-Beaucaillou (Futures Pre-Sale) 2018,"St-Julien, Bordeaux, France",Red Wine,98.0,"Deep, intense, brillant purple-black color. Vivid and attractive. Aromas redolent of black fruits, hint of graphite and violets.Powerful and elegant structure, fleshy, rich, polished tannins, remarkable length risen by a wonderful freshness. A new standard." +Chateau Ducru-Beaucaillou (Futures Pre-Sale) 2019,"St-Julien, Bordeaux, France",Red Wine,99.0,"Blend: 80% Cabernet Sauvignon, 20% Merlot" +Chateau Durfort-Vivens (Futures Pre-Sale) 2019,"Margaux, Bordeaux, France",Red Wine,97.0,"Blend: 90% Cabernet Sauvignon, 10% Merlot" +Chateau d'Yquem Sauternes (1.5 Liter Magnum) 1989,"Sauternes, Bordeaux, France",,97.0,"Rich, opulent concentrated and full-bodied. Medium gold with a honeyed, oaky, flowery, tropical fruit bouquet, magnificent and unique." +Chateau d'Yquem Sauternes 1975,"Sauternes, Bordeaux, France",Collectible,97.0,"Rich, opulent concentrated and full-bodied. Medium gold with a honeyed, oaky, flowery, tropical fruit bouquet, magnificent and unique. " +Chateau d'Yquem Sauternes 1983,"Sauternes, Bordeaux, France",Collectible,96.0,"Rich, opulent concentrated and full-bodied. Medium gold with a honeyed, oaky, flowery, tropical fruit bouquet, magnificent and unique." +Chateau d'Yquem Sauternes 1986,"Sauternes, Bordeaux, France",Collectible,98.0,"Blend 80% Semillon, 20% Sauvignon Blanc. Average age of vines 30 years. 100% barrel fermented. Aged for 31/2 years (100% new) ""perfect""" +Chateau d'Yquem Sauternes 1988,"Sauternes, Bordeaux, France",Collectible,96.0,"Rich, opulent concentrated and full-bodied. Medium gold with a honeyed, oaky, flowery, tropical fruit bouquet, magnificent and unique." +Chateau d'Yquem Sauternes 1990,"Sauternes, Bordeaux, France",Collectible,97.0,"Rich, opulent concentrated and full-bodied. Medium gold with a honeyed, oaky, flowery, tropical fruit bouquet, magnificent and unique." +Chateau d'Yquem Sauternes 2002,"Sauternes, Bordeaux, France",Collectible,96.0,"Chateau d'Yquem is one of the most highly-regardeddessert wines in the world. In the famous 1855 classification ofBordeaux, Château d'Yquem was theonly domaine to be accorded the rankof Premier Cru Supérieur. Produced from painstakingly handpickedgrapes and severe selection inthe winery, only 1 glass of wine pervine is produced at d'Yquem." +Chateau d'Yquem Sauternes 2003,"Sauternes, Bordeaux, France",Collectible,96.0,"Blend: 80% Semillon, 20% Sauvignon Blanc" +Chateau d'Yquem Sauternes 2015,"Sauternes, Bordeaux, France",Collectible,98.0,"Blend: 75% Semillon, 25% Sauvignon" +Chateau d'Yquem Sauternes (375ML half-bottle) 1988,"Sauternes, Bordeaux, France",Collectible,96.0,"Spring was warm, but very wet, with late flowering. However, the tide turned in July when beautiful weather set in. The harvest began late, in mid-October, and stretched until All Saints' Day. The grapes developed evenly during this time and were able to take their time to reach complete maturity. There were six passes altogether, each of excellent quality. '88 Yqeum is very full and classic." +Chateau d'Yquem Sauternes (375ML half-bottle) 2003,"Sauternes, Bordeaux, France",Collectible,96.0,"The color is already a very pale yellow. The nose has intense fresh fruit aromas (pineapple, passion fruit and mango) accompanied by very attractive floral nuances (rose and acacia blossoms) as well as a touch of vanilla. This wine has a great deal of personality on the palate as well as beautiful volume, substance, and a perfect balance between alcohol, sugar and acidity. The overall equilibrium is extremely elegant and lively. The complexity , smoothness, and length this wine will acquire during barrel aging are sure to make this an altogether impressive Yquem." +Chateau d'Yquem Sauternes (375ML half-bottle) 2011,"Sauternes, Bordeaux, France",Collectible,97.0,"Discovering Chateau d'Yquem starts with the bouquet. Although not always very outgoing in young vintages, it is marked by fruit (apricot, mandarin, and occasionally tropical fruit) and oak (vanilla and toasty aromas). Older vintages, on the other hand, have an extraordinarily complex fragrance as soon as the bottle is opened. The bouquet is amazingly subtle, with hints of dried fruit (dried apricot, prune, stewed fruit, and marmalade), spice (cinnamon, saffron, and licorice), and even flowers (linden blossom, etc.). The first impression on the palate is always very silky, and often sumptuous. It then fills out, ""coating the palate."" This fine wine has a strong, but never overbearing character, with great elegance and poise. It always maintains a balance between sugar and acidity (sweetness and freshness)." +Chateau d'Yquem Sauternes (375ML half-bottle) 2013,"Sauternes, Bordeaux, France",Collectible,97.0,"This was a year of tremendous contrasts. Spring was abnormally cool and wet, which meant that flowering was very spread out – a factor conducive to complexity at Yquem. Summer was magnificent! Cool weather in September retained the grapes' freshness, whereas summerlike conditions returned in October. The harvest took place under ideal conditions. This 2013 is very ""botrytised"", with richness and candied fruit flavors. The wine's freshness and power are comparable to 2001 and the degree of botrytis is reminiscent of 2007." +Chateau Ferriere (Futures Pre-Sale) 2019,"Margaux, Bordeaux, France",Red Wine,96.0,"The results are in the glass: a blend of fruits, minerality andfreshness. The tannins are very smooth, elegant and well balanced.Today, this is my favorite wine of Chateau Ferriere." +Chateau Figeac (1.5 Liter Futures Pre-Sale) 2018,"St. Emilion, Bordeaux, France",Red Wine,99.0,"An attractive, deep, bright, purple color. An expressive, air-light nose leads on to Figeac freshness and aromatics, followed by floral notes mingling harmoniously with nuances of fruit and underpinned by aromas of blackcurrants and raspberries. The palate is expressive and vibrant, cadenced by a clean powerful entry, an enveloping and velvety mid-palate reminiscent of 2015 vintage, and a fresh, lean finish accompanied by tannins of a finesse and minerality that recall the 2016 vintage. The greatness of this vintage is embodied by the amazing harmony between the round and eveloping Merlot, the fresh and elegant Cabernet Franc, and the lace-textured, tender Cabernet Sauvignon. The Chateau Figeac 2018 delivers here the perfect chord from its famous three grape varieties. " +Chateau Figeac (1.5 Liter Futures Pre-Sale) 2019,"St. Emilion, Bordeaux, France",Red Wine,98.0,"The color of the 2019 with its deep, brilliant, amaranthine red hue and bright purple glints testifies to the beautiful ripeness of this vintage. The nose is intensely aromatic, pure and reveals great finesse. Our Cabernets find their full expression through notes of flowers and fruit, such as blueberries and Mara Des Bois strawberries. Delicious and dense on the entry to the palate, the wine develops harmoniously on the mid-palate with the gentle, enveloping texture of the Merlot. Showing exceptional length of favor, the wine maintains a balance that follows right through to the finish, in which the fine, mineral texture of the Cabernets is elevated by the freshness of the fruit flavor. 2019 will go down in the history of Château-Figeac as one of its benchmark vintages." +Chateau Figeac (1.5 Liter Magnum) 2015,"St. Emilion, Bordeaux, France",Red Wine,97.0,"The aromatic depth of the Cabernets is exceptional. A variation of floral scents brought by the Cabernet Franc completes the freshness of the fruity and spicy bouquet of the Cabernet Sauvignon. It is a true color chart of sensations for the palate. The juicy flesh of the Merlot envelops this whole and gives a full midpalate to the velvety texture. The tannic structure accompanies the wine towards a long and persistent finish, respecting the style of Chateau Figeac. " +Chateau Figeac (1.5 Liter Magnum) 2016,"St. Emilion, Bordeaux, France",Red Wine,96.0,"Blend: 38% Cabernet Sauvignon, 36% Merlot, 26% Cabernet Franc" +Chateau Figeac 2010,"St. Emilion, Bordeaux, France",Red Wine,96.0,"This great wine displays a distinctive rich nose that has wonderful aromatic complexity. On the palate, the Cabernet Sauvignon reveals lovely floral aromas in the first year then, as the wine ages, great structure on the palate. The Cabernet Franc brings lots of freshness in the tannins, and the Merlot contributes roundness and flesh. The attack on the palate is clean, the texture is silky, and the complexity elegant. The characteristic freshness of Figeac is underpinned by great length of flavor. With its long aging potential, the wine goes on in time to reveal hints of forest floor, leather, cigar-box and liquorice –always with its hallmark elegance." +Chateau Figeac 2015,"St. Emilion, Bordeaux, France",Red Wine,97.0,"The aromatic depth of the Cabernets is exceptional. A variation of floral scents brought by the Cabernet Franc completes the freshness of the fruity and spicy bouquet of the Cabernet Sauvignon. It is a true color chart of sensations for the palate. The juicy flesh of the Merlot envelops this whole and gives a full midpalate to the velvety texture. The tannic structure accompanies the wine towards a long and persistent finish, respecting the style of Chateau Figeac. " +Chateau Figeac 2016,"St. Emilion, Bordeaux, France",Red Wine,96.0,"Blend: 38% Cabernet Sauvignon, 36% Merlot, 26% Cabernet Franc" +Chateau Figeac 6-Pack OWC (Futures Pre-Sale) 2018,"St. Emilion, Bordeaux, France",Red Wine,99.0,"An attractive, deep, bright, purple color. An expressive, air-light nose leads on to Figeac freshness and aromatics, followed by floral notes mingling harmoniously with nuances of fruit and underpinned by aromas of blackcurrants and raspberries. The palate is expressive and vibrant, cadenced by a clean powerful entry, an enveloping and velvety mid-palate reminiscent of 2015 vintage, and a fresh, lean finish accompanied by tannins of a finesse and minerality that recall the 2016 vintage. The greatness of this vintage is embodied by the amazing harmony between the round and eveloping Merlot, the fresh and elegant Cabernet Franc, and the lace-textured, tender Cabernet Sauvignon. The Chateau Figeac 2018 delivers here the perfect chord from its famous three grape varieties. " +Chateau Figeac 6-Pack OWC (Futures Pre-Sale) 2019,"St. Emilion, Bordeaux, France",Red Wine,98.0,"The color of the 2019 with its deep, brilliant, amaranthine red hue and bright purple glints testifies to the beautiful ripeness of this vintage. The nose is intensely aromatic, pure and reveals great finesse. Our Cabernets find their full expression through notes of flowers and fruit, such as blueberries and Mara Des Bois strawberries. Delicious and dense on the entry to the palate, the wine develops harmoniously on the mid-palate with the gentle, enveloping texture of the Merlot. Showing exceptional length of favor, the wine maintains a balance that follows right through to the finish, in which the fine, mineral texture of the Cabernets is elevated by the freshness of the fruit flavor. 2019 will go down in the history of Château-Figeac as one of its benchmark vintages." +Chateau Figeac (Futures Pre-Sale) 2018,"St. Emilion, Bordeaux, France",Red Wine,99.0,"An attractive, deep, bright, purple color. An expressive, air-light nose leads on to Figeac freshness and aromatics, followed by floral notes mingling harmoniously with nuances of fruit and underpinned by aromas of blackcurrants and raspberries. The palate is expressive and vibrant, cadenced by a clean powerful entry, an enveloping and velvety mid-palate reminiscent of 2015 vintage, and a fresh, lean finish accompanied by tannins of a finesse and minerality that recall the 2016 vintage. The greatness of this vintage is embodied by the amazing harmony between the round and eveloping Merlot, the fresh and elegant Cabernet Franc, and the lace-textured, tender Cabernet Sauvignon. The Chateau Figeac 2018 delivers here the perfect chord from its famous three grape varieties. " +Chateau Figeac (Futures Pre-Sale) 2019,"St. Emilion, Bordeaux, France",Red Wine,98.0,"The color of the 2019 with its deep, brilliant, amaranthine red hue and bright purple glints testifies to the beautiful ripeness of this vintage. The nose is intensely aromatic, pure and reveals great finesse. Our Cabernets find their full expression through notes of flowers and fruit, such as blueberries and Mara Des Bois strawberries. Delicious and dense on the entry to the palate, the wine develops harmoniously on the mid-palate with the gentle, enveloping texture of the Merlot. Showing exceptional length of favor, the wine maintains a balance that follows right through to the finish, in which the fine, mineral texture of the Cabernets is elevated by the freshness of the fruit flavor. 2019 will go down in the history of Château-Figeac as one of its benchmark vintages." +Chateau Haut-Bailly (1.5 Liter Futures Pre-Sale) 2018,"Pessac-Leognan, Bordeaux, France",Red Wine,97.0,"2018 was a year of extremes. The excessive rainfall of winter and spring was followed by drought with a long sunny summer for more than four consecutive months ... rare and ideal! The resulting wines are full of color, dense, structured and expressive. Opulence and exceptional quality for a solar vintage. " +Chateau Haut-Bailly (1.5 Liter Futures Pre-Sale) 2019,"Pessac-Leognan, Bordeaux, France",Red Wine,97.0,"Charming Merlots and structured Cabernets. The wines are ripe, rich and aromatic. They offer balance generosity as well as precision. 2019 is a wine of style and depth, a wine of balance, power and purity." +Chateau Haut-Bailly (Futures Pre-Sale) 2018,"Pessac-Leognan, Bordeaux, France",Red Wine,97.0,"2018 was a year of extremes. The excessive rainfall of winter and spring was followed by drought with a long sunny summer for more than four consecutive months ... rare and ideal! The resulting wines are full of color, dense, structured and expressive. Opulence and exceptional quality for a solar vintage. " +Chateau Haut-Bailly (Futures Pre-Sale) 2019,"Pessac-Leognan, Bordeaux, France",Red Wine,97.0,"Charming Merlots and structured Cabernets. The wines are ripe, rich and aromatic. They offer balance generosity as well as precision. 2019 is a wine of style and depth, a wine of balance, power and purity." +Chateau Haut-Brion (1.5 Liter Futures Pre-Sale) 2019,"Pessac-Leognan, Bordeaux, France",Red Wine,99.0,"The wine is a superb, deep purple-red color. The first nose is at once intense and subtle. It has a ripe fruitiness, and swirling brings out its aromatic complexity.The first expression is incredibly smooth and delicate,expanding and filling the palate without ever “flexing its muscles”. The tannins are precise but not aggressive, and subtly enchanting. The finish is long and fragrant. Once again, Haut-Brion surprises for its ability to enhance the complementarity of Merlot, Cabernet Franc and Cabernet Sauvignon." +Chateau Haut-Brion (1.5 Liter Futures Pre-Sale) 2018,"Pessac-Leognan, Bordeaux, France",Red Wine,98.0,"Blend: 49.4% Merlot, 38.7% Cabernet Sauvignon and 11.9% Cabernet Franc" +Chateau Haut-Brion (1.5 Liter Magnum) 2005,"Pessac-Leognan, Bordeaux, France",Red Wine,98.0,"The color is so dense that the wine seems almost black. The nose has an intensity of aromas that are mind-blowing. It can never disavow its origins as we find all the complexity that is so well known for characterizing Haut-Brion: its notes of smoke, of cigar and roasted coffee grains. The whiff of fresh fruit is also present: currants and cherries. From the first approach this wine startles one with its density. It is long in the mouth plus creamy, big, powerful and fresh. It takes a hold of you and penetrates your senses. Power and harmony are the distinctive traits of this vintage. The aromatic persistence is incredibly long. This perfectly balanced wine will without a doubt become one of the biggest successes of our Domaine." +Chateau Haut-Brion (1.5 Liter Magnum) 2009,"Pessac-Leognan, Bordeaux, France",Red Wine,96.0,"The purplish-red color is the first sign of this wine's concentration. When swirled in the glass, it displays a deep, warm, very ripe bouquet. 2009 Chateau Haut-Brion is full of flavor from the beginning to end. It is so rich and concentrated that we are tempted to use the word ""thick."" However, this thickness is in no way synonymous with heaviness thanks to a counterbalancing freshness. 2009 Chateau Haut-Brion is reminiscent of 2005 in terms of power, but is even more concentrated." +Chateau Haut-Brion (1.5 Liter Magnum) 2016,"Pessac-Leognan, Bordeaux, France",Red Wine,98.0,"Blend: 56% Merlot, 37.5% Cabernet Sauvignon and 6.5% Cabernet Franc" +Chateau Haut-Brion 2005,"Pessac-Leognan, Bordeaux, France",Red Wine,98.0,"The color is so dense that the wine seems almost black. The nose has an intensity of aromas that are mind-blowing. It can never disavow its origins as we find all the complexity that is so well known for characterizing Haut-Brion: its notes of smoke, of cigar and roasted coffee grains. The whiff of fresh fruit is also present: currants and cherries. From the first approach this wine startles one with its density. It is long in the mouth plus creamy, big, powerful and fresh. It takes a hold of you and penetrates your senses. Power and harmony are the distinctive traits of this vintage. The aromatic persistence is incredibly long. This perfectly balanced wine will without a doubt become one of the biggest successes of our Domaine." +Chateau Haut-Brion 2009,"Pessac-Leognan, Bordeaux, France",Red Wine,96.0,"The purplish-red color is the first sign of this wine's concentration. When swirled in the glass, it displays a deep, warm, very ripe bouquet. 2009 Chateau Haut-Brion is full of flavor from the beginning to end. It is so rich and concentrated that we are tempted to use the word ""thick."" However, this thickness is in no way synonymous with heaviness thanks to a counterbalancing freshness. 2009 Chateau Haut-Brion is reminiscent of 2005 in terms of power, but is even more concentrated." +Chateau Haut-Brion 2010,"Pessac-Leognan, Bordeaux, France",Red Wine,98.0,"This wine is a superb ruby-red color with purplish highlights. The initially closed-in bouquet opens up nicely on aeration. The wonderfully subtle aromas follow through in quick succession, starting with oaky overtones, followed by red-berry fruit, leading into terroir character: cocoa powder, roasting coffee, and Havana cigars. The initial softness on the palate gradually evolves to reveal the tannic backbone. Despite their dense structure, the tannins are amazingly silky. The overall freshness carries the flavors through into an aftertaste that goes on and on." +Chateau Haut-Brion 2014,"Pessac-Leognan, Bordeaux, France",Red Wine,96.0,"Deep, dark red color. The nose is very deep with powerful aromas of black fruit and spice. The wine starts out quite powerful on the palate, but softens on the middle palate, developing a lovely velvety texture. The finely polished tannic structure is enhanced by considerable concentration and full, luscious body. " +Chateau Haut-Brion (6-Pack OWC Futures Pre-Sale) 2018,"Pessac-Leognan, Bordeaux, France",Red Wine,98.0,"Blend: 49.4% Merlot, 38.7% Cabernet Sauvignon and 11.9% Cabernet Franc" +Chateau Haut-Brion Blanc (Futures Pre-Sale) 2019,"Pessac-Leognan, Bordeaux, France",White Wine,98.0,"Château Haut-Brion white wine is synonymous with uniqueness, excellence and aromatic intensity. Only 400 cases are produced per vintage. The unique blend of Sémillon and Sauvignon gives this Graves wine a concentration and breadth that is atypical of a dry white Bordeaux. The wine is a beautiful pale yellow in color. The first nose is intense, marked by Sauvignon, ethereal yet ripe, delicate and fresh. When swirled in the glass, there is an incredibleimpression of “densification” and complexity: the Sémillon clearly acts as an aroma enhancer, beyond a doubt. The first impression is generous, fragrant and flavorful. The wine then extends, displaying an outstanding length that continues to gain momentum, revealing spicy nuances. This Haut-Brion confirms that years marked by a very hot and dry summer can produce white wines of incrediblefreshness and power of flavors. One of the most beautiful Haut-Brion whites, very similar to the 2017, and undoubtedly a future 1993, one of the most successful vintages of recent years." +Chateau Haut-Brion (Futures Pre-Sale) 2018,"Pessac-Leognan, Bordeaux, France",Red Wine,98.0,"Blend: 49.4% Merlot, 38.7% Cabernet Sauvignon and 11.9% Cabernet Franc" +Chateau Haut-Brion (Futures Pre-Sale) 2019,"Pessac-Leognan, Bordeaux, France",Red Wine,99.0,"The wine is a superb, deep purple-red color. The first nose is at once intense and subtle. It has a ripe fruitiness, and swirling brings out its aromatic complexity.The first expression is incredibly smooth and delicate, expanding and filling the palate without ever “flexing its muscles”. The tannins are precise but not aggressive, and subtly enchanting. The finish is long and fragrant. Once again, Haut-Brion surprises for its ability to enhance the complementarity of Merlot, Cabernet Franc and Cabernet Sauvignon." +Chateau Haut-Brion (stained labels) 1998,"Pessac-Leognan, Bordeaux, France",Red Wine,96.0,"Very classic deep, dense color. Although slightly closed, the nose discovers a handsome complexity and immense richness. The whole evolves with an evident softness where a mixture of the suaveness and inky depth of a season Porto come to mind. The slightly caramelized ripe fruit melds its hint of wood with the more obvious notes of roasted coffee and cacao. The tannin is superb and still dense. Altogether one finds volume with a rich promise of intensity to come. A very good year that one should patiently wait for." +Chateau Hosanna 2015,"Pomerol, Bordeaux, France",Red Wine,96.0,"The wines of Chateau Hosanna show a good intense color, with a normal evolution; on the nose, one finds a vivid bouquet with floral and fruits scents; on the palate, a good harmony and balance with fresh tannins ending on an aromatic and very pleasant finale. These are charming and typically Bordeaux wines in their complexity and finesse. " +Chateau Hosanna (Futures Pre-Sale) 2019,"Pomerol, Bordeaux, France",Red Wine,97.0,The Barrel Sample for this wine is above 14% ABV. +Chateau La Conseillante 1990,"Pomerol, Bordeaux, France",Red Wine,97.0,"The color is showing a touch of age, but it still has intense depth. The nose is clean, revealing superb aromatic complexity with notes of varnished wood, plums and blackberries coming through. On the palate, there is good volume and lots of appeal, a sign that there's still good ageing potential." +Chateau La Conseillante 2005,"Pomerol, Bordeaux, France",Red Wine,96.0,"""With the son of the Nicolas family, Valmy, taking over and ratcheting up the selection process as well as the quality, La Conseillante appears poised to challenge its closest neighbor, l'Evangile, as the finest estate on the border of the sector of Pomerol facing Cheval Blanc in St.-Emilion. The 2005 will challenge the extraordinary 2000. Among the truly fabulous wines made here (i.e., 2000, 1990, 1989, 1985, and 1982), its deep ruby/purple hue is accompanied by an exquisite bouquet of incense, raspberry jam, kirsch, licorice, and hints of black olives as well as flowers. This broadly perfumed Pomerol exhibits sensational purity, sweet tannin, medium to full body, and outstanding elegance and finesse. The fruit is forward and precocious, but there is enough stuffing, structure, and density for the wine to evolve for 20-25 years.""" +Chateau La Conseillante (Futures Pre-Sale) 2019,"Pomerol, Bordeaux, France",Red Wine,97.0,"Never has the blending of a vintage been so straightforward. The association of the different lots of the 2019 La Conseillante has produced a wine with stunning freshness allied to gentle power.Very Pomerol in its seductiveness, this vintage reveals black fruit aromas supported by floral and spicy notes. La Conseillante 2019 is a vibrant wine with huge promise for the decades to come." +Chateau La Fleur de Bouard Le Plus 2000,"Pomerol, Bordeaux, France",Red Wine,99.0,"A very dark, vivid hue of Indian ink; this color still looks very young. t exudes aromas of black fruit, blackberries, as well as chocolaty hints and a delicate touch of truffle. Supple on the first taste, very rich and round, with flavors of black fruit that evoke the aromas. The tannins are clearly perceptible, but pleasantly melted. The flavors are delightfully long-lasting." +Chateau La Fleur-Petrus (Futures Pre-Sale) 2018,"Pomerol, Bordeaux, France",Red Wine,96.0,"Blend: 91% Merlot, 6% Cabernet Franc, 3% Petit Verdot" +Chateau La Fleur-Petrus (Futures Pre-Sale) 2019,"Pomerol, Bordeaux, France",Red Wine,96.0,*Please note that the price on Wine.com of this 2019 Bordeaux Future +Chateau La Gaffeliere (Futures Pre-Sale) 2018,"St. Emilion, Bordeaux, France",Red Wine,97.0,"Blend: 58% Merlot, 42% Cabernet Franc" +Chateau La Gaffeliere (Futures Pre-Sale) 2019,"St. Emilion, Bordeaux, France",Red Wine,97.0,"Blend: 60% Merlot, 40% Cabernet Franc" +Chateau La Mission Haut-Brion (1.5 Liter Futures Pre-Sale) 2018,"Pessac-Leognan, Bordeaux, France",Red Wine,97.0,"Blend: 53.5% Merlot, 42.9% Cabernet Sauvignon and 3.6% Cabernet Franc" +Chateau La Mission Haut-Brion (1.5 Liter Futures Pre-Sale) 2019,"Pessac-Leognan, Bordeaux, France",Red Wine,98.0,"The wine is a beautiful deep purple-red. The nose is intense, with hints of raspberry and blackberry. What is striking as it swirls in the glass is its ripe fruitiness. The vanilla and delicately spicy, woody notes marry perfectly without dominating. The first expression is round, full and ample, leading into a dense and flavorful mid-palate. Blackfruit and licorice notes dominate the taste, followed by a juicy and velvety tannic structure." +Chateau La Mission Haut-Brion (1.5 Liter Magnum) 2005,"Pessac-Leognan, Bordeaux, France",Red Wine,97.0,"This wine possesses great intensity that will delight you with its complexity of red fruits and the signature of its terrior in its empyreumatic notes. On the palate, the wine is spherical and generous without a trace of aggressiveness. It lenghtens on silky tannins, making this so obvious that the taster succumbs to its charm. " +Chateau La Mission Haut-Brion (1.5 Liter Magnum) 2015,"Pessac-Leognan, Bordeaux, France",Red Wine,96.0,"The color is quite deep with garnet-red highlights. The nose proves complex from the very first. The oak shows through, but not excessively so, and is well-integrated. The bouquet features hints of chocolate and liquorice when the wine is swirled in the glass, showing how ripe the grapes were. 2015 La Mission starts out with fresh fruit flavors and a dense tannic structure that caresses the palate. It picks up power as it develops towards a long aftertaste with mocha and chocolate nuances. 2015 is unquestionably one of the greatest vintages at La Mission! " +Chateau La Mission Haut-Brion (1.5 Liter Magnum) 2016,"Pessac-Leognan, Bordeaux, France",Red Wine,96.0,"Chateau La Mission Haut-Brion wine is definitely bewitching. It possesses a great intensity that will delight you with its complexity (a mixture of red fruits) and the signature of its terroir in its empyreumatic notes (Havana cigars, chocolate, roasting, cedar wood and so on). On the palate, the wine is spherical and generous without a trace of aggressiveness. It lengthens on silky tannins, making this wine so obvious that the taster succumbs to its charm." +Chateau La Mission Haut-Brion 1986,"Pessac-Leognan, Bordeaux, France",Red Wine,97.0,"The handsome color has evolved. The tasting is marked by both the great softness at the base as well as notes or aromas of rather heavy wild game. The whole has a beautiful harmony. Its rich aromas, its softness, and its chunkiness make it a particularly rich bottle with an aptitude to age well." +Chateau La Mission Haut-Brion 1989,"Pessac-Leognan, Bordeaux, France",Red Wine,96.0,"This wine has a handsome color, deep and mature, The nose finds that the perfect maturity of the fruit dominates the tasting. One even finds the softness of the wine on the nose. In the mouth, the subtleties of the aromas evolve bit by bit. The ripe tannins make up a taut and fleshy base. Nevertheless all is harmoniously melded together. One notes the scent of cigar, cedar wood, an unusually exotic touch of vanilla, cloves and orange peel, ending with a strong whiff of truffle. All these evolve together and give a sensation of a silky unctuosity. This is a legendary bottle." +Chateau La Mission Haut-Brion 1998,"Pessac-Leognan, Bordeaux, France",Red Wine,96.0,"This wine has a handsome color of deep, fresh, ruby red. The nose is not completely open due to the great structure of its tannins. The equilibrium of the wine is remarkable with mature fruit already evident. Its emerging strength, though only slightly developed, indeed insinuates the richness to come. This is a great bottle in the making. The finale is suave, soft and tannic all at the same time. It is an exceptional bottle for its density. Should drink quite well now though 2040." +Chateau La Mission Haut-Brion 2005,"Pessac-Leognan, Bordeaux, France",Red Wine,97.0,"The color of La Mission Haut-Brion is very dark. One can surmise by its depth that the wine is extremely dense. The nose has great precision. We find there the aromas of red fruit, earth, smoke, and liquorish. With the evidence of this complexity in the mouth one notes the first impression which is the surprising contrast between the concentration of the wine and its smoothness. It possesses an enveloping body, the tannins seeming almost creamy. The wine expands taking a greater dimension on the palate while seeming never ending. The equilibrium of this wine is a great trait of La Mission Haut-Brion 2005 where the intensity of the tannins is counterbalanced by an extraordinary freshness. This is one of the great vintages of Chateau La Mission Haut-Brion." +Chateau La Mission Haut-Brion 2009,"Pessac-Leognan, Bordeaux, France",Red Wine,96.0,"A bewitching wine, from beginning to end of the end of the tasting experience! The color is very deep and the nose is intense, with plenty of character. This rich and utterly delicious wine spreads out beautifully on the palate. The tannin is smooth and sweet. 2009 La Mission Haut-Brion inevitably reminds tasters of one of the estate's finest successes: the 2000 vintage. The concentration, class, and balance between power and freshness are the hallmarks of both 2000 and 2009. However, 2009 has greater conentration, as well as another dimension and even stronger sensations. 2009 Chateau La Mission Haut-Brion is already mythical." +Chateau La Mission Haut-Brion 2010,"Pessac-Leognan, Bordeaux, France",Red Wine,97.0,"The striking, deep-purple color of this wine is reminiscent of a ripe aubergine. It has an intense, complex bouquet, blending hints of oak with blackcurrant, licorice, and chocolate. The nose reveals a seemingly endless range of aromas. On the palate, the breadth and expressivity of this wine is immediately impressive. The tannins are flavorful and its structure is poised, buoyed up by incredible freshness. To take an architectural metaphor, 2010 Chateau La Mission Haut-Brion is reminiscent of the Eiffel Tower. Its structure is immediately perceptible but, although it is obviously a substantial construction, it gives an impression of lightness and elegance. These contrasts make it easier to understand the challenge that faced the architects in both cases: to achieve perfect balance. " +Chateau La Mission Haut-Brion 2015,"Pessac-Leognan, Bordeaux, France",Red Wine,96.0,"The color is quite deep with garnet-red highlights. The nose proves complex from the very first. The oak shows through, but not excessively so, and is well-integrated. The bouquet features hints of chocolate and liquorice when the wine is swirled in the glass, showing how ripe the grapes were. 2015 La Mission starts out with fresh fruit flavors and a dense tannic structure that caresses the palate. It picks up power as it develops towards a long aftertaste with mocha and chocolate nuances. 2015 is unquestionably one of the greatest vintages at La Mission! " +Chateau La Mission Haut-Brion 2016,"Pessac-Leognan, Bordeaux, France",Red Wine,96.0,"Chateau La Mission Haut-Brion wine is definitely bewitching. It possesses a great intensity that will delight you with its complexity (a mixture of red fruits) and the signature of its terroir in its empyreumatic notes (Havana cigars, chocolate, roasting, cedar wood and so on). On the palate, the wine is spherical and generous without a trace of aggressiveness. It lengthens on silky tannins, making this wine so obvious that the" +Chateau La Mission Haut-Brion (Futures Pre-Sale) 2018,"Pessac-Leognan, Bordeaux, France",Red Wine,97.0,"Blend: 53.5% Merlot, 42.9% Cabernet Sauvignon and 3.6% Cabernet Franc" +Chateau La Mission Haut-Brion (Futures Pre-Sale) 2019,"Pessac-Leognan, Bordeaux, France",Red Wine,98.0,"The wine is a beautiful deep purple-red.The nose is intense, with hints of raspberry and blackberry.What is striking as it swirls in the glass is its ripe fruitiness.The vanilla and delicately spicy, woody notes marry perfectlywithout dominating. The first expression is round, full andample, leading into a dense and flavorful mid-palate. Blackfruit and licorice notes dominate the taste, followed by ajuicy and velvety tannic structure." +Chateau La Mondotte 1998,"St. Emilion, Bordeaux, France",Red Wine,96.0,"La Mondotte is powerful and has remarkable aging potential. It is an extremely concentrated, well-structured wine with a long aftertaste, very deep color, and superb balance. It is profoundly marked by its soil." +Chateau La Mondotte (Futures Pre-Sale) 2018,"St. Emilion, Bordeaux, France",Red Wine,99.0,"The quality of La Mondotte's clay and the age of the vines (60 years on average) result in a wine that is profoundly marked by its terroir. It is silky, powerful, incomparably elegant, and has great minerality." +Chateau La Mondotte (Futures Pre-Sale) 2019,"St. Emilion, Bordeaux, France",Red Wine,99.0,"Blend: 79% Merlot, 21% Cabernet Franc" +Chateau Lafaurie-Peyraguey Sauternes 2003,"Sauternes, Bordeaux, France",Collectible,97.0, +Chateau Lafite Rothschild (1.5 Liter Futures Pre-Sale) 2018,"Pauillac, Bordeaux, France",Red Wine,98.0,"Blend: 91% Cabernet Sauvignon, 8.5% Merlot and 0.5% Petit Verdot" +Chateau Lafite Rothschild (1.5 Liter Futures Pre-Sale) 2019,"Pauillac, Bordeaux, France",Red Wine,99.0,"The first tastings, after running the wines off skins, leftus amazed : the wines are pure, with a very preciseripe style" +Chateau Lafite Rothschild (1.5 Liter Magnum) 1986,"Pauillac, Bordeaux, France",Red Wine,96.0,Ex-Chateau Release +Chateau Lafite Rothschild (1.5 Liter Magnum) 2003,"Pauillac, Bordeaux, France",Red Wine,96.0,"""A modern day version of the 1959 Lafite, the 2003 Lafite Rothschild was bottled in mid-May, 2005 after achieving 12.9% natural alcohol – hardly an astonishing figure given the vintage's weather conditions. A combination of 86% Cabernet Sauvignon, 9% Merlot, 3% Cabernet Franc, and 2% Petit Verdot, it represents a ripe version of the essence of Lafite-Rothschild. Dense purple-colored, with classic notes of graphite intertwined with melted licorice, creme de cassis, smoke, and flowers, it reveals extraordinary richness, opulence, power, purity, intensity, and viscosity. Whether this wine will close down or not is questionable as it is somewhat atypical given its sweetness and softness. Analytically, there are extremely high tannins, which I suspect will assert themselves in the future. Production in 2003 was less than half of normal. Anticipated maturity: 2010-2050.""" +Chateau Lafite Rothschild (1.5 Liter Magnum) 2005,"Pauillac, Bordeaux, France",Red Wine,98.0,"2005 was the fourth consecutive year to have a deficit in rainfall, but the drought began very early, at the end of May, which allowed the vine to adapt itself by reducing its leaves. The very hot weather in June and July gave way to progressively cooler weather in August and the cool nights allowed good acidity levels to be maintained, resulting in slow steady ripening. A year of atypical weather but in the end ideal for the production of healthy, very ripe grapes with wonderful freshness." +Chateau Lafite Rothschild (1.5 Liter Magnum) 2009,"Pauillac, Bordeaux, France",Red Wine,97.0,"A deep bouquet of dark fruit and licorice. The palate is full-bodied and already expressive, but then becomes tighter, expressing power and exuberance. The youth of this Lafite does not hide its energy, but the distinctive elegance and complexity are already there. " +Chateau Lafite Rothschild (1.5 Liter Magnum) 2010,"Pauillac, Bordeaux, France",Red Wine,97.0,"Fine, concentrated color. Solid and dense on the palate, presenting good structure and well-defined tannins. A long, lingering palate with notes of violets on the finish. The 2010 is an elegant wine with excellent balance." +Chateau Lafite Rothschild (1.5 Liter Magnum) 2015,"Pauillac, Bordeaux, France",Red Wine,96.0,"Very dark color, with purple glints, indicating that the wine is still very much in its youth. The nose is still quite closed, which is to be expected after only a few months in the bottle. But it already presents good depth and plenty of complexity. Notes of fresh strawberries and tobacco, in which the wood has become perfectly integrated. The attack is simultaneously supple and very powerful." +Chateau Lafite Rothschild (1.5 Liter Magnum) 2016,"Pauillac, Bordeaux, France",Red Wine,98.0,Blend: 92% Cabernet Sauvignon and 8% Merlot +Chateau Lafite Rothschild 150th Anniversary Edition (1.5 Liter Futures Pre-Sale) 2018,"Pauillac, Bordeaux, France",Red Wine,98.0,"Lafite has released 300 limited edition cases containing a magnum of the 2018 vintage and the book, “The Almanac,” published in December which looks back at 150 vintages of Lafite, and presents each one with climatic and historic notes and archival material from each specific year. “We built this book to tell the story of Lafite since the Rothschild family has owned it, but also to share more stories about the life of a vintage,” the chairwoman says. “We hope readers will come out of reading it with a better understanding of how a wine grows, from the soil to the vine to the bottle.”" +Chateau Lafite Rothschild 2000,"Pauillac, Bordeaux, France",Red Wine,98.0,"A relatively early growing season with above average temperatures and normal rainfall. Precipitation at the end of May and early June made the vines subject to mildew, but our technicians were diligent in protecting the grapevines. The end of summer was beautiful, and the dry hot weeks in August and September gave very ripe grapes. " +Chateau Lafite Rothschild 2003,"Pauillac, Bordeaux, France",Red Wine,96.0,"Deep color with very ripe red fruit on the nose. On the palate, the vintage proves to be particularly rich, intense and smooth with very rounded tannins. Long persistent finish." +Chateau Lafite Rothschild 2009,"Pauillac, Bordeaux, France",Red Wine,97.0,"A deep bouquet of dark fruit and licorice. The palate is full-bodied and already expressive, but then becomes tighter, expressing power and exuberance. The youth of this Lafite does not hide its energy, but the distinctive elegance and complexity are already there. " +Chateau Lafite Rothschild 2010,"Pauillac, Bordeaux, France",Red Wine,97.0,"Fine, concentrated color. Solid and dense on the palate, presenting good structure and well-defined tannins. A long, lingering palate with notes of violets on the finish. The 2010 is an elegant wine with excellent balance." +Chateau Lafite Rothschild 2015,"Pauillac, Bordeaux, France",Red Wine,96.0,"Very dark color, with purple glints, indicating that the wine is still very much in its youth. The nose is still quite closed, which is to be expected after only a few months in the bottle. But it already presents good depth and plenty of complexity. Notes of fresh strawberries and tobacco, in which the wood has become perfectly integrated. The attack is simultaneously supple and very powerful." +Chateau Lafite Rothschild 2016,"Pauillac, Bordeaux, France",Red Wine,98.0,"Blend: 92% Cabernet Sauvignon, 8% Merlot" +Chateau Lafite Rothschild (3 Liter Bottle) 2003,"Pauillac, Bordeaux, France",Red Wine,96.0,Ex-Chateau Release +Chateau Lafite Rothschild (3 Liter Bottle) 2009,"Pauillac, Bordeaux, France",Red Wine,97.0,Ex-Chateau Release +Chateau Lafite Rothschild (3 Liter Bottle) 2010,"Pauillac, Bordeaux, France",Red Wine,97.0,Ex-Chateau Release +Chateau Lafite Rothschild (6 Liter Bottle) 2000,"Pauillac, Bordeaux, France",Red Wine,97.0,Ex-Chateau Release +Chateau Lafite Rothschild (6-Pack OWC Futures Pre-Sale) 2018,"Pauillac, Bordeaux, France",Red Wine,98.0,"Blend: 91% Cabernet Sauvignon, 8.5% Merlot and 0.5% Petit Verdot" +Chateau Lafite Rothschild (6-Pack OWC Futures Pre-Sale) 2019,"Pauillac, Bordeaux, France",Red Wine,99.0,"The first tastings, after running the wines off skins, leftus amazed : the wines are pure, with a very preciseripe style" +Chateau Lafite Rothschild (Futures Pre-Sale) 2018,"Pauillac, Bordeaux, France",Red Wine,98.0,"Blend: 91% Cabernet Sauvignon, 8.5% Merlot and 0.5% Petit Verdot" +Chateau Lafite Rothschild (Futures Pre-Sale) 2019,"Pauillac, Bordeaux, France",Red Wine,99.0,"The first tastings, after running the wines off skins, leftus amazed : the wines are pure, with a very preciseripe style" +Chateau Lafite Rothschild (Slightly scuffed label) 2000,"Pauillac, Bordeaux, France",Red Wine,98.0,"It was only during the first tastings, during running off, that we discovered the degree of the phenomenon: the finesse, the suppleness, and the complexity of the juices were already impressive. Tastings during the transfer of early wines revealed delicious aromas, with a powerful palate. The early wine had a tannic body and a promising finish. Subtle aromas of currants, leather, tobacco and cedar. Classic cigar box nose, with fruit. Full-bodied, with an amazing texture of silky, ripe tannins. This wine completely coats your palate, but caresses it at the same time." +Chateau Lafite Rothschild (slightly stained label) 2005,"Pauillac, Bordeaux, France",Red Wine,98.0,"2005 was the fourth consecutive year to have a deficit in rainfall, but the drought began very early, at the end of May, which allowed the vine to adapt itself by reducing its leaves. The very hot weather in June and July gave way to progressively cooler weather in August and the cool nights allowed good acidity levels to be maintained, resulting in slow steady ripening. A year of atypical weather but in the end ideal for the production of healthy, very ripe grapes with wonderful freshness." +Chateau Lafleur 2010,"Pomerol, Bordeaux, France",Red Wine,97.0,"Blend: 50% Merlot, 50% Cabernet Franc" +Chateau Larcis-Ducasse (Futures Pre-Sale) 2019,"St. Emilion, Bordeaux, France",Red Wine,96.0,*Please note that the price on Wine.com of this 2019 Bordeaux Future +Chateau Laroque (Futures Pre-Sale) 2019,"St. Emilion, Bordeaux, France",Red Wine,97.0,"Superbly located on one of the highest points of Saint-Emilion, Laroque’s limestone terroirs have once again shone through brilliantly in this 2019. They have produced wines that are bright, floral and spicy, with fresh salinity and a noble texture, which are hallmark traits of this estate." +Chateau Latour (1.5 Liter Magnum) 2000,"Pauillac, Bordeaux, France",Red Wine,97.0,"Impressive deep, dark color. The wine has powerful, balanced structure. The dense structures and the unique qualities of the tannins may be superior to those of the '96 and '90 vintage. The balance of the wine combines class, rigor, complexity and great finesse in the fruit." +Chateau Latour 1986,"Pauillac, Bordeaux, France",Red Wine,96.0,"Remarkably concentrated with ""tight"" tannins, characteristic of Latour in great years. Rich, fruity, spicy, long on the palate, with mint and mineral aromas. " +Chateau Latour 2000,"Pauillac, Bordeaux, France",Red Wine,97.0,"Impressive deep, dark color. The wine has powerful, balanced structure. The dense structures and the unique qualities of the tannins may be superior to those of the '96 and '90 vintage. The balance of the wine combines class, rigor, complexity and great finesse in the fruit." +Chateau Latour 2003,"Pauillac, Bordeaux, France",Red Wine,97.0,"Blend: 75% Cabernet Sauvignon, 20% Merlot, 4% Cabernet Franc, 1% Petit Verdot" +Chateau Latour 2005,"Pauillac, Bordeaux, France",Red Wine,98.0,Ex-Chateau Release +Chateau Latour 2009,"Pauillac, Bordeaux, France",Red Wine,99.0,"Great concentration and a previously unseen quantity of tannins characterized the wines, which possessed extraordinary aromatic intensity, freshness and precision. Rich, ripe and mineral, with a very long, lingering finish. An exceptional year which will improve for many years." +Chateau Latour (scuffed label) 2005,"Pauillac, Bordeaux, France",Red Wine,98.0,"The 2005 vintage demonstrates the superiority of the Cabernet Sauvignon which alone brings body, power, fruit and structure. A wine of great complexity, Chateau Latour notes the dominance of very ripe fruits and its enormous power, filled out with sleek, silky tannins." +Chateau Latour (stained label) 1996,"Pauillac, Bordeaux, France",Red Wine,96.0,"A little austere at first compared to the previous vintage, the concentration of this wine then takes on a delightfully rich aspect: it combines a surprisingly classic, balanced, solid tannic structure that has perfect, plump tannins thanks to a superb maturity, with very pure fruit." +Chateau Leoville Barton (1.5 Liter Futures Pre-Sale) 2019,"St-Julien, Bordeaux, France",Red Wine,96.0,"Black cherry nose, blackberry, touch of mocha. Powerful, fleshy, pure wine. Silky tannins and excellent length." +Chateau Leoville Barton (6-Pack OWC Futures Pre-Sale) 2019,"St-Julien, Bordeaux, France",Red Wine,96.0,"Black cherry nose, blackberry, touch of mocha. Powerful, fleshy, pure wine. Silky tannins and excellent length." +Chateau Leoville Barton (Futures Pre-Sale) 2019,"St-Julien, Bordeaux, France",Red Wine,96.0,"Black cherry nose, blackberry, touch of mocha. Powerful, fleshy, pure wine. Silky tannins and excellent length." +Chateau Leoville Las Cases (1.5 Liter Futures Pre-Sale) 2019,"St-Julien, Bordeaux, France",Red Wine,99.0,"The exceptional qualities of the terroir of the Grand Clos made it possible to erase the climatic excesses. The end of winter brought mild temperatures, followed by a humid and cool spring. The summer conditions were dry and hot, but still within the ten-year average. The vines benefited from a good hydric stress relayed by good thermal amplitudes before the harvest, for an optimal maturation and a maintained acidity. The Leoville Las Cases offers abrilliant fruit with intense aromas, freshness, very tasty and long tannins, all for an exceptional ageing capacity." +Chateau Leoville Las Cases (1.5 Liter Magnum) 2005,"St-Julien, Bordeaux, France",Red Wine,97.0,"The fruit is harvested by hand. The fermentation vessels include a fascinating mix of wooden, cement and stainless steel vats. When finished the wine is pumped to the barrel cellar. Here it is transferred into oak barrique, between 50% and 100% new for the grand vin, Chateau Léoville-Las-Cases, depending on the vintage." +Chateau Leoville Las Cases (1.5 Liter Magnum) 2016,"St-Julien, Bordeaux, France",Red Wine,97.0,"Blend: 75% Cabernet Sauvignon, 14% Merlot and 11% Cabernet Franc" +Chateau Leoville Las Cases (1.5 Liter Magnum) 2018,"St-Julien, Bordeaux, France",Red Wine,98.0,"The Grand Vin is the product of exceptional terroirs from the former Léoville estate. These terroirs are located mainly in the Clos Léoville Las Cases, which you pass as you leave Saint- Julien village for Pauillac. They extend over nearly 60ha producing Cabernet Sauvignons and Cabernet Francs with a complex, polished expression and characteristics which are totally unique to the Grand Vin of Léoville du Marquis de Las Cases and have been widely recognized for years. " +Chateau Leoville Las Cases 2000,"St-Julien, Bordeaux, France",Red Wine,98.0,"Chateau Leoville Las Cases is one of the largest and oldest classified growths in the Medoc region of France. The fruit is harvested by hand. The fermentation vessels include a fascinating mix of wooden, cement and stainless steel vats. When finished the wine is pumped to the barrel cellar. Here it is transferred into oak barrique, between 50% and 100% new for the grand vin, depending on the vintage. " +Chateau Leoville Las Cases 2005,"St-Julien, Bordeaux, France",Red Wine,97.0,"The fruit is harvested by hand. The fermentation vessels include a fascinating mix of wooden, cement and stainless steel vats. When finished the wine is pumped to the barrel cellar. Here it is transferred into oak barrique, between 50% and 100% new for the grand vin, Chateau Léoville-Las-Cases, depending on the vintage. " +Chateau Leoville Las Cases 2009,"St-Julien, Bordeaux, France",Red Wine,98.0,"Chateau Leoville Las Cases is one of the largest and oldest classified growths in the Medoc region of France. The fruit is harvested by hand. The fermentation vessels include a fascinating mix of wooden, cement and stainless steel vats. When finished the wine is pumped to the barrel cellar. Here it is transferred into oak barrique, between 50% and 100% new for the grand vin, depending on the vintage. " +Chateau Leoville Las Cases 2010,"St-Julien, Bordeaux, France",Red Wine,97.0,"Chateau Leoville Las Cases is one of the largest and oldest classified growths in the Medoc region of France. The fruit is harvested by hand. The fermentation vessels include a fascinating mix of wooden, cement and stainless steel vats. When finished the wine is pumped to the barrel cellar. Here it is transferred into oak barrique, between 50% and 100% new for the grand vin, depending on the vintage. " +Chateau Leoville Las Cases 2015,"St-Julien, Bordeaux, France",Red Wine,97.0,"The Grand Vin is the product of exceptional terroirs from the former Léoville estate. These terroirs are located mainly in the Clos Léoville Las Cases, which you pass as you leave Saint- Julien village for Pauillac. They extend over nearly 60ha producing Cabernet Sauvignons and Cabernet Francs with a complex, polished expression and characteristics which are totally unique to the Grand Vin of Léoville du Marquis de Las Cases and have been widely recognized for years." +Chateau Leoville Las Cases 2016,"St-Julien, Bordeaux, France",Red Wine,97.0,"Blend: 75% Cabernet Sauvignon, 14% Merlot and 11% Cabernet Franc" +Chateau Leoville Las Cases (6-Pack OWC Futures Pre-Sale) 2019,"St-Julien, Bordeaux, France",Red Wine,99.0,"The exceptional qualities of the terroir of the Grand Clos made it possible to erase the climatic excesses. The end of winter brought mild temperatures, followed by a humid and cool spring. The summer conditions were dry and hot, but still within the ten-year average. The vines benefited from a good hydric stress relayed by good thermal amplitudes before the harvest, for an optimal maturation and a maintained acidity. The Leoville Las Cases offers abrilliant fruit with intense aromas, freshness, very tasty and long tannins, all for an exceptional ageing capacity." +Chateau Leoville Las Cases (Futures Pre-Sale) 2019,"St-Julien, Bordeaux, France",Red Wine,99.0,"The exceptional qualities of the terroir of the Grand Clos made it possible to erase the climatic excesses. The end of winter brought mild temperatures, followed by a humid and cool spring. The summer conditions were dry and hot, but still within the ten-year average. The vines benefited from a good hydric stress relayed by good thermal amplitudes before the harvest, for an optimal maturation and a maintained acidity. The Leoville Las Cases offers abrilliant fruit with intense aromas, freshness, very tasty and long tannins, all for an exceptional ageing capacity." +Chateau Leoville Las Cases (stained labels) 2010,"St-Julien, Bordeaux, France",Red Wine,96.0,"Chateau Leoville Las Cases is one of the largest and oldest classified growths in the Medoc region of France. The fruit is harvested by hand. The fermentation vessels include a fascinating mix of wooden, cement and stainless steel vats. When finished the wine is pumped to the barrel cellar. Here it is transferred into oak barrique, between 50% and 100% new for the grand vin, depending on the vintage. " +Chateau L'Evangile 2000,"Pomerol, Bordeaux, France",Red Wine,96.0,"We rounded out the century with a growing year just as early as in 1999. After a rainy spring, the summer was relatively overcast, but had produced rain. During the month of August, dry weather and a heat wave led us to begin the harvest of the first Merlots on 15 September. The Cabernet Francs were not harvested until the 27 September, so that they could fully mature. This patient wait for maturity paid off in the form of a silky and supple fine wine. It is obsidian in color, with a deep bouquet and a silky palate. It has a fine and velvety texture. This great vintage will surely age for a long time. " +Chateau L'Evangile 2004,"Pomerol, Bordeaux, France",Red Wine,96.0,A blend of 70% Merlot and 30% Cabernet Sauvignon. +Chateau L'Evangile 2009,"Pomerol, Bordeaux, France",Red Wine,97.0,"The fine wine from Château L'Evangile is described in an old edition of ""Grand vins de Bordeaux"" (Dussault Press) as ""...full and elegant wines, with an unmistakable finesse and bouquet."" For many fans, the subtle and elegant quality is indeed the mark of this wine. " +Chateau L'Evangile (Futures Pre-Sale) 2019,"Pomerol, Bordeaux, France",Red Wine,98.0,"Blend: 83.5% Merlot, 16% Cabernet Franc, 0.5% Cabernet Sauvignon" +Chateau Lynch-Bages (1.5 Liter Futures Pre-Sale) 2019,"Pauillac, Bordeaux, France",Red Wine,97.0,"The Chateau Lynch Bages 2019 is in line with the previous wines of the property with a blend dominated by Cabernet Sauvignon. This great Bordeaux wine offers a characteristic fruity nose with fresh and spicy notes, as well as fine woody notes. The smooth and balanced palate is supported by a beautifully dense and powerful tannic structure, providing plenty of precision and fruit." +Chateau Lynch-Bages 6-Pack OWC (Futures Pre-Sale) 2019,"Pauillac, Bordeaux, France",Red Wine,97.0,"The Chateau Lynch Bages 2019 is in line with the previous wines of the property with a blend dominated by Cabernet Sauvignon. This great Bordeaux wine offers a characteristic fruity nose with fresh and spicy notes, as well as fine woody notes. The smooth and balanced palate is supported by a beautifully dense and powerful tannic structure, providing plenty of precision and fruit." +Chateau Lynch-Bages (Futures Pre-Sale) 2019,"Pauillac, Bordeaux, France",Red Wine,97.0,"The Chateau Lynch Bages 2019 is in line with the previous wines of the property with a blend dominated by Cabernet Sauvignon. This great Bordeaux wine offers a characteristic fruity nose with fresh and spicy notes, as well as fine woody notes. The smooth and balanced palate is supported by a beautifully dense and powerful tannic structure, providing plenty of precision and fruit." +Chateau Malescot St. Exupery (Futures Pre-Sale) 2019,"Margaux, Bordeaux, France",Red Wine,96.0,"A delicate Malescot which makes it a gourmet wine despite a tight tannic structure. We will have to wait for this vintage to fully express the freshness of its cabernets supportedby a body full of merlots. As for the Cabernet Franc and Petit Verdot, they are like salt and pepper which densify and reveal this wine." +Chateau Margaux (1.5 Liter Magnum) 2015,"Margaux, Bordeaux, France",Red Wine,99.0,"2015 was, literally, an historic year at Château Margaux. We celebrated the bicentenary of the Estate’s buildings dating from 1815, and the inauguration of the new facilities, designed or reorganised, by Norman Foster. It is easy to imagine how much we dreamed that 2015 would be a great vintage! Without doubt, some of the result is owed to decisions made at the time of blending; only 35% of the harvest went into the first wine, which was a record of severity for a vintage of this standard. As usual, it was the Cabernet Sauvignon in first place with 87% of the blend; in addition to its concentration and finesse, this year it has an unusual vigour and strength. The Merlot has nothing to be ashamed of, at least in the great plots; it makes up 8% of the first wine. Cabernet Franc (3%) and Petit Verdot (2%) also find their place in this elitist blend, which confirms that, enable all grape varieties to express their own propensity. How can we compare 2015 to its predecessors? It is a thankless task, and a little futile, particularly for the great vintages. There are, of course, similarities, affinities, and also some differences where we do not expect to find them… But we can evoke a combination of the strength of 2005, the flesh of 2009, the subtlety of 2010, and the inimitable charm of Château Margaux. (April 2016)" +Chateau Margaux 1983,"Margaux, Bordeaux, France",Red Wine,96.0,"A very classic Margaux with an unquestionably elegant, complex but still rather closed nose. The tannins are full-bodied and ripe on the palate, with no astringency or hardness." +Chateau Margaux 1989,"Margaux, Bordeaux, France",Red Wine,97.0,"The evolution of the wine has confirmed the early expectations for this fabulous vintage. Richness, complexity and opulence could be the key words to describe this exceptional wine, rather close in style to the 1982; its evolution will be fascinating to follow." +Chateau Margaux 1990,"Margaux, Bordeaux, France",Red Wine,96.0,"Third extraordinary vintage in a row, this wine is a monument of charm, finesse, and elegance. All the organoleptic components on the nose, as well as in the mouth, already seem blended; yet this perfect and early harmony masks as much power as that of the 1989." +Chateau Margaux 2000,"Margaux, Bordeaux, France",Red Wine,98.0,"We were unaware at that time that we were harvesting one of the greatest vintages of the late 20th century. The grapes had rarely, perhaps never, been as concentrated, particularly the Cabernets. In certain cases we surpassed the already historic levels of the 1986 and 1995 vintages, with an elegance and softness on the palate, reminiscent also of the 1990 and 1996 vintages. It seemed in fact that 2000 was setting a new benchmark in quality, never before attained, at least in terms of style. Throughout the barrel ageing time, these first impressions were gradually confirmed. The wine has now acquired a slightly tighter texture and at the same time keeps such a soft and especially long finish that it seems to go on forever… The bottling took place in November 2002, after over 2 years of barrel ageing. Such a long ageing is unusual but not as rare as one might think: most of the greatest vintages are aged for that length of time. (May 2010)" +Chateau Margaux 2009,"Margaux, Bordeaux, France",Red Wine,97.0,"In 2009, mother nature surpassed herself. She allowed the greatest terroirs, whatever their grape variety, to bring their fruit to exceptional ripeness, providing a wine of wonderful concentration, finesse, balance and freshness. The Cabernet has no equivalent other than 2005, but it is more tender. The only two batches of Merlot that were kept have no equivalent at all. As for the Cabernet Franc and the Petit Verdot, they performed at their highest levels. " +Chateau Margaux 2010,"Margaux, Bordeaux, France",Red Wine,98.0,"Unbelievable as it may sound, Château Margaux 2010 is at least as great a vintage as 2009. Once again, the Cabernet Sauvignon made the most of this very dry and cool year. With as much as 90% in the blend, the Cabernet makes the wine, providing it with exceptional aromatic finesse, restrained power and subtle freshness. Château Margaux 2010 is sheer magic – think classic, with a twist. Classic indeed, thanks to its purity, finesse and soft and refreshing finish. Add to these qualities astonishing aromatic complexity and outstanding power and the result is an exceptional year. Technology and stringent selection make it a “modern” wine, while its magnitude and charm ensure a timeless Château Margaux vintage. This 2010 is beyond the realms of time and fickle fashions. " +Chateau Margaux 2015,"Margaux, Bordeaux, France",Red Wine,99.0,"2015 was, literally, an historic year at Château Margaux. We celebrated the bicentenary of the Estate’s buildings dating from 1815, and the inauguration of the new facilities, designed or reorganised, by Norman Foster. It is easy to imagine how much we dreamed that 2015 would be a great vintage! Without doubt, some of the result is owed to decisions made at the time of blending; only 35% of the harvest went into the first wine, which was a record of severity for a vintage of this standard. As usual, it was the Cabernet Sauvignon in first place with 87% of the blend; in addition to its concentration and finesse, this year it has an unusual vigour and strength. The Merlot has nothing to be ashamed of, at least in the great plots; it makes up 8% of the first wine. Cabernet Franc (3%) and Petit Verdot (2%) also find their place in this elitist blend, which confirms that, enable all grape varieties to express their own propensity. How can we compare 2015 to its predecessors? It is a thankless task, and a little futile, particularly for the great vintages. There are, of course, similarities, affinities, and also some differences where we do not expect to find them… But we can evoke a combination of the strength of 2005, the flesh of 2009, the subtlety of 2010, and the inimitable charm of Château Margaux. (April 2016)" +Chateau Margaux 2016,"Margaux, Bordeaux, France",Red Wine,97.0,"Blend: 94% Cabernet Sauvignon, 3% Cabernet Franc, 2% Merlot, 1% Petit Verdot " +Chateau Margaux 6-Pack OWC (Futures Pre-Sale) 2018,"Margaux, Bordeaux, France",Red Wine,99.0,"Chateau Margaux 2018 is remarkably concentrated. A small grape size and relatively low yields largely explain the exceptionally high tannin indices. The wine's power is not, however, overwhelming and helps to considerably lengthen the aromas and structure of the finish. Fairly early in the wine-making process, we understood this tannic potential and moderated our extraction programs including for our Merlot plots, which are usually less dense than our fine Cabernet Sauvignon wines. " +Chateau Margaux (Futures Pre-Sale) 2018,"Margaux, Bordeaux, France",Red Wine,99.0,"Chateau Margaux 2018 is remarkably concentrated. A small grape size and relatively low yields largely explain the exceptionally high tannin indices. The wine's power is not, however, overwhelming and helps to considerably lengthen the aromas and structure of the finish. Fairly early in the wine-making process, we understood this tannic potential and moderated our extraction programs including for our Merlot plots, which are usually less dense than our fine Cabernet Sauvignon wines. " +Chateau Margaux (half-bottle) 1996,"Margaux, Bordeaux, France",Red Wine,99.0,"An unusual end of summer - distinctly drier and cooler than average - has given birth to a wine whose classicism and purity already stand out. It is indeed very rare for the Cabernet Sauvignon to reach such perfection, such balance. Even rarer still is to see so young a Château Margaux with such astonishing richness, intense fruit and harmony of form. A dream." +Chateau Montelena Estate Cabernet Sauvignon 1987,"Calistoga, Napa Valley, California",Red Wine,98.0,"The very low yields from our estate Cabernet vineyard make this wine the essence of Chateau Montelena. The unique characteristics - the ""terroir"" ­of Montelena Cabernet are concentrated and extraor­dinarily preeminent in this wine. Beginning with the deeply-tinted color, the nose follows with waves of constantly changing aroma: dried fruits, roses and vio­lets, the rocky vineyard soil, cassis and leather, and the oak and cellar aromas particular to Montelena Cabernet. " +Chateau Montrose (1.5 Liter Futures Pre-Sale) 2018,"St. Estephe, Bordeaux, France",Red Wine,98.0,"2018 marks an important step in the conversion of our vineyard to organic viticulture. The weather conditions resulted in strong pressure from parasites, requiring extreme vigilance. Vineyard management was complex, therefore, but the direction of our environmental approach was firmly maintained. The fine weather and heat at the end of summer, comparable to 2009, made the vintage, which expressed incredible potential in the cellar. The first tastings show the signs of a very great vintage, a subtle combination of the fruity aromatic profile of the 2009 and the precision of the 2016. " +Chateau Montrose (1.5 Liter Magnum) 2010,"St. Estephe, Bordeaux, France",Red Wine,96.0,"Long, ample and homogeneous wine. The after taste is neat, and the mid-palate complex and balanced. The soft tannins are neat and straight on a lingering finish. Splendid wine. Classic of Bordeaux, elegant and noble. " +Chateau Montrose (1.5 Liter Magnum) 2016,"St. Estephe, Bordeaux, France",Red Wine,96.0,"Blend: 68% Cabernet Sauvignon, 25% Merlot, 7% Cabernet Franc" +Chateau Montrose 1982,"St. Estephe, Bordeaux, France",Red Wine,96.0,"Dense color with brick hues. The rich nose displays scents of tobacco, leather, cedar, redcurrant, and cherry. The palate delivers notes of cocoa, mocha, ripened strawberry, and blackberry. This is a harmonious, fine, and elegant wine with a neat attack and beautiful fullness. It has a splendid structure, alsong with a long and round finish. The tannins are neat and defined." +Chateau Montrose 1989,"St. Estephe, Bordeaux, France",Red Wine,96.0,"This year proved to be particularly hot, sunny and dry, an ideal condition for bud burst, blossoming, ""veraison"", ripening, and great vintage. This exceptional year gave a splendid wine. " +Chateau Montrose 2009,"St. Estephe, Bordeaux, France",Red Wine,96.0,"Deep and dense, dark color with dark ruby tints. The nose is complex with morello, core of cherry and blackberry. It delivers notes of citron and spices (saffron). Aromas of redcurrant, cassis, morello, cocoa and liquorice develop on the palate. Supple and long-lasting finish on neat, coated and very precise tannins. Complex, balanced and harmonious wine. The tasting reveals very homogeneous, soft and silky. Incredibly long finish. " +Chateau Montrose 2010,"St. Estephe, Bordeaux, France",Red Wine,96.0,"The soft tannins are neat and straight on a lingering finish. Splendid wine. Classic of Bordeaux, elegant and noble. " +Chateau Montrose 2016,"St. Estephe, Bordeaux, France",Red Wine,96.0,"Blend: 68% Cabernet Sauvignon, 25% Merlot, 7% Cabernet Franc" +Chateau Montrose (6-Pack OWC Futures Pre-Sale) 2018,"St. Estephe, Bordeaux, France",Red Wine,98.0,"2018 marks an important step in the conversion of our vineyard to organic viticulture. The weather conditions resulted in strong pressure from parasites, requiring extreme vigilance. Vineyard management was complex, therefore, but the direction of our environmental approach was firmly maintained. The fine weather and heat at the end of summer, comparable to 2009, made the vintage, which expressed incredible potential in the cellar. The first tastings show the signs of a very great vintage, a subtle combination of the fruity aromatic profile of the 2009 and the precision of the 2016. " +Chateau Montrose (Futures Pre-Sale) 2018,"St. Estephe, Bordeaux, France",Red Wine,98.0,"2018 marks an important step in the conversion of our vineyard to organic viticulture. The weather conditions resulted in strong pressure from parasites, requiring extreme vigilance. Vineyard management was complex, therefore, but the direction of our environmental approach was firmly maintained. The fine weather and heat at the end of summer, comparable to 2009, made the vintage, which expressed incredible potential in the cellar. The first tastings show the signs of a very great vintage, a subtle combination of the fruity aromatic profile of the 2009 and the precision of the 2016. " +Chateau Mouton Rothschild (1.5 Liter Magnum) 1982,"Pauillac, Bordeaux, France",Red Wine,98.0,"Luscious black currant flavored Cabernet fruit makes Mouton beguilingly easy to drink. Rich Complex flavors, powerful ripe tannins and an extremely long finish are all hallmarks of this wine. " +Chateau Mouton Rothschild (1.5 Liter Futures Pre-Sale) 2019,"Pauillac, Bordeaux, France",Red Wine,99.0,"The wine is an intense garnet red with purplish hue. Fresh, highly expressive and precise on the nose, it reveals blackberry, black cherry and licorice aromas with a slightly mineral cast. It is smooth and opulent on the palate, with an attractive sweetness, enfolding superbly patrician, rounded and powerful tannins. Beautifully rich overall, it culminates in a stylish, succulent and very harmonious finish." +Chateau Mouton Rothschild (1.5 Liter Magnum) 2015,"Pauillac, Bordeaux, France",Red Wine,96.0,The grapes for this vintage were magnificent and fermentation took place quickly. The wines immediately showed plenty of color and a complete array of very intense aromas ranging from red and black fruit to spice and incense. +Chateau Mouton Rothschild 1986,"Pauillac, Bordeaux, France",Red Wine,99.0,"Luscious black currant flavored Cabernet fruit makes Mouton beguilingly easy to drink. Rich Complex flavors, powerful ripe tannins and an extremely long finish are all hallmarks of this wine. " +Chateau Mouton Rothschild 1996,"Pauillac, Bordeaux, France",Red Wine,96.0,"""This estate's staff believes that the 1996 Mouton-Rothschild is very complex. I agree that among the first-growths, this wine is showing surprising forwardness and complexity in its aromatics. It possesses an exuberant, flamboyant bouquet of roasted coffee, cassis, smoky oak, and soy sauce. The impressive 1996 Mouton-Rothschild offers impressive aromas of black currants, framboise, coffee, and new saddle leather. This full-bodied, ripe, rich, concentrated, superbly balanced wine is paradoxical in the sense that the aromatics suggest a far more evolved wine than the flavors reveal. Anticipated maturity: 2007-2030. By the way, the 1996 blend consists of 72% Cabernet Sauvignon, 20% Merlot, and 8% Cabernet Franc.""" +Chateau Mouton Rothschild 2009,"Pauillac, Bordeaux, France",Red Wine,96.0,"The wine has a very deep, almost black color. The stylish and complex nose displays aromas of bilberry, blackcurrant and blond tobacco that mingle with subtle cedarwood and spice notes. The same refinement and density are to be found on the palate with patrician, well-rounded tannins, revealing remarkable structure and balance right through to the long and opulent finish. A great success for a Mouton Rothschild that will undoubtedly get the utmost out of the exceptional qualities for which the 2009 vintage has already been hailed." +Chateau Mouton Rothschild 2010,"Pauillac, Bordeaux, France",Red Wine,98.0,"The wine is a dark and intense red with a blueish tint. With Cabernet Sauvignon predominant, it displays a complex range of aromas. From lightly toasted vanilla notes, the nose opens with airing to reveal fruit aromas, especially blackcurrant and black cherry. Powerful and well-integrated tannins reveal exceptional depth and roundness on the palate, ending on a fresh and mineral finish. Length, elegance, harmony: Mouton Rothschild 2010 promises to be a remarkable vintage – and a worthy successor to the 2009! " +Chateau Mouton Rothschild 2015,"Pauillac, Bordeaux, France",Red Wine,96.0,The grapes for this vintage were magnificent and fermentation took place quickly. The wines immediately showed plenty of color and a complete array of very intense aromas ranging from red and black fruit to spice and incense. +Chateau Mouton Rothschild (375ML half-bottle) 1986,"Pauillac, Bordeaux, France",Red Wine,97.0,"Luscious black currant flavored Cabernet fruit makes Mouton beguilingly easy to drink. Rich Complex flavors, powerful ripe tannins and an extremely long finish are all hallmarks of this wine. " +Chateau Mouton Rothschild 6-Pack OWC (Futures Pre-Sale) 2019,"Pauillac, Bordeaux, France",Red Wine,99.0,"The wine is an intense garnet red with purplish hue. Fresh, highly expressive and precise on the nose, it reveals blackberry, black cherry and licorice aromas with a slightly mineral cast. It is smooth and opulent on the palate, with an attractive sweetness, enfolding superbly patrician, rounded and powerful tannins. Beautifully rich overall, it culminates in a stylish, succulent and very harmonious finish." +Chateau Mouton Rothschild (Futures Pre-Sale) 2019,"Pauillac, Bordeaux, France",Red Wine,99.0,"The wine is an intense garnet red with purplish hue. Fresh, highly expressive and precise on the nose, it reveals blackberry, black cherry and licorice aromas with a slightly mineral cast. It is smooth and opulent on the palate, with an attractive sweetness, enfolding superbly patrician, rounded and powerful tannins. Beautifully rich overall, it culminates in a stylish, succulent and very harmonious finish." +Chateau Mouton Rothschild (top shoulder fill) 1982,"Pauillac, Bordeaux, France",Red Wine,98.0,"Best known as a film director, but also a boxer, art lover, writer, horsetrainer, big-game hunter and actor, John Huston (1906-1987) was a talented painter from an early age. His dedication: “In celebration of my beloved friend Baron Philippe’s sixtieth harvest at Mouton”, bears witness both to his affection for the man and his attachment to a place that clearly enchanted him." +Chateau Palmer (1.5 Liter Magnum) 2015,"Margaux, Bordeaux, France",Red Wine,96.0,"The relatively high alcoholic content of the 2015 vintage is balanced out by a dense tannic structure without any rustic notes, thanks to perfect phenolic maturity of the pips and skins. At this time, this outstanding balance leads Chateau Palmer to believe that 2015 will be in line with recent great vintages, such as 2010, 2009 and 2005." +Chateau Palmer (1.5 Liter Magnum Futures Pre-Sale) 2018,"Margaux, Bordeaux, France",Red Wine,99.0,"Blend: 53% Cabernet Sauvignon, 40% Merlot and 7% Petit Verdot" +Chateau Palmer 2015,"Margaux, Bordeaux, France",Red Wine,96.0,"The relatively high alcoholic content of the 2015 vintage is balanced out by a dense tannic structure without any rustic notes, thanks to perfect phenolic maturity of the pips and skins. At this time, this outstanding balance leads Chateau Palmer to believe that 2015 will be in line with recent great vintages, such as 2010, 2009 and 2005." +Chateau Palmer (Futures Pre-Sale) 2018,"Margaux, Bordeaux, France",Red Wine,99.0,"Blend: 53% Cabernet Sauvignon, 40% Merlot and 7% Petit Verdot" +Chateau Pape Clement (1.5 Liter Futures Pre-Sale) 2019,"Pessac-Leognan, Bordeaux, France",Red Wine,98.0,"Blend: 55% Cabernet Sauvignon, 40% Merlot, 3% Cabernet Franc" +Chateau Pape Clement 6-Pack OWC (Futures Pre-Sale) 2019,"Pessac-Leognan, Bordeaux, France",Red Wine,98.0,"Blend: 55% Cabernet Sauvignon, 40% Merlot, 3% Cabernet Franc" +Chateau Pape Clement Blanc (Futures Pre-Sale) 2019,"Pessac-Leognan, Bordeaux, France",White Wine,96.0,"Blend: 46% Sauvignon Blanc, 40% Semillon, 14% Sauvignon Gris" +Chateau Pape Clement (Futures Pre-Sale) 2019,"Pessac-Leognan, Bordeaux, France",Red Wine,98.0,"Blend: 55% Cabernet Sauvignon, 40% Merlot, 3% Cabernet Franc" +Chateau Pavie (1.5 Liter Futures Pre-Sale) 2018,"St. Emilion, Bordeaux, France",Red Wine,99.0,"Blend: 60% Merlot, 22% Cabernet Franc and 18% Cabernet Sauvignon" +Chateau Pavie (1.5 Liter Futures Pre-Sale) 2019,"St. Emilion, Bordeaux, France",Red Wine,99.0,"Blend: 50% Merlot, 32% Cabernet Franc, 18% Cabernet Sauvignon" +Chateau Pavie (1.5 Liter Magnum) 2005,"St. Emilion, Bordeaux, France",Red Wine,98.0,"This is the eighth vintage of Pavie produced under the ownership of Mme. and Mr. Perse, and it was a classic year which demonstrated that the château has a truly exceptional terroir. The color is a deep and dense purple, with violet highlights which underscore the wine's youth. Its clean aromas highlight good intensity and well-defined fruitiness. Black currants, blueberries and assorted black fruit are present, together with flattering chocolate and spicy notes derived from careful aging in barrel. The first impression on the palate is faultless, and the quality of the vintage becomes evident as its taste evolves. The wine shows a full body, both tight and supple at once. Everything comes together to create an exemplary balance. The tannins are fine-grained, with a structure which ensures a long and brilliant future. The wine's class and nobility express the care taken during vinification to respect the vintage's potential. The finish is mouth-watering and long, worthy of a great Saint-Emilion. " +Chateau Pavie (1.5 Liter Magnum) 2015,"St. Emilion, Bordeaux, France",Red Wine,96.0,"Blend: 60% Merlot, 22% Cabernet Franc, 18% Cabernet Sauvignon" +Chateau Pavie (1.5 Liter Magnum) 2016,"St. Emilion, Bordeaux, France",Red Wine,96.0,"Blend: 60% Merlot, 22% Cabernet Franc and 18% Cabernet Sauvignon " +Chateau Pavie 2003,"St. Emilion, Bordeaux, France",Red Wine,97.0,"This wine will long be remembered because there was a controversy surrounding its degree of ripeness. The color is deep crimson, bordering on black. The nose reflects the hot summer, with a very concentrated bouquet of blackberry, juicy cherries, jam, and a touch of understated toasty aromas that take a back seat to the ripe fruit. " +Chateau Pavie 2010,"St. Emilion, Bordeaux, France",Red Wine,98.0,"Chateau Pavie's large production has made it more easily available than many other red Bordeaux. It is one of the best-known St. Emilions, vinified in a slightly lighter, more elegant style. With moderate red currant fruit in the nose, plus earth and spice, it can be peppery, spicy, or even leafy with hints of red cherries. Like other wineries in the côtes of St. Emilion, Chateau Pavie makes firm wines that are restrained and austere when young. The occasionally severe tannins mature with age into a fine sinewy structure. The better vintages are deep, intense, and concentrated. They mature 7-20 years after the vintage." +Chateau Pavie 2016,"St. Emilion, Bordeaux, France",Red Wine,96.0,"Blend: 60% Merlot, 22% Cabernet Franc and 18% Cabernet Sauvignon " +Chateau Pavie (3 Liter Bottle) 2003,"St. Emilion, Bordeaux, France",Red Wine,96.0,"This wine will long be remembered because there was a controversy surrounding its degree of ripeness. The color is deep crimson, bordering on black. The nose reflects the hot summer, with a very concentrated bouquet of blackberry, juicy cherries, jam, and a touch of understated toasty aromas that take a back seat to the ripe fruit. " +Chateau Pavie (3 Liter Bottle) 2005,"St. Emilion, Bordeaux, France",Red Wine,98.0,"This is the eighth vintage of Pavie produced under the ownership of Mme. and Mr. Perse, and it was a classic year which demonstrated that the chateau has a truly exceptional terroir. The color is a deep and dense purple, with violet highlights which underscore the wine's youth. Its clean aromas highlight good intensity and well-defined fruitiness. Black currants, blueberries and assorted black fruit are present, together with flattering chocolate and spicy notes derived from careful aging in barrel. The first impression on the palate is faultless, and the quality of the vintage becomes evident as its taste evolves. The wine shows a full body, both tight and supple at once. Everything comes together to create an exemplary balance. The tannins are fine-grained, with a structure which ensures a long and brilliant future. The wine's class and nobility express the care taken during vinification to respect the vintage's potential. The finish is mouth-watering and long, worthy of a great Saint-Emilion. " +Chateau Pavie (6 Liter Bottle) 2003,"St. Emilion, Bordeaux, France",Red Wine,96.0,"This wine will long be remembered because there was a controversy surrounding its degree of ripeness. The color is deep crimson, bordering on black. The nose reflects the hot summer, with a very concentrated bouquet of blackberry, juicy cherries, jam, and a touch of understated toasty aromas that take a back seat to the ripe fruit. " +Chateau Pavie (6 Liter Bottle) 2005,"St. Emilion, Bordeaux, France",Red Wine,98.0,"This is the eighth vintage of Pavie produced under the ownership of Mme. and Mr. Perse, and it was a classic year which demonstrated that the chateau has a truly exceptional terroir. The color is a deep and dense purple, with violet highlights which underscore the wine's youth. Its clean aromas highlight good intensity and well-defined fruitiness. Black currants, blueberries and assorted black fruit are present, together with flattering chocolate and spicy notes derived from careful aging in barrel. The first impression on the palate is faultless, and the quality of the vintage becomes evident as its taste evolves. The wine shows a full body, both tight and supple at once. Everything comes together to create an exemplary balance. The tannins are fine-grained, with a structure which ensures a long and brilliant future. The wine's class and nobility express the care taken during vinification to respect the vintage's potential. The finish is mouth-watering and long, worthy of a great Saint-Emilion. " +Chateau Pavie (6-Pack OWC Futures Pre-Sale) 2018,"St. Emilion, Bordeaux, France",Red Wine,99.0,"Blend: 60% Merlot, 22% Cabernet Franc and 18% Cabernet Sauvignon" +Chateau Pavie (6-Pack OWC Futures Pre-Sale) 2019,"St. Emilion, Bordeaux, France",Red Wine,99.0,"Blend: 50% Merlot, 32% Cabernet Franc, 18% Cabernet Sauvignon" +Chateau Pavie Decesse 2005,"St. Emilion, Bordeaux, France",Red Wine,96.0,"The wine's color is a very deep and intense violet which is normal for this vintage. There is a well-developed and complex aromatic palette of chocolate, cacao, and black currant that is typical in wines touched by the sun, joined by an attractive spiciness. Supporting all this is a balanced woody character which is elegant and striking. The wine is somewhat paradoxical: it has an aromatic style reminiscent of those from the south of France; but the palate is surprisingly different, with still-developing, tight tannins, and the particularly dense and elegant body characteristic of a mature Bordeaux harvest. The long finish shows very good balance. This is a wine for long keeping which will develop fully only after five to 12 more years. Winter foods like tasty game dishes will perfectly accompany this wine at table. " +Chateau Pavie Decesse (Futures Pre-Sale) 2018,"St. Emilion, Bordeaux, France",Red Wine,98.0,Blend: 90% Merlot and 10% Cabernet Franc +Chateau Pavie (Futures Pre-Sale) 2018,"St. Emilion, Bordeaux, France",Red Wine,99.0,"Blend: 60% Merlot, 22% Cabernet Franc and 18% Cabernet Sauvignon" +Chateau Pavie (Futures Pre-Sale) 2019,"St. Emilion, Bordeaux, France",Red Wine,99.0,"Blend: 50% Merlot, 32% Cabernet Franc, 18% Cabernet Sauvignon" +Chateau Pavie Macquin (1.5 Liter Futures Pre-Sale) 2019,"St. Emilion, Bordeaux, France",Red Wine,97.0,"Blend: 78% Merlot, 20% Cabernet Franc, 2% Cabernet Sauvignon" +Chateau Pavie Macquin 2018,"St. Emilion, Bordeaux, France",Red Wine,96.0,"2018 brought out the best in the plateau terroirs. The power of the clay, the mineral tension of the limestone, and aromatic freshness all reached a peak in the contrasted weather conditions of the vintage. " +Chateau Pavie Macquin (6-Pack OWC Futures Pre-Sale) 2018,"St. Emilion, Bordeaux, France",Red Wine,96.0,"2018 brought out the best in the plateau terroirs. The power of the clay, the mineral tension of the limestone, and aromatic freshness all reached a peak in the contrasted weather conditions of the vintage. " +Chateau Pavie Macquin (6-Pack OWC Futures Pre-Sale) 2019,"St. Emilion, Bordeaux, France",Red Wine,97.0,"Blend: 78% Merlot, 20% Cabernet Franc, 2% Cabernet Sauvignon" +Chateau Pavie Macquin (Futures Pre-Sale) 2019,"St. Emilion, Bordeaux, France",Red Wine,97.0,"Blend: 78% Merlot, 20% Cabernet Franc, 2% Cabernet Sauvignon" +Chateau Peby Faugeres (Futures Pre-Sale) 2019,"St. Emilion, Bordeaux, France",Red Wine,96.0,The Barrel Sample for this wine is above 14% ABV. +Chateau Petrus 1990,"Pomerol, Bordeaux, France",Red Wine,98.0,"Petrus displays an intense color, a rich and complex nose and an opulent fruit." +Chateau Petrus 1995,"Pomerol, Bordeaux, France",Red Wine,96.0,"Bordeauxs most intensely concentrated, richly flavored and unique red wine. An incredible power, depth and richness yet a remarkable balance with penetrating aromas of ripe mulberry, black currant and fruit and spicy vanilla oak, setting it apart from all Bordeaux finest wines." +Chateau Petrus 2009,"Pomerol, Bordeaux, France",Red Wine,99.0,"Petrus displays an intense color, a rich and complex nose and an opulent fruit. In great vintages, the wine can easily be kept 25 years or more." +Chateau Petrus 2012,"Pomerol, Bordeaux, France",Red Wine,96.0,Blend: 100% Merlot +Chateau Petrus 2015,"Pomerol, Bordeaux, France",Red Wine,96.0,"Bordeaux's most intensely concentrated, richly flavored and unique red wine. An incredible power, depth and richness yet a remarkable balance with penetrating aromas of ripe mulberry, black currant and fruit and spicy vanilla oak, setting it apart from all Bordeaux's finest wines." +Chateau Pichon-Longueville Baron (1.5 Liter Futures Pre-Sale) 2019,"Pauillac, Bordeaux, France",Red Wine,99.0,"Our Grand Vin Château Pichon Baron 2nd Grand Cru Classé in 1855 comes from the very oldest vines grown on the historic plots of the estate. This authentic Pauillac offers an amazing sensory experience with its black fruit flavors and spicy hints. Château Pichon Baron shows great elegance, intensity and exceptional length on the palate. It is a wine that improves year after year and can age for over 40 years in the cellar." +Chateau Pichon-Longueville Baron (1.5 Liter Magnum) 2016,"Pauillac, Bordeaux, France",Red Wine,96.0,"Château Pichon Baron 2016 has a beautiful, intense garnet red colour. The nose reveals aromas of red and dark fruit such as blueberry, black cherry and blackcurrant, followed by very lightly toasted notes with a hint of vanilla and spices. The fleshy, powerful attack is balanced by richness and a certain fullness. The tannins are silky, opulent and lengthy, with some crispness. The finish is precise. Altogether it is dominated by the tipycity of the grapes and by tension, and is dense and full-bodied. " +Chateau Pichon-Longueville Baron 2018,"Pauillac, Bordeaux, France",Red Wine,98.0,"Our Grand Vin Château Pichon Baron 2nd Grand Cru Classé in 1855 comes from the very oldest vines grown on the historic plots of the estate. This authentic Pauillac offers an amazing sensory experience with its black fruit flavours and spicy hints. Château Pichon Baron shows great elegance, intensity and exceptional length on the palate. It is a wine that improves year after year and can age for over 40 years in the cellar. " +Chateau Pichon-Longueville Baron (6-Pack OWC Futures Pre-Sale) 2019,"Pauillac, Bordeaux, France",Red Wine,99.0,"Our Grand Vin Château Pichon Baron 2nd Grand Cru Classé in 1855 comes from the very oldest vines grown on the historic plots of the estate. This authentic Pauillac offers an amazing sensory experience with its black fruit flavors and spicy hints. Château Pichon Baron shows great elegance, intensity and exceptional length on the palate. It is a wine that improves year after year and can age for over 40 years in the cellar." +Chateau Pichon-Longueville Baron (Futures Pre-Sale) 2019,"Pauillac, Bordeaux, France",Red Wine,99.0,"Our Grand Vin Château Pichon Baron 2nd Grand Cru Classé in 1855 comes from the very oldest vines grown on the historic plots of the estate. This authentic Pauillac offers an amazing sensory experience with its black fruit flavors and spicy hints. Château Pichon Baron shows great elegance, intensity and exceptional length on the palate. It is a wine that improves year after year and can age for over 40 years in the cellar." +Chateau Pichon Longueville Comtesse de Lalande (1.5 Liter Futures Pre-Sale) 2018,"Pauillac, Bordeaux, France",Red Wine,98.0,"Blend: 71% Cabernet Sauvignon, 23% Merlot, 5% Cabernet Franc, 1% Petit Verdot" +Chateau Pichon Longueville Comtesse de Lalande (1.5 Liter Futures Pre-Sale) 2019,"Pauillac, Bordeaux, France",Red Wine,98.0,The Barrel Sample for this wine is above 14% ABV. +Chateau Pichon Longueville Comtesse de Lalande (1.5 Liter Magnum) 1996,"Pauillac, Bordeaux, France",Red Wine,96.0,"Blend: 75% Cabernet Sauvignon, 15% Merlot, 5% Cabernet Franc, and 5% Petit Verdot." +Chateau Pichon Longueville Comtesse de Lalande 1995,"Pauillac, Bordeaux, France",Red Wine,96.0,"A supple, well-balanced wine with silky tannins and a long finish. Perfect maturity of the Cabernets and Merlots, but the Petits Verdots suffered in the heat. An excellent vintage. " +Chateau Pichon Longueville Comtesse de Lalande 1996,"Pauillac, Bordeaux, France",Red Wine,96.0,"A perfect combination of power and elegance. The body is rich and dense with soft tannins. The palate, just like the nose, displays an almost endless complexity." +Chateau Pichon Longueville Comtesse de Lalande (6-Pack OWC Futures Pre-Sale) 2018,"Pauillac, Bordeaux, France",Red Wine,98.0,"Blend: 71% Cabernet Sauvignon, 23% Merlot, 5% Cabernet Franc, 1% Petit Verdot" +Chateau Pichon Longueville Comtesse de Lalande (6-Pack OWC Futures Pre-Sale) 2019,"Pauillac, Bordeaux, France",Red Wine,98.0,The Barrel Sample for this wine is above 14% ABV. +Chateau Pichon Longueville Comtesse de Lalande (bin soiled label) 1985,"Pauillac, Bordeaux, France",Red Wine,96.0,"""Exhibits fabulous aromas of fresh fruit, minerals and chocolate with a hint of spice. Full-bodied and concentrated, with loads of fruit and tannins.""" +Chateau Pichon Longueville Comtesse de Lalande (Futures Pre-Sale) 2018,"Pauillac, Bordeaux, France",Red Wine,98.0,"Blend: 71% Cabernet Sauvignon, 23% Merlot, 5% Cabernet Franc, 1% Petit Verdot" +Chateau Pichon Longueville Comtesse de Lalande (Futures Pre-Sale) 2019,"Pauillac, Bordeaux, France",Red Wine,98.0,The Barrel Sample for this wine is above 14% ABV. +Chateau Poesia (Futures Pre-Sale) 2018,"St. Emilion, Bordeaux, France",Red Wine,96.0,"Blend: 70% Merlot, 30% Cabernet Franc" +Chateau Pontet-Canet (1.5 Liter Futures Pre-Sale) 2019,"Pauillac, Bordeaux, France",Red Wine,99.0,"Blend: 65% Cabernet Sauvignon, 30% Merlot, 3% Cabernet Franc, 2% Petit Verdot" +Chateau Pontet-Canet 2009,"Pauillac, Bordeaux, France",Red Wine,96.0,"Deep purple color. The exceptionally complex nose is dominated by fruits such as blackcurrant and a very noticeable graphite presence. A flowery touch of violets adds extra elegance. In the mouth, the attack is yet powerful and contained. The high in tannins, long and highly refined structure is accentuated by a refreshing acidity. A great Pontet-Canet!" +Chateau Pontet-Canet 2010,"Pauillac, Bordeaux, France",Red Wine,97.0,"Purple color, almost black. The very complex aromas have a vibrant character, dominated by notes of violet, blackberry, red currant and cherry, among others. There's complete harmony in the mouth, with a straightforward structure and impressive length. It is both dense and etherial. This is surely the greatest Pontet-Canet in modern times." +Chateau Pontet-Canet (375ML half-bottle) 2009,"Pauillac, Bordeaux, France",Red Wine,96.0,"Deep purple color. The exceptionally complex nose is dominated by fruits such as blackcurrant and a very noticeable graphite presence. A flowery touch of violets adds extra elegance. In the mouth, the attack is yet powerful and contained. The high in tannins, long and highly refined structure is accentuated by a refreshing acidity. A great Pontet-Canet!" +Chateau Pontet-Canet (6-Pack OWC Futures Pre-Sale) 2019,"Pauillac, Bordeaux, France",Red Wine,99.0,"Blend: 65% Cabernet Sauvignon, 30% Merlot, 3% Cabernet Franc, 2% Petit Verdot" +Chateau Pontet-Canet (Futures Pre-Sale) 2019,"Pauillac, Bordeaux, France",Red Wine,99.0,"Blend: 65% Cabernet Sauvignon, 30% Merlot, 3% Cabernet Franc, 2% Petit Verdot" +Chateau Poujeaux (Futures Pre-Sale) 2019,"Moulis, Bordeaux, France",Red Wine,96.0,"A deep garnet hue with brilliant bright purple glints. Intensely aromatic with notes of violets, blackcurrant, flint and cigar-box. The entry is homogeneously velvety smooth. The tannins are silky. Great minerality, beautiful finesse and elegance. Outstanding length of flavor. " +Chateau Puech-Haut La Closerie du Pic 2015,"Languedoc, South of France, France",Red Wine,96.0,"Dark and deep color. Intense nose with cocoa and red fruit notes. The mouth is round, voluminous and provides nice sensations of power with spicy aromas. This elegant wine is perfect for your privileged moments. " +Chateau Rauzan-Segla 1986,"Margaux, Bordeaux, France",Red Wine,96.0,"The wines of Chateau Rauzan-Segla express, first and foremost, the internationally recognized characteristics of the Margaux terroir: an elegant, fragrant bouquet, lots of taste on the palate, a well-balanced structure and very great elegance. But beyond these recognizable features, there is the individual signature of the Chateau. A deep robe with a sparkle of the future, a texture that is velvet smooth, an elegant palate on which the characteristics of the grapes burst forth, together with touches if violet in some vintages. " +Chateau Rayas Chateaneuf-du-Pape Reserve 2005,"Chateauneuf-du-Pape, Rhone, France",Red Wine,97.0,"""There are no signs on the dusty, narrow, dirt roads of Southern Rhône's Châteauneuf-du-Pape directing you to Château Rayas,"" writes Per-Henrik Mansson. ""That's no accident. The late Louis Reynaud and his late son, Jacques, used to do all they could to keep unsolicited visitors at bay. Now, Louis' grandson, Emmanuel Reynaud, is doing his part to uphold the tradition.""" +Chateau Rieussec Sauternes (half-bottle) 2001,"Sauternes, Bordeaux, France",Collectible,99.0,Number 1 of +Chateau Rieussec Sauternes (stained label) 1990,"Sauternes, Bordeaux, France",Collectible,97.0,"The property is planted 80% of Sémillon, 18% Sauvignon and 2% Muscadelle. The method of picking is quite unique. From October to December, the pickers pass through the whole vineyard, time after time, selecting one by one the grapes which have reached the right state of noble rot. It is only at such a price that the necessary concentration of sweetness can be reached to make the Sauternes wines. After fermentation, the wines spend 18 to 30 months in oak barrels renewed each year," +Chateau Saint-Pierre (Futures Pre-Sale) 2019,"St-Julien, Bordeaux, France",Red Wine,96.0,"Blend: 75% Cabernet Sauvignon, 15% Merlot, 10% Cabernet Franc" +Chateau Sansonnet (Futures Pre-Sale) 2019,"St. Emilion, Bordeaux, France",Red Wine,96.0,The Barrel Sample for this wine is above 14% ABV. +Chateau Smith Haut Lafitte (1.5 Liter Futures Pre-Sale) 2019,"Pessac-Leognan, Bordeaux, France",Red Wine,98.0,The Barrel Sample for this wine is above 14% ABV. +Chateau Smith Haut Lafitte (1.5 Liter Magnum) 2018,"Pessac-Leognan, Bordeaux, France",Red Wine,97.0,"Very deep, intense black color. The nose is already expressive with a mix of red and black (blackberry, blackcurrant, cherry, raspberry) and spices, characteristic of perfectly ripe grapes. Swirling in the glass reveals considerable complexity with delicate floral notes, sweet spices, and gunflint. The wine starts out broad-based, concentrated, and powerful on the palate. The tannin is rich without compromising on freshness, balance, and delicate flavors. The expression ""an iron first in a velvevt glove"" perfectly sums up this wine! " +Chateau Smith Haut Lafitte 2015,"Pessac-Leognan, Bordeaux, France",Red Wine,96.0,"Chateau Smith Haut Lafitte 2015 is a very dark red wine, almost black. The nose expresses a bouquet of black fruits and very freshred fruits. Through swirling, the nose appears more complex with notes of spices, cedar, liquorice associated with notes of violet and a touch of flint stone. The mouth is straightforward, dynamic, powerful, dense, classy. Tannins are concentrated, unctuous and silky. They give the wine great length and beautiful texture. We find again in mouth the crunchy and ripe fruits and an additional spicier dimension with liquorice, citron, clove and a wonderfulfinale of floral and mineral notes." +Chateau Smith Haut Lafitte (3 Liter) 2010,"Pessac-Leognan, Bordeaux, France",Red Wine,96.0,"2010 Smith Haut Lafitte rouge is a deep, concentrated, nearly black color. The bouquet displays a range of red and black fruit aromas, as well as ones reminiscent of spice and warm herbs. With aeration, the wine reveals magnificent black fruit, liquorice, clove, and graphite nuances. The wine starts out firm and straightforward on the palate. It is huge, but in no way austere. Its power comes through in a full-bodied flavor profile with a long aftertaste. The tannin is rich and silky, and the texture is well-defined thanks to ripe tannin and a careful control during extraction. The wine has an extremely well-focused structure and taste. The long aftertaste of liquorice, red fruit, and black fruit also features more subtle underlying flavors of hot stones and warm earth. This 2010 Smith Haut Lafitte rouge is undoubtedly one of the finest wines the estate has ever made. " +Chateau Smith Haut Lafitte (375ML half-bottle) 2015,"Pessac-Leognan, Bordeaux, France",Red Wine,96.0,"Chateau Smith Haut Lafitte 2015 is a very dark red wine, almost black. The nose expresses a bouquet of black fruits and very freshred fruits. Through swirling, the nose appears more complex with notes of spices, cedar, liquorice associated with notes of violet and a touch of flint stone. The mouth is straightforward, dynamic, powerful, dense, classy. Tannins are concentrated, unctuous and silky. They give the wine great length and beautiful texture. We find again in mouth the crunchy and ripe fruits and an additional spicier dimension with liquorice, citron, clove and a wonderfulfinale of floral and mineral notes." +Chateau Smith Haut Lafitte (6-Pack OWC Futures Pre-Sale) 2018,"Pessac-Leognan, Bordeaux, France",Red Wine,97.0,"Very deep, intense black color. The nose is already expressive with a mix of red and black (blackberry, blackcurrant, cherry, raspberry) and spices, characteristic of perfectly ripe grapes. Swirling in the glass reveals considerable complexity with delicate floral notes, sweet spices, and gunflint. The wine starts out broad-based, concentrated, and powerful on the palate. The tannin is rich without compromising on freshness, balance, and delicate flavors. The expression ""an iron first in a velvevt glove"" perfectly sums up this wine! " +Chateau Smith Haut Lafitte (6-Pack OWC Futures Pre-Sale) 2019,"Pessac-Leognan, Bordeaux, France",Red Wine,98.0,The Barrel Sample for this wine is above 14% ABV. +Chateau Smith Haut Lafitte (Futures Pre-Sale) 2018,"Pessac-Leognan, Bordeaux, France",Red Wine,97.0,"Very deep, intense black color. The nose is already expressive with a mix of red and black (blackberry, blackcurrant, cherry, raspberry) and spices, characteristic of perfectly ripe grapes. Swirling in the glass reveals considerable complexity with delicate floral notes, sweet spices, and gunflint. The wine starts out broad-based, concentrated, and powerful on the palate. The tannin is rich without compromising on freshness, balance, and delicate flavors. The expression ""an iron first in a velvevt glove"" perfectly sums up this wine! " +Chateau Smith Haut Lafitte (Futures Pre-Sale) 2019,"Pessac-Leognan, Bordeaux, France",Red Wine,98.0,The Barrel Sample for this wine is above 14% ABV. +Chateau St. Jean Sonoma County Reserve Chardonnay 2002,"Sonoma County, California",White Wine,98.0,Selected as the highest-rated Chardonnay for the 2002 vintage by +Chateau St. Jean Sonoma County Reserve Chardonnay 2003,"Sonoma County, California",White Wine,96.0,"The best fruit from Chateau St. Jean's premier vineyards (including Robert Young, Belle Terre, and Durell) is set aside for this Reserve Chardonnay. Great care is taken to create a great bottle of wine, including aging in sur lie for 17 months in French oak barrels, and then bottle aging for an additional year before release." +Chateau Suduiraut (375ML half-bottle) 2001,"Sauternes, Bordeaux, France",Collectible,98.0, +Chateau Suduiraut Sauternes 2009,"Sauternes, Bordeaux, France",Collectible,96.0,"This is a precise yet opulent Suduiraut with the purest of fruit, perfectly-integrated sweetness and a long finish revealing a beautiful acidity. The attack is rich and crisp at the same time. The palate reveals candied citrus flavours, followed by wood and liquorice, leading through perfectly into a smooth, fruity finish. In this very sunny vintage, we can sense very great potential, with 2009 following in the footsteps of the truly great Sauternes." +Chateau Suduiraut Sauternes (375ML Futures Pre-Sale) 2019,"Sauternes, Bordeaux, France",Collectible,96.0,"Blend: 94% Semillon, 6% Sauvignon Blanc" +Chateau Suduiraut Sauternes (375ML half-bottle) 2014,"Sauternes, Bordeaux, France",Collectible,96.0,"Classed as a Premier Cru in 1855, it is made from grapes selected from the finest terroirs of the property. This wine is hand crafted at every stage of its elaboration and reveals remarkable finesse and complexity and a golden color reminiscent of the sun that made it possible. With age the bright gold evolves to a dark amber color. With an extensive life-span, it powerfully and harmoniously combines fruit and floral aromas with roasted and candied notes. " +Chateau Suduiraut Sauternes (Futures Pre-Sale) 2019,"Sauternes, Bordeaux, France",Collectible,96.0,"Blend: 94% Semillon, 6% Sauvignon Blanc" +Chateau Troplong Mondot (1.5 Liter Magnum) 2005,"St. Emilion, Bordeaux, France",Red Wine,96.0,"Blend: 90% Merlot, 5% Cabernet Franc, 5% Cabernet Sauvignon" +Chateau Troplong Mondot 2005,"St. Emilion, Bordeaux, France",Red Wine,96.0,"Blend: 90% Merlot, 5% Cabernet Franc, 5% Cabernet Sauvignon" +Chateau Troplong Mondot (3 Liter Bottle) 2005,"St. Emilion, Bordeaux, France",Red Wine,96.0,"Blend: 90% Merlot, 5% Cabernet Franc, 5% Cabernet Sauvignon" +Chateau Troplong Mondot (Futures Pre-Sale) 2019,"St. Emilion, Bordeaux, France",Red Wine,98.0,The Barrel Sample for this wine is above 14% ABV. +Chateau Trotanoy 2009,"Pomerol, Bordeaux, France",Red Wine,97.0,"For pairing with Bordeaux, look for the more refined and simply prepared cuts such as loin chops, rib chops and a rack of lamb. These classic dishes can be a divine pairing with Bordeaux. More aromatic, rustic and spicy preparations of lamb often call for a wine with a bit more of a chewy, rustic and herbal character." +Chateau Trotanoy 2010,"Pomerol, Bordeaux, France",Red Wine,96.0,"For pairing with Bordeaux, look for the more refined and simply prepared cuts such as loin chops, rib chops and a rack of lamb. These classic dishes can be a divine pairing with Bordeaux. More aromatic, rustic and spicy preparations of lamb often call for a wine with a bit more of a chewy, rustic and herbal character." +Chateau Trotanoy 2016,"Pomerol, Bordeaux, France",Red Wine,96.0,"Blend: 95% Merlot, 5% Cabernet Franc" +Chateau Trotte Vieille 2015,"St. Emilion, Bordeaux, France",Red Wine,96.0,"Blend: 49% Merlot, 49% Cabernet Franc, 2% Cabernet Sauvignon" +Chateau Trotte Vieille (Futures Pre-Sale) 2019,"St. Emilion, Bordeaux, France",Red Wine,97.0,"Blend: 49% Cabernet Franc, 48% Merlot, 3% Cabernet Sauvignon" +Chateau Valandraud (Futures Pre-Sale) 2019,"St. Emilion, Bordeaux, France",Red Wine,97.0,"Blend: 90% Merlot, 7% Cabernet Franc, 3% Cabernet Sauvignon" +Chris Ringland Shiraz 1998,"Barossa Valley, Barossa, South Australia, Australia",Red Wine,99.0,"We only get one bottle each year of the 1200 made. Enjoy!A compelling effort from Chris Ringland (the name Three Rivers was dropped because of trademark litigation), this is his classic 1,200 bottle Shiraz cuvee from a 90-year old Barossa vineyard that yielded only one ton of fruit per acre. Aged in 300 liter French hogsheads (100% new) for 42 months prior to bottling, this is a prodigious offering from an exceptional vintage for South Australia. An inky purple color is followed by a gorgeous nose of minerals, blackberry liqueur, barbecue spices, sweet licorice, and a hint of white flowers. Remarkably concentrated, full-bodied, and unctuously-textured, its purity, definition, and compelling palate persistence as well as complexity are awesome. This is a magical wine from a winemaker who is a master craftsman. Anticipated maturity: 2008-2020+." +Chris Ringland Shiraz 1999,"Barossa Valley, Barossa, South Australia, Australia",Red Wine,98.0,"We only get one bottle each year of the 1200 made. Enjoy!The name Three Rivers was dropped because of trademark litigation.The Three Rivers Shiraz, which is aged 42 months in 100% new French oak, and is rarely racked until bottling, represents an extraordinary expression of Barossa Shiraz. The intense 1999, released in 2004, demonstrates that this vintage is somewhat underrated after all the hype over 1998. From a vineyard planted in 1910, its inky/purple color is accompanied by aromas of lavender, lard, smoke, licorice, blackberries, cassis, espresso roast, chocolate, and pepper. Full-bodied, slightly less voluminous than the perfect 1998, with an unctuous texture, sweet tannin, and a 70+ second finish, this magnificent, still young Shiraz should be accessible in 3-5 years, and last for two decades." +Ciacci Piccolomini d'Aragona Brunello di Montalcino Pianrosso 1997,"Montalcino, Tuscany, Italy",Red Wine,97.0,"The bouquet is intense, complex, fruit-forward and spicy with hints of ripe red berry fruits enriched by various spicy notes. Warm, soft and harmonic on the palate. Great balance among pronounced tannins, acidity and savoriness. This elegant wine has good potential for further cellar aging." +Clarendon Hills Astralis Syrah 1998,"McLaren Vale, South Australia, Australia",Red Wine,98.0,"The color is very dark blood red, almost black with just a little hint of purple. There is an immense variety of aromas greeting you when you first sniff this wine. Black cherries, blueberries and plums. There is an overriding sensation of earthy, mushroom like characters and more lifted aromas with licorice bark, coffee and vanilla. There are some hints of other spices as well with some nutmeg, cloves and fennel. All of this and more follows on the palate." +Clarendon Hills Astralis Syrah 2006,"McLaren Vale, South Australia, Australia",Red Wine,98.0,"Blackened purple/crimson. Low altitude of aroma. Soft and elegant exhibition of black raspberry and grilled meat, blue berry muffin, dark milk chocolate, liquorice, coffee, choc cake, incense, cinnamon, freshly baked Christmas cake, iodine, graphite and crushed rock. Relatively closed nose in contrast to mouth filling flavours, although continually evolving in the glass. Overall, a vividly intense concentration of characters although it remains trapped in the tannin. An atypical Astralis that is slightly more savory profiled than recent '03 and '05. Cascades of flavor roll along the most refined and sublime expression of Syrah in the cellar. Varietal characters driven by ripe, precisely focused tannin structure that fills your mouth with thousands of finely grained particles- from the moment after consuming: the flavors glide from one to another and the texture remains." +Clarendon Hills Astralis Syrah 2010,"McLaren Vale, South Australia, Australia",Red Wine,96.0,"The pride of Clarendon Hills' portfolio, The Astralis Syrah has a deep black-purple crimson color that alludes to its aromas of boysenberry, forest floor and Asian spice and flavors ripe blackberry. An overall full-bodied wine, the Astralis is softened by silky tannins and a mouth-engulfing structure that sails on seamlessly to a long, lingering finish." +Clarendon Hills Astralis Syrah 2011,"McLaren Vale, South Australia, Australia",Red Wine,96.0,"The pride of our portfolio, Clarendon Hills Astralis Syrah has a deep black-purple crimson color that alludes to its aromas of boysenberry, forest floor and Asian spice and flavors ripe blackberry. An overall full-bodied wine, the Astralis is softened by silky tannins and a mouth-engulfing structure that sails on seamlessly to a long, lingering finish." +Clarendon Hills Brookman Syrah 2002,"McLaren Vale, South Australia, Australia",Red Wine,96.0,"The Syrah Brookmans Vineyard represents the essence of Syrah presented in an inky/black color. Full-bodied and incredibly pure with fabulous intensity, it's the distilled essence of licorice, camphor, blackberry and cassis liqueur presented as wine. Most of these Syrah cuvees tip the scales between 13.5% and 14.5% alcohol, so they are not over the top by any means. Low yields, impeccable winemaking, and natural bottling have extracted the full essence of each vineyard. This blockbuster, compelling example of Syrah should last for two decades. " +Clarendon Hills Brookman Syrah 2003,"McLaren Vale, South Australia, Australia",Red Wine,96.0,"""Truly great stuff, the 2003 Syrah Brookman Vineyard boasts a dense purple color in addition to a rich, pure nose of blueberries, blackberries, camphor, spice, and truffles. With superb fruit, great texture, well-integrated tannin, and a long finish, it will drink well for 10-15 years. Roman Bratasiuk is one of Planet Earth's greatest winemakers, and obviously a top-notch viticulturist given his obsession with sourcing extraordinary fruit from ancient McLaren Vale vineyards.""" +Clarendon Hills Hickinbotham Cabernet Sauvignon 2006,"McLaren Vale, South Australia, Australia",Red Wine,96.0,"Deep purpled crimson. Espresso, cigar tobacco, bitumen, Kalamata, cherry skins, sweet earthiness. Exceptional clarity within the multi-layered and complex expression. Each aspect of the composition complements and mutually defines the horizon of the savory profile. Ultimate example of restrained power- waves of integrated flavor within silky and modestly endowed extraction. Its recessed and ready for 25 years in the cellar. A hedonist's choice." +Clarendon Hills Hickinbotham Syrah 2003,"McLaren Vale, South Australia, Australia",Red Wine,96.0,"Fabulous notes of melted licorice, smoke, asphalt, creme de cassis and roasted jus de viande, this wine is fullbodied, dense yet remarkably elegant, well balanced. Hickinbotham Shiraz Vineyard planted in 1965 on hard clay and ironstone soil again facing north into the Onkaparinga Valley." +Classic McLaren La Testa Shiraz 1997,"McLaren Vale, South Australia, Australia",Red Wine,98.0,"Smooth, drying tannins, lively acid and pure, strong fruit combine to form a lean wine with a supple consistency and harmonious, sophisticated complexity. Dark berry fruit and milk chocolate flavors abound." +Cliff Lede Beckstoffer To Kalon Vineyard Cabernet Sauvignon (1.5L Magnum) 2014,"Napa Valley, California",Red Wine,99.0,"Dark purple with vermillion-tinged edges, the plush and refreshing 2014 Stags Leap District Cabernet Sauvignon lures the taster with a multidimensional perfume that fills the glass with notes of jasmine, lavender, and spring flowers. Interwoven into the floral notes are unctuous layers of plum, blackberry, and black currants. Loads of smoked cardamom, cinnamon, and black licorice unwind onto the palate where the vibrant acidity carries the long finish to a state of balance and equilibrium. " +Cliff Lede Beckstoffer To Kalon Vineyard Cabernet Sauvignon 2014,"Napa Valley, California",Red Wine,99.0,"Dark purple with vermillion-tinged edges, the plush and refreshing 2014 Stags Leap District Cabernet Sauvignon lures the taster with a multidimensional perfume that fills the glass with notes of jasmine, lavender, and spring flowers. Interwoven into the floral notes are unctuous layers of plum, blackberry, and black currants. Loads of smoked cardamom, cinnamon, and black licorice unwind onto the palate where the vibrant acidity carries the long finish to a state of balance and equilibrium. " +Cliff Lede High Fidelity 2012,"Napa Valley, California",Red Wine,96.0,"The 2012 High Fidelity blend is built on the silky suppleness of Merlot, with Cabernet Franc, Cabernet Sauvignon, and Malbec adding structure, complexity, and richness. This full-bodied wine exhibits all of the seductive opulence of the vintage. Black cherry, anise, white chocolate, and Madagascar vanilla greet the senses in this generous bouquet. This opulent wine has intriguing hints of ferric and graphite minerality andexotic spice. Concentrated and rich, with polished tannins that create a lengthy and harmonious finish, this wine is an ode to the great wines of Pomerol and St. Emilion." +Cliff Lede Poetry Cabernet Sauvignon 2012,"Stags Leap District, Napa Valley, California",Red Wine,98.0,"Beautiful and expressive, the 2012 Poetry bouquet emanates aromas of crushed blackberry, wild Maine blueberry, and Luxardo cherry. Layered with exotic spices of anise, cardamom, and a hint of white pepper, the flavors continue to reveal their complexity with black tea, sandalwood, and dried tobacco notes. This lush and seamless wine is a sensual experience from start to finish, from rare fruit and spice flavors to suede-like tannins and loads of crushed rock minerality. This powerful wine is delicious now, with decades of potential. " +Cliff Lede Poetry Cabernet Sauvignon 2016,"Stags Leap District, Napa Valley, California",Red Wine,99.0,"Our captivating 2016 Poetry is an ode to symmetry and precision. This is the highest expression of our Stags Leap District estate vineyard and all of its irresistible components are well apportioned and fabulously integrated even at such at young age. Dense and brooding on opening, with time liquefied rocks, warm plum, black licorice, bay leaf, and sage soar from the first glass. Equal parts black currant and summer fig flavors coalesce on the expansive entry, while smoked cardamom and lavender aromas saturate the olfactory in a glorious cornucopia of ambrosial harmony. The voluptuous palate finishes with a wave of ultrafine tannins that unites for a seamless finale of gorgeous violet perfume. " +Cliff Lede Poetry Cabernet Sauvignon 2017,"Stags Leap District, Napa Valley, California",Red Wine,96.0,"The fascinatingly mosaic 2017 Poetry possesses a deep garnet color and is front- loaded with crushed black currants, warm slate, violets and Luxardo cherry aromas. Elegant and lithe flavors composed of fruitcake, bone broth, earthy truffle, and vanilla bean intermix with black cardamom and cumin spices. An extraordinarily velvety texture pulses with notes of rainier cherry, espresso roast, molasses, paprika, and hoisin. The remarkable finish is layered with unsmoked cigar, new cast iron, and melted black licorice aromas. This is a triumph of the vintage and should age gracefully for 20+ years or more." +Cliff Lede Scarlet Love Cabernet Sauvignon 2014,"Stags Leap District, Napa Valley, California",Red Wine,97.0,"Scarlet Love shows off the depth and quality of the terroir in Cliff Lede's little section of Stags Leap District. Aromas of Luxardo cherry, blackberry, and black licorice soar from the glass. Beautifully integrated and expressive, the bouquet is complex with layers of crushed rock minerality, dark chocolate, and sweet ripe fig. The cashmere-like tannins caress the palate and linger for a long epic finish." +Cliff Lede Songbook Cabernet Sauvignon 2012,"Stags Leap District, Napa Valley, California",Red Wine,96.0,"Alluring perfume with effusive, ethereal aromas of violets and crushed rose petal segue into exotic boysenberry, huckleberry, and blood orange fruits. Long, elegant, and seamless, the palate is supported structurally by beautiful, powdery tannins from the tufa soil in which the terraced Cabernet vines of the Thorevilos Vineyard reside. " +Cliff Lede Songbook Cabernet Sauvignon 2013,"Stags Leap District, Napa Valley, California",Red Wine,96.0,"Inky purple with blood-red tinged edges, the elegant and seamless 2013 Stags Leap District Cabernet Sauvignon's multilayered perfume fills the glass with notes of violets, lavender, and spring flowers. Intertwined with the floral notes are heady layers of plum, blackberry, and red currents. Silky, unctuous flavors of smoked cardamom, cinnamon, and black licorice lay out on the palate and finish with the taste and texture of liquefied rocks." +Cliff Lede Stags Leap District Cabernet Sauvignon 2002,"Napa Valley, California",Red Wine,96.0,"Driven by Cabernet, the blend includes three more of the five red Bordeaux grapes. Each of the blending grapes contributes to the final wine; Merlot adds richness and weight, Cabernet Franc contributes aromatics, and the Malbec intensifies color and spiciness. This is an aromatic wine. When decanting (which we suggest for our young red wines) the whole room fills with aromas of Bing cherry, clove and grilled brioche. A full and rich wine on the palate, flavors of huckleberry, cassis and vanilla carry through to a persistent finish." +Cliff Lede Stardust Heaven Cabernet Sauvignon 2013,"Stags Leap District, Napa Valley, California",Red Wine,98.0,"Stardust Heaven shows what great Stags Leap District Cabernet Sauvignon has to offer. Dark and inviting, with enticing, explosive aromas of warm slate, black currants, and cassis, along with black licorice, and pain grille, this Cabernet is a sensual experience from start to finish. Silky and plush tannins combine with crushed rock and mineral notes, classic of the Stags Leap District, to make this wine irresistible now, but patience will be rewarded with cellar aging over the next twenty years." +Clos d'Agon Emporda Tinto 2009,Spain,Red Wine,97.0,"The Celler Clos d'Agon was purchased by a group of friends from Switzerland in 1998, making a dream become reality for the new owners, all of whom are attached to the wine business either through distributing, retail sales or winery ownership. The winery itself is only 11 years old. Immediately hired was wizard winemaker, Peter Sisseck, to produce the first vintage of white and red, and who continues on as a consultant with winemaker, Susana Lopez. Excellent results are already evident; there is a complex, sophisticated white wine and a deeply concentrated, expressive red wine. " +Clos de l'Oratoire (Futures Pre-Sale) 2018,"St. Emilion, Bordeaux, France",Red Wine,97.0,"Clos de l'Oratoire is round, smooth, and very seductive. It has a beautiful deep crimson color and powerful fruity aromas. Merlot provides roundness and opulence, whereas Cabernet Franc contributes power, aromatic complexity, and a long aftertaste. Although Clos de l'Oratoire can be enjoyed seven years after the vintage, it is, above all, a wine with fine aging potential." +Clos de Sarpe 2008,"St. Emilion, Bordeaux, France",Red Wine,96.0,"Chateau Clos de Sarpe produced genuine Saint-Emilion wine, natural, straightforward, sincere, concentrated, tannic, complete and solid - an expression of the unerring truth of the land and the flexible truth of time. In the cellars, long and fiercely natural vinification results in pure authenticity. " +Clos de Sarpe 2011,"St. Emilion, Bordeaux, France",Red Wine,96.0,"Chateau Clos de Sarpe produced genuine Saint-Emilion wine, natural, straightforward, sincere, concentrated, tannic, complete and solid - an expression of the unerring truth of the land and the flexible truth of time. In the cellars, long and fiercely natural vinification results in pure authenticity. " +Clos des Papes Chateauneuf-du-Pape (1.5 Liter Magnum) 2003,"Chateauneuf-du-Pape, Rhone, France",Red Wine,97.0,#2 +Clos des Papes Chateauneuf-du-Pape (1.5 Liter Magnum) 2010,"Chateauneuf-du-Pape, Rhone, France",Red Wine,98.0, +Clos des Papes Chateauneuf-du-Pape 2003,"Chateauneuf-du-Pape, Rhone, France",Red Wine,97.0,#2 +Clos des Papes Chateauneuf-du-Pape 2007,"Chateauneuf-du-Pape, Rhone, France",Red Wine,97.0,"Bright, fresh, peppery, black raspberry, kirsch, garrigue and fennel scents open to a rich, sweet, spicy plum and black cherry jam filled wine this is still young. " +Clos des Papes Chateauneuf-du-Pape 2009,"Chateauneuf-du-Pape, Rhone, France",Red Wine,96.0,"As with many houses in the region, the cepage for the red wine at Clos des Papes is based on a majority of Grenache, with smaller quantities of Mourvedre and Syrah. The remainder of the blend consists of small amounts of some of the lesser-known varietals approved in the appellation, namely Muscardin, Counoise and Vacarese. The wines spend their infancy in tank and are then transferred to large foudres for an elevage which lasts approximately 14-15 months. " +Clos des Papes Chateauneuf-du-Pape 2016,"Chateauneuf-du-Pape, Rhone, France",Red Wine,97.0,"Blend: 60% Grenache, 30% Mourvèdre, 10% Syrah " +Clos du Caillou Chateauneuf-du-Pape Les Quartz 2001,"Chateauneuf-du-Pape, Rhone, France",Red Wine,99.0,"Blend: 85% Grenache, 15% Syrah" +Clos du Caillou Chateauneuf-du-Pape Reserve 2001,"Chateauneuf-du-Pape, Rhone, France",Red Wine,96.0,"The estate’s top blend, made from its oldest vines, from 60 to 80 years old, and only in the finest of vintages. Silky yet powerful, this wine should be aged for ten years or more to truly appreciate its multifaceted personality." +Clos du Caillou Chateauneuf-du-Pape Reserve 2007,"Chateauneuf-du-Pape, Rhone, France",Red Wine,98.0,"Of the three top Châteauneuf cuvées from this exacting estate, ""Reserve"" is its most seductive and certainly its most sought after, given how few bottles are produced (and only in the best years.) It gets its velvety texture and supple core from the sandy soils of the estate's two vineyards, ""Guigasse"" and ""Bédines,"" located just behind the estate's ""clos."" Its midnight-purple robe reminds us why this color historically was reserved for royalty. A wine that will practically strike you dumb with its concentrated core of black fruit; yes, you may have to lick the glass on this one. A blend of 70% Grenache and 30% Mourvèdre, aged in a combination of new and older demi-muid." +Clos du Caillou Chateauneuf-du-Pape Reserve 2009,"Chateauneuf-du-Pape, Rhone, France",Red Wine,97.0,"The nose, very fine, with the delicacy of spicy pepper. The mouth is elegant, classy, very complex with aromas of black fruit with pear and wild quince jam. This wine shows a very great length and worthy of a great wine for aging. " +Clos du Caillou Chateauneuf-du-Pape Reserve 2010,"Chateauneuf-du-Pape, Rhone, France",Red Wine,97.0,"This wine has a beautiful garnet red color. The nose has very elegant and complex aromas, where one discovers notes of balsamic, flint, black fruit dessert and wild plum. The palate is dominated by ripe fruit, rich and balanced with lots of freshness. It combines red fruit aromas, blood orange, peppermint, prunes, licorice and blueberry coulis." +Clos du Caillou Chateauneuf-du-Pape Reserve 2011,"Chateauneuf-du-Pape, Rhone, France",Red Wine,96.0,"This wine has a beautiful garnet red color. The nose has very elegant and complex aromas, where one discovers notes of balsamic, flint, black fruit dessert and wild plum. The palate is dominated by ripe fruit, rich and balanced with lots of freshness. It combines red fruit aromas, blood orange, peppermint, prunes, licorice and blueberry coulis. " +Clos du Mont Olivet Chateauneuf-du-Pape Cuvee Papet (1.5 Liter Magnum) 2007,"Chateauneuf-du-Pape, Rhone, France",Red Wine,96.0,"The 2007 Chateauneuf du Pape La Cuvee du Papet may will turn out to be their finest example since the 1998 and 1990. Stylistically, it probably comes closest to resembling the legendary 1990. Notes of roasted meats and smoked duck, with Provencal herbs, truffle, incense, licorice, and pepper, are all there, plus enormous quantities of red and black fruits. This is one heck of a complex wine, with a bouquet that is the essence of southern France, in particular Provence. Full-bodied, powerful, with the glycerin and level of richness covering some lofty tannins, this wine is already accessible and nearly impossible to resist, but my instincts suggest it will be absolutely glorious in another 4-5 years and keep for 15-20. " +Clos du Mont Olivet Chateauneuf-du-Pape Cuvee Papet 2007,"Chateauneuf-du-Pape, Rhone, France",Red Wine,96.0,"Here's an incredibly rare cuvee from Clos du Mont Olivet, one of Chateauneuf-du-Pape's finest traditional producers. The blend is dominated by very old-vine (80+ year) Grenache from the original ""Clos"" for which the domaine is named. Only 50 cases were imported to the western US." +Clos Figueres Priorat 2005,"Priorat, Spain",Red Wine,96.0,"""This flavorful effort should drink well through 2020. The 2005 Clos Figueres, a blend of Garnacha, Carinena, Syrah, and Mourvedre, is opaque purple-colored. It delivers a complex and expressive perfume of smoky oak, pencil lead, mineral, spice box, black cherry, blueberry, and black raspberry. This leads to a dense, opulent wine that still manages to retain some elegance. Ripe and sweet, this hedonistic effort should evolve for 3-5 years and drink well through 2025.Clos Figueres was purchased in 1997 by importer Christopher Cannan on the advice of Rene Barbier. The older Carignan and Grenache vines, planted for the original Clos Figueres estate, are used for the Clos Figueres bottling while the newer vineyards planted in 1998 are used for Font de la Figuera. Rene Barbier's team handles the viticulture and winemaking.""" +Clos Fourtet (1.5 Liter Futures Pre-Sale) 2019,"St. Emilion, Bordeaux, France",Red Wine,97.0,"Blend: 90% Merlot, 7% Cabernet Sauvignon, 3% Cabernet Franc" +Clos Fourtet (Futures Pre-Sale) 2019,"St. Emilion, Bordeaux, France",Red Wine,97.0,"Blend: 90% Merlot, 7% Cabernet Sauvignon, 3% Cabernet Franc" +Clos Mogador Com Tu by Rene Barbier 2016,"Montsant, Spain",Red Wine,96.0,"Garnacha grapes from La Figuera produces wines with a unique color range, tender and fluid; with a fresh aroma, of flowers, orange peel, incense, as well as wide range of whitefruit, citrus, very fresh. Its high alcohol content together with its extraordinary acidity,helps the wine to age perfectly.In palate it’s soft, with harmony but the taste development goes in crescendo, and itleaves us with an exceptional post-taste. This wine amazes us and fills us with vitality." +Clos Mogador Priorat 2001,"Priorat, Spain",Red Wine,97.0,"The wine shows an opaque black, purple colour and an intense complex bouquet of ripe fruit, wild herbs, toasted bread, spices and smoke. The palate is massive and well balanced with a fat richness, a dense structure of velvety tannins and a powerful, lively acidity. Flavours of cristalised fruit, pepper, chocolate, coffee and a whole panapoly of spices and herbs. On the long finish there are the unique mineral tones that make Priorat so special." +Clos Mogador Priorat 2005,"Priorat, Spain",Red Wine,98.0,"""The 2005 Clos Mogador is the first wine in Spain entitled to the new classification of ""Vi de finca Qualificada"". The estate is 20 hectares composing a single vineyard. The Garnacha wines are 80+ years of age while the other varieties (Carinena, Cabernet Sauvignon, Syrah) have been planted since the early 1980s. Average yields are under 10 hectoliters per hectare and only 2000 cases are produced. The winery has never purchased outside fruit. The wine is deep purple-colored with a superb bouquet of toasty oak, pencil lead, mineral, blackberry and black cherry. This leads to an opulent, dense, packed, structured wine with 6-8 years of aging potential. Super-concentrated, sweetly-fruited, and complex, this tour de force of a wine will drink well from 2012 to 2040.""" +Clos Mogador Priorat 2007,"Priorat, Spain",Red Wine,96.0,"The wine shows an opaque black, purple color and an intense complex bouquet of ripe fruit, wild herbs, toasted bread, spices and smoke. The palate is massive and well balanced with a fat richness, a dense structure of velvety tannins and a powerful, lively acidity. Flavours of cristalised fruit, pepper, chocolate, coffee and a whole panapoly of spices and herbs. On the long finish there are the unique mineral tones that make Priorat so special." +Clos Saint-Jean Deus Ex Machina Chateauneuf-du-Pape (1.5 Liter Magnum) 2012,"Chateauneuf-du-Pape, Rhone, France",Red Wine,96.0,"""God from the machine"" which is the literal translation of the Latin expression ""Deus Ex Machina"". In other words, divine intervention which radically modified the course of things. In the universe of theatre, ""Deus Ex Machina"" translates into an unexpected turn of events thanks to an external event that nothing foreshadowed. At Clos Saint-Jean, the name of this cuvee symbolizes the unexpected changing of course that has been enacted at Clos Saint-Jean since 2003. " +Clos Saint-Jean Deus Ex Machina Chateauneuf-du-Pape 2005,"Chateauneuf-du-Pape, Rhone, France",Red Wine,96.0,"""God from the machine"" which is the literal translation of the Latin expression ""Deus Ex Machina"". In other words, divine intervention which radically modified the course of things. In the universe of theatre, ""Deus Ex Machina"" translates into an unexpected turn of events thanks to an external event that nothing foreshadowed. At Clos Saint-Jean, the name of this cuvee symbolizes the unexpected changing of course that has been enacted at Clos Saint-Jean since 2003. " +Clos Saint-Jean Deus Ex Machina Chateauneuf-du-Pape 2008,"Chateauneuf-du-Pape, Rhone, France",Red Wine,96.0,"""God from the machine"" which is the literal translation of the Latin expression ""Deus Ex Machina"". In other words, divine intervention which radically modified the course of things. In the universe of theatre, ""Deus Ex Machina"" translates into an unexpected turn of events thanks to an external event that nothing foreshadowed. At Clos Saint-Jean, the name of this cuvee symbolizes the unexpected changing of course that has been enacted at Clos Saint-Jean since 2003." +Clos Saint-Jean Deus Ex Machina Chateauneuf-du-Pape 2012,"Chateauneuf-du-Pape, Rhone, France",Red Wine,96.0,"""God from the machine"" which is the literal translation of the Latin expression ""Deus Ex Machina"". In other words, divine intervention which radically modified the course of things. In the universe of theatre, ""Deus Ex Machina"" translates into an unexpected turn of events thanks to an external event that nothing foreshadowed. At Clos Saint-Jean, the name of this cuvee symbolizes the unexpected changing of course that has been enacted at Clos Saint-Jean since 2003. " +Clos Saint-Jean Deus Ex Machina Chateauneuf-du-Pape 2017,"Chateauneuf-du-Pape, Rhone, France",Red Wine,98.0,"Deus ex Machina is a literary and dramatic term for a miraculous intervention that interrupts a logical course of events in a plot or play. A suitable name for a cuvée that had it’s start in the torrid vintage of 2003 when Philippe Cambie and Vincent Maurel made the decision to harvest at the end of September, weeks after their neighbors. Deus ex Machina is a blend of old vine Grenache from La Crau, aged in tank with equally ancient Mourvedre from the sandy soils of Bois-Dauphin aged in demi-muid." +Clos Saint-Jean La Combe des Fous Chateauneuf-du-Pape 2012,"Chateauneuf-du-Pape, Rhone, France",Red Wine,96.0,"Clos Saint Jean produces a total of five different red Chateauneuf du Pape wines and one Chateauneuf du Pape Blanc. The estate believes in complete destemming, long macerations and while Grenache is not aged in wood, other varietals are aged in one year old, French oak barrels. " +Clos Saint-Jean La Combe des Fous Chateauneuf-du-Pape 2017,"Chateauneuf-du-Pape, Rhone, France",Red Wine,97.0,"Combe des Fous literally means, the hill of the fool. The hill, in this case, is located in the far southern reach of Le Crau which was left barren for many centuries because the layer of galets was so exceedingly deep that everyone assumed vines could never survive there. The fool in this situation is Edmund Tacussel, the great-great-grandfather of Vincent and Pascal Maruel who planted a Grenache vineyard on this site in 1905. That old-vine Grenache form the heart of this cuvée with a small amount of Syrah, Cinsault and Vaccarèse." +Clos Saint-Jean Sanctus Sanctorum (1.5 Liter Magnum) 2012,"Chateauneuf-du-Pape, Rhone, France",Red Wine,97.0,"Clos Saint Jean produces a total of five different red Chateauneuf du Pape wines and one Chateauneuf du Pape Blanc. The estate believes in complete destemming, long macerations and while Grenache is not aged in wood, other varietals are aged in one year old, French oak barrels. " +Clos Saint-Jean Sanctus Sanctorum (1.5 Liter Magnum) 2015,"Chateauneuf-du-Pape, Rhone, France",Red Wine,97.0,Sanctus Sanctorum is only made in the best vintages and is comprised of the oldest vines of Grenache (well over 100 years old) in Le Crau. It is aged entirely in demi-muid and bottled in magnum. +Clos Saint-Jean Sanctus Sanctorum (1.5 Liter Magnum) 2017,"Chateauneuf-du-Pape, Rhone, France",Red Wine,96.0,Sanctus Sanctorum is only made in the best vintages and is comprised of the oldest vines of Grenache (well over 100 years old) in Le Crau. It is aged entirely in demi-muid and bottled in magnum. +Clos Solene Hommage a nos Pairs Reserve 2012,"Paso Robles, Central Coast, California",Red Wine,96.0,"This wine is a blend of fruit from Russell Family Vineyards (80%) and l’Aventure (20%) on the west side of Paso Robles, where the soil is 100% calcareous with almost no topsoil. Tight spacing between rows forces the vines to compete for nutrients, yielding the intensely flavored fruit used to make this elegant wine. Made by hand using gravity feed, this wine was fermented and aged for fifteen months in mostly new French oak. " +Closa Batllet 2001,"Priorat, Spain",Red Wine,96.0,"From vineyards up to 90 years old, this is the ultimate expression of the soil. The coupage of the four grape varieties (mainly cariñena) and the diverse locations of the vineyards lend the wine a great complexity, structure and intensity. Authentic Priorat character." +Colgin Cariad 2004,"Napa Valley, California",Red Wine,96.0,"Cariad, the Welsh word for ""love,"" is a Bordeaux-style red wine blended from three outstanding vineyards owned and managed by David Abreu. Cabernet Sauvignon, Merlot, and Cabernet Franc from Madrona Ranch are blended with small amounts of fruit from Thorevilos and Howell Mountain, producing a wine of enormous proportions with a classic structure that is the Colgin hallmark: a plethora of vibrant aromas, voluptuous at mid-palate, with impeccable balance and an exceptionally long finish. A wine as seductive as its name." +Colgin Cariad 2014,"Napa Valley, California",Red Wine,96.0,"Cariad, the Welsh word for “love”, is a Bordeaux-style red wine blended from three outstanding vineyards owned and managed by David Abreu. Cabernet Sauvignon, Merlot, and Cabernet Franc from Madrona Ranch are blended with small amounts of fruit from Thorevilos and Howell Mountain, producing a wine of enormous proportions with a classic structure that is the Colgin hallmark: a plethora of vibrant aromas, voluptuous at mid-palate, with impeccable balance and an exceptionally long finish. A wine as seductive as its name." +Colgin Cariad 2016,"Napa Valley, California",Red Wine,96.0,"Cariad, the Welsh word for “love”, is a Bordeaux-style red wine blended from three outstanding vineyards owned and managed by David Abreu. Cabernet Sauvignon, Merlot, and Cabernet Franc from Madrona Ranch are blended with small amounts of fruit from Thorevilos and Howell Mountain, producing a wine of enormous proportions with a classic structure that is the Colgin hallmark: a plethora of vibrant aromas, voluptuous at mid-palate, with impeccable balance and an exceptionally long finish. A wine as seductive as its name. " +Colgin Herb Lamb Vineyard Cabernet Sauvignon 1994,"Howell Mountain, Napa Valley, California",Red Wine,96.0,Style: Elegance on the grand scale +Colgin Herb Lamb Vineyard Cabernet Sauvignon 2006,"Howell Mountain, Napa Valley, California",Red Wine,96.0,"The 2006 Herb Lamb vineyard Cabernet Sauvignon has a dark, brooding nose of licorice, savory meats and blue fruits. Subtle nuances of toffee and orange zest flirt in and out of the nose. This wine has a broad entry, with full bodied tannins that are both fine grained and beautifully layered, a classic signature to this vintage. At release, this wine is just a baby, so a minimum of 5 years aging is recommended, yet the wine will last for 20 or more years. " +Colgin Herb Lamb Vineyard Cabernet Sauvignon 2007,"Howell Mountain, Napa Valley, California",Red Wine,96.0,"The 2007 Herb Lamb vineyard Cabernet Sauvignon has an intense nose of licorice, chocolate mint and cassis. Nuances of forest floor and loamy earth bring terroir and character to the wine. On the palate, the tannins have a lovely coating quality, but are structured for long aging. The 2007 has perhaps the most silky tannins we've experienced at this stage in the wine's youth. Given the classic quality of the vintage, the wine will age for 20 to 30 years. We recommend a minimum of 5 years of cellaring to fully appreciate the wine." +Colgin IX Estate Red 2003,"Napa Valley, California",Red Wine,96.0,"The 2003 IX Estate gives new meaning to the word intense! Each component of this cuvee is deeply pitched in both color and aromatics. Perfectly composed and brilliantly defined are the aromatics of fresh red berries, black licorice and ripe black cherries. Across the palate, the mouthfeel is pure richness framed by ripe, supple tannins with a fine acid structure. After nineteen months of barrel aging in 100% new French oak, the wine was racked just once before bottling without fining or filtration. The full bodied tannin of the 2003 IX Estate Red Wine ensure its ability to age gracefully for two decades, while its freshness and complexity make it a beautiful wine to drink near term." +Colgin IX Estate Red 2007,"Napa Valley, California",Red Wine,97.0,"The 2007 IX Estate Red is a strikingly deep ruby color and the nose a concentrated elixir of all the wonderful aromatics I love about IX Estate. In 2007, the flavors of the terroir are more dominant than ever. This vintage just has more of everything it seems. Terroir driven flavors of crushed rock, wet graphite, bay leaf and barbecue rub saturate the wine. Aromas of grilled meats, fennel seed, and a lift of black licorice bring seduction to the nose. With a sip, the pliant, silky tannins melt over the palate. The 2007 is dense to the core in every way, but at the same time it is open, expressive and alluring. It will drink well near term with its supple, rich tannins, but patience will be greatly rewarded, as the structure and natural acidity beneath will allow the wine to age 30 years or more. " +Colgin IX Estate Red 2008,"Napa Valley, California",Red Wine,96.0,"The 2008 IX Estate Red Wine is all about the aromas of the terroir. The 2008 vintage across the board has resulted in wines that first and foremost reflect their sense of place. The nose of the IX Estate is pure crushed rocks, clay and minerals at first, and with air the savory aromas of musk and bay leaf come through. Decadent notes of black licorice, black cherry and cassis bring succulence to the nose. The wine is silky soft up front on the palate, but then develops into deliciously layered tannins. " +Colgin IX Estate Red 2016,"Napa Valley, California",Red Wine,97.0,"A blend of Cabernet Sauvignon, Merlot, Cabernet Franc and Petit Verdot, IX Estate Red is distinguished by complex fruit interplays, a luscious nose of rustic herbs, iron, clay and black fruits, huge layers of flavor and supple, sweet tannins impeccably well-balanced. The number IX refers to the parcel number and is also significant as the date Ann and Joe were married: 9/9. The 2002 vintage was the first, of four vintages, from this property to achieve the highest accolade of “a perfect wine”. Each year the blend displays extraordinary intensity, a beautiful purity, and a remarkably long finish. Approachable when young, it ages most gracefully." +Colgin IX Estate Syrah 2004,"Napa Valley, California",Red Wine,96.0,"The 2004 Syrah will astound you with its overall expression of Rhone meets Colgin. Syrah generally invokes all sorts of complex secondary aromatics unlike any other grape varietal. The wine possesses the Colgin hallmark of saturated black color and fresh uplifting aromatics of tobacco leaf, white and black pepper. This Syrah expresses its characteristics in a multidimensional manner with primary fruit aromatics moving to terroir driven earth, rock and organic aromas. The overall tannin structure and mouth feel are plush and suave. As with all of the wines produced by Colgin Cellars, our most important goal is to accentuate the elusive terroir. This Syrah continually evolves in the glass and is beautiful near term, will gain complexity with time and has the balance and structure to age for two decades." +Colgin Tychson Hill Vineyard Cabernet Sauvignon 2005,"St. Helena, Napa Valley, California",Red Wine,96.0,"My first impression of this wine at the time of release is how surprisingly demure it is at first. I know how much power is at the core of the wine, and so I find it fantastically seductive the way it pulls you in to explore its depths. At first it exhibits dark undertones of smoked cayenne, musk, and ripe plums, yet as it is exposed to air in the glass it slowly unfolds and expresses compelling organic aromas of peat, nutmeg, and savory grilled steak juices. The wine is incredibly soft and silky on the front of the palate, and gains an amazing amount of weight as it glides to the back. The texture is delicious and draws you back so easily with its elegant, lingering finish. Given the nature of the wines self expression at this time, I recommend 3 years of cellar age, and with that you will be handsomely rewarded. With the freshness of the acidity and the coating texture to the tannin, I anticipate a long lived bottle age of 20 or more year." +Colgin Tychson Hill Vineyard Cabernet Sauvignon 2014,"Napa Valley, California",Red Wine,98.0,"From an exceptional site that imparts earthy, ethereal notes of power and elegance, this signature cabernet reveals intense, deep layers of crème de cassis, barbecue smoke, graphite, blackberry and freshly cut flowers that excite the palate. Incredibly long and round, it is our rarest wine, the 2002 vintage achieving our first perfect score as “a wine of enormous concentration, multiple dimensions, layers of flavor, and a sensational one minute plus finish. Its purity, harmony and symmetry are prodigious.”" +Colgin Tychson Hill Vineyard Cabernet Sauvignon 2016,"Napa Valley, California",Red Wine,96.0,"From an exceptional site that imparts earthy, ethereal notes of power and elegance, this signature cabernet reveals intense, deep layers of crème de cassis, barbecue smoke, graphite, blackberry and freshly cut flowers that excite the palate. Incredibly long and round, it is our rarest wine, the 2002 vintage achieving our first perfect score as “a wine of enormous concentration, multiple dimensions, layers of flavor, and a sensational one minute plus finish. Its purity, harmony and symmetry are prodigious.”" +Comando G Tumba del Rey Moro 2012,Spain,Red Wine,97.0,Tumba del Rey Moro is an absurd vineyard. It has all the appearance of the aftermath of an ancient landslide with several small natural terraces irregularly planted with vines. Until a few years ago the site was nearly inaccessible and overgrown with scrub brush. Yet when Dani and Fernando heard rumor of this plot they spent several months trying to locate it and clear a path so they could farm it. Here you can find a similar granitic sandy soil to their other sites but with more pink than grey granite as well as more quartz. Like its siblings it is pale in color but tasting it makes you wonder if this is what Marcel Lapierre could have done at Chateau Rays had he the chance. +Comte Armand Pommard Clos des Epeneaux Premier Cru Monopole 2005,"Pommard, Cote de Beaune, Cote d'Or, Burgundy, France",Red Wine,96.0,"Steeming from a ""terroir"" located at the bottom of the hill, on a brown, limestone ground, very poor and stony on the surface, with a layer of hard rocks underneath. This wine is heavy and deep, with a structure and great finesse and to be kept : ten to fifteen years for age. " +Conn Creek Stagecoach Vineyard Cabernet Sauvignon 2007,"Napa Valley, California",Red Wine,96.0,"Rich and generous, with aromas of fresh ripe berries, cream, and oak. A cacophony of berry flavors, notes of toffee and crème brulee, and fine grained tannins entice on the palate. Seductive and elegant, this well-proportioned wine builds to an impressive finish that guarantees pleasure for years to come." +Conterno Fantino Barolo Sori Ginestra 2004,"Barolo, Piedmont, Italy",Red Wine,96.0,"Deep garnet with ruby hues, with a rich, fruity and persistent bouquet of rose petals, brushwood and berries this wine is full bodied, luscious, and austere on the palate. " +Conti Costanti Brunello di Montalcino Riserva (1.5 Liter Magnum) 2012,"Montalcino, Tuscany, Italy",Red Wine,97.0,"Deep ruby red with aromas of plums, smoke, and coffee. Graceful tannins and a beautiful finish. This wine is complex and austere. This wine is complex and will undoubtedly benefit from further bottle age, peaking in 5-10 years’ time. Top vintages will also have top longevity." +Conti Costanti Brunello di Montalcino Riserva 2012,"Montalcino, Tuscany, Italy",Red Wine,97.0,"Deep ruby red with aromas of plums, smoke, and coffee. Graceful tannins and a beautiful finish. This wine is complex and austere. This wine is complex and will undoubtedly benefit from further bottle age, peaking in 5-10 years’ time. Top vintages will also have top longevity." +Continuum (1.5 Liter Magnum) 2007,"Napa Valley, California",Red Wine,97.0,"The 2007 Continuum is a richly aromatic wine showing great balance and finesse on the palate. A unique blend, Continuum expresses the nerve and power of the Cabernet Sauvignon, the structure and exotic aromas of the Cabernet Franc and the depth and density of color of the Petit Verdot. The 2007 blend manifests this in firm yet supple tannins, a generous mid-palate with a long, nuanced finish making for a very textural, silky wine. Aromas of black currant, mulberry, and rose petal lead to cardamom, truffle and graphite flavors. A wine of exquisite power and elegance, the harmonious integration and balance make it delicious now, while assuring tremendous ageabilty. " +Continuum (1.5 Liter Magnum) 2015,"Napa Valley, California",Red Wine,97.0,"The dark, rich core of the 2015 Continuum has aromas of cacao, black currant, cardamom and savory wild herb. On the palate it is layered and supple, revealing black cherry and roast espresso notes intertwined with mountain minerals and a hint of tangy orange spice. The wine is lush with ripe chocolaty tannins that lead to a long, expressive finish. 2015, though small in volume, is amighty vintage for Continuum; one to savor today or age and appreciate for decades to come." +Continuum 2015,"Napa Valley, California",Red Wine,96.0,"The dark, rich core of the 2015 Continuum has aromas of cacao, black currant, cardamom and savory wild herb. On the palate it is layered and supple, revealing black cherry and roast espresso notes intertwined with mountain minerals and a hint of tangy orange spice. The wine is lush with ripe chocolaty tannins that lead to a long, expressive finish. 2015, though small in volume, is amighty vintage for Continuum; one to savor today or age and appreciate for decades to come." +Continuum 2017,"Napa Valley, California",Red Wine,97.0,"2017 was a vintage of extremes, with abundant rain in the winter months and record-breaking heat waves during the growing season. A testament in resiliency, the wine bears the hallmarks of the elevation and terroir at Sage Mountain Vineyard, showcasing exquisite vibrancy, many layers of flavor, ferrous minerality and fragrant wild herb notes. 2017 Continuum shows freshness, hinting at rose petal on the nose with cacao, black cherry and plum giving way to a plush, silky mid palate. Fine tannins of crushed stone and subtle undertones of tapenade are present through a beautifully persistent finish. " +Continuum (signed) 2007,"Napa Valley, California",Red Wine,97.0,"The 2007 Continuum is a richly aromatic wine showing great balance and finesseon the palate. A unique blend, Continuum expresses the nerve and power of the Cabernet Sauvignon,the structure and exotic aromas of the Cabernet Franc and the depth and density of color of the PetitVerdot. The 2007 blend manifests this in firm yet supple tannins, a generous mid-palate with a long,nuanced finish making for a very textural, silky wine. Aromas of black currant, mulberry, and rosepetal lead to cardamom, truffle and graphite flavors. A wine of exquisite power and elegance, theharmonious integration and balance make it delicious now, while assuring tremendous ageabilty." +Corison Kronos Vineyard Cabernet Sauvignon 2013,"Napa Valley, California",Red Wine,96.0,"Wow. This inky wine jumps out of the glass with ripe boysenberries and floral perfume. 2013 was a near-perfect vintage with ideal spring weather for flowering, which resulted in a bumper crop of deliciousness. With highs seldom climbing out of the 80F’s and chilly nighttime lows, an unseasonably cool summer gave the wine its firm structure. Lush ripe red fruit with balancing natural acidity complement the characteristic Kronos viscosity. The tannins are assertive but feel like velvet." +Corra Winery Cabernet Sauvignon 2007,"Napa Valley, California",Red Wine,96.0,"The 2007 Corra Cabernet Sauvignon displays provocative aromas of spiced raspberry and ripe blackberry, sweet tea, vanilla, cinnamon and sage notes, intermixed with a touch of cocoa/mocha adding depth to the gloriously sweet fruit. On the palate, this multi-dimensional wine offers a full, luscious entry with impressive concentration, displaying all the ripe blackberry and cherry intensity that is characteristic of the 2007 vintage. The mid-palate is full, rich, and opulent, supported by a harmonious tannin profile that is structural as well as silky. The juicy fruit flavors are pure and vibrant, with dark cherry notes that linger on the seductive finish." +Coup de Foudre Cabernet Sauvignon 2004,"Napa Valley, California",Red Wine,98.0,This first vintage of Coup de Foudre will pleasure your palate in a multi-dimensional manner. +Cristiano Van Zeller Quinta Do Vale D. Maria Vinho Tinto 2009,Portugal,Red Wine,96.0,"Quinta Vale D. Maria Douro Reds are incredibly deep in color, violet, dark red and purple, have a tremendous concentration of mature dark red fruit aromas, with a very typical predominance and blackberries, black cherries and plums. The aging in cask is concentrating the original mature tannins of the wine and has smoothened its power, originating very powerful, though very elegant wines with great balance and finesse and a very long and fruity finish." +Cristom Marjorie Vineyard Pinot Noir 2014,"Eola-Amity Hills, Willamette Valley, Oregon",Red Wine,96.0,"Marjorie Vineyard can be the brightest and most red-fruit driven of their four estate Pinot Noirs, often supported by a layered and textured structure. The first of the ""Four Ladies"" to be sold out, Marjorie has achieved a rightfully earned cult status, consistently generating some of Cristom’s best fruit." +Cullen Vanya Cabernet Sauvignon 2012,"Margaret River, Western Australia, Australia",Red Wine,97.0,"Very rarely a vintage occurs which presents us with a unique opportunity to create something truly special. The 2012 vintage was an exceptional year, and allowed us the privilege to produce an extraordinary wine. This wine of the 2012 vintage is a tribute to the land and the vines it came from. Pure expression of a great year. No additions of yeast, acid, malolactic culture, fining or filtration. The wines grown on these ancient soils are certified biodynamic, carbon neutral and powered naturally by solar power." +Cuvee du Vatican Chateauneuf-du-Pape Reserve Sixtine 2003,"Chateauneuf-du-Pape, Rhone, France",Red Wine,96.0,"""The brilliant 2003 Chateauneuf du Pape Reserve Sixtine is a blend of 50% Grenache, 30% Syrah, 10% Mourvedre, and the rest various red varietals. Aged in both barrel (30% new) and foudre, it represents approximately one-fourth of the vintage's production, or roughly 2,000 cases. Yields averaged 17-25 hectoliters per hectare. The 2003 is an atypically powerful, concentrated effort that tips the scales at 15.7% alcohol. It boasts a dense purple color as well as copious quantities of black raspberries, cherries, cassis, licorice, smoke, scorched earth, and hints of Provencal herbs as well as subtle wood. This broad, substantial, powerful effort possesses fabulous concentration and awesome potential. It will not be one of the 2003 Chateauneuf du Papes to drink in its youth. Even though it has low acidity, there is tremendous tannin as well as extract. Give it 4-5 years of cellaring; it should keep for 16-18 years.""" +Dal Forno Romano Amarone della Valpolicella 2004,"Valpolicella, Veneto, Italy",Red Wine,96.0,"Corvina (60%), with Rondinella (20%), Oseleta (10%) and Croatina (10%)." +Dal Forno Romano Monte Lodoletta Amarone della Valpolicella 2013,"Valpolicella, Veneto, Italy",Red Wine,98.0,"The Dal Forno family has been making wine since 1983. Located in Val D’Illasi, the estate consists of 65 acres of vines planted to traditional indigenous varieties of Corvina, Corvinone, Rondinella, Oseleta and Croatina. The estate vineyards and farm are located where the slopes begin to rise toward the mountains and sit 1,000 feet above sea level. The loose, alluvial soils, meticulous pruning and scrupulous viticultural techniques ensure remarkable-quality grapes. The Dal Fornos use traditional methods to grow the finest fruit, and then employ modern techniques to produce the best wines — classic in expression and modern in purity. " +D'Alfonso-Curran White Hills Vineyard Chardonnay 2013,"Sta. Rita Hills, Santa Barbara, Central Coast, California",White Wine,96.0,"Apricots, butterscotch, honey, hints of melon and toasted bread with butter, seamlessly integrated oak flavors." +Dalla Valle Maya Proprietary Red Blend 1990,"Oakville, Napa Valley, California",Red Wine,96.0,"This jewel in the crown originates in the remarkable vineyard that shares its name. A proprietary blend aged in primarily new French oak, Maya showcases the site’s exceptional Cabernet Franc; it is graceful and alluring with an unmistakable pedigree. Fewer than 500 cases are produced each year." +Dalla Valle Maya Proprietary Red Blend 1994,"Napa Valley, California",Red Wine,99.0,"Dense garnet to violet, viscous mouth feel. Bright ripe fruit, beautiful floral and intense dark fruit aromas that are expansive in the mouth and evocative of sweet violets, raspberries, blackberries and some woodsy notes. The wine is rich and dense with an excellent balance of black fruit to tannins. Completely balanced. Overall impression is of lots of fruit and lots of tannins with lots of layers and depths. Unified and seamless, elixir like. " +Dalla Valle Maya Proprietary Red Blend 2001,"Oakville, Napa Valley, California",Red Wine,98.0,"This jewel in the crown originates in the remarkable vineyard that shares its name. A proprietary blend aged in primarily new French oak, Maya showcases the site's exceptional Cabernet Franc; it is graceful and alluring with an unmistakable pedigree. Fewer than 500 cases are produced each year." +Dalla Valle Maya Proprietary Red Blend 2007,"Oakville, Napa Valley, California",Red Wine,97.0,"This is a powerhouse of a wine, packed with fruit and with an aromatic expression that excites the senses. From the minute the cork is pulled, notes of chocolate, smoke, camphor, and ripe delicious fruit fill the room. In spite of the wine’s considerable density, the intense flavors arrive with a freshness and balance that is remarkable. There is great complexity of flavor, and a firm structure, with notes of blackberry, cassis and graphite coming from the Cabernet Sauvignon, and the Cabernet Franc adding elements of crushed stones and anise. This wine, from a phenomenal vintage, should age for a long time to come. In 20 years it should just becoming into its own." +Dalla Valle Maya Proprietary Red Blend 2010,"Napa Valley, California",Red Wine,98.0,"This jewel in the crown originates in the remarkable vineyard that shares its name. A proprietary blend aged in primarily new French oak, Maya showcases the site's exceptional Cabernet Franc; it is graceful and alluring with an unmistakable pedigree. Fewer than 500 cases are produced each year." +Dalla Valle Maya Proprietary Red Blend 2015,"Oakville, Napa Valley, California",Red Wine,98.0,"The 2015 Maya shows the great potential of the vintage. Its red-purple hue belies the wine’s brightness and fresh aromatic quality, with tones of fresh-cut strawberry, cardamom, and flint. This blend of Cabernet Sauvignon and Cabernet Franc exhibits a combination of depth, richness, and laser-like focus, delivering a rush of red and black fruit flavors, along with notes of cured meats and salted black licorice. The texture is soft and silky, but at the same time powerful and incredibly lengthy. This vintage of Maya is accessible today, but will absolutely continue to develop, and will last decades in the bottle." +Dalla Valle Maya Proprietary Red Blend (6 Liter Bottle) 1997,"Oakville, Napa Valley, California",Red Wine,99.0,"More refined on the nose, the flavors of blackcurrant, cedar, espresso beans and rich cream are delicate and complex. The wine still has all its youth with great purity and focus; it is layered with aromas of cider, black fruits and spice box and oak finishing with ripe and muscular tannins. For full expression, it will need to be decanted half hour before pouring." +Dalla Valle Maya Proprietary Red Blend (scuffed label) 1997,"Napa Valley, California",Red Wine,99.0,"Pure Maya! Sweet, ripe fruit and a full, round mouth feel. Big massive, muscular wine and still a bit closed. Pronounced fruit with mineral components. The wine is austere and has lots of sophistication. Less acid, more oak, and excellent tannin management." +Dana Estates Helms Vineyard Cabernet Sauvignon 2007,"Napa Valley, California",Red Wine,96.0,"Dark red color. Aromatic notes of wild black cherries, cedar and dried tobacco. The palate is seamless, with vibrant concentrated dark fruits expressing youth and energy, offset with a beautiful minerality. The tannins are round and integrated." +Dana Estates Hershey Vineyard Cabernet Sauvignon 2012,"Napa Valley, California",Red Wine,98.0,"Dark fruit and baking spices spring from the glass. The palate is dominated by ripe black and red fruit, intense minerality and a tannin profile that is pure unadulterated Hershey, the purest form of Howell Mountain. The slightest chalk and ash notes layered with fruit, anise and forest abound in the finish. Best enjoyed 2017 through 2030." +Dana Estates Hershey Vineyard Cabernet Sauvignon 2016,"Howell Mountain, Napa Valley, California",Red Wine,98.0,"The 2016 Hershey exhibits the complexity and minerality that define this mountain vineyard. The wine opens with notes of red currant, blackberries, mingled with notes of espresso, bitter orange zest and dried herbs. The rich mountain tannins frame a creamy entry onto the palate. The wine builds across the palate with flavors of plums, currants, and bitter chocolate that meld with hints of sage, forest floor and an intriguing salinity. The vibrancy makes the wine enticing now, thought it will age gracefully through 2036." +Dana Estates Lotus Estate Cabernet Sauvignon 2007,"Napa Valley, California",Red Wine,96.0,"One can't say enough about what proprietor Hi Sang Lee and his son, both from Seoul, Korea, have accomplished at what used to be called the Livingston-Moffett Estate in Rutherford. They have dramatically transformed that estate into their Helms Vineyard, to which they have added the Lotus Vineyard from the St. Helena hillsides and the Hershey Vineyard on Howell Mountain. The consulting winemaker is Philippe Melka, and as the following notes attest, their 2007s are off the charts. Moreover, the 2008s look strong, although there is no Howell Mountain Cabernet since that vineyard was completely wiped out because of spring frosts." +Dana Estates Lotus Vineyard Cabernet Sauvignon 2016,"Napa Valley, California",Red Wine,99.0,"The 2016 Lotus displays aromas of black cherry, berry compote, wet stone, and wet earth. The wine is full bodied with a creamy texture. It captures the essence of Lotus Vineyard in its firm structure and concentration while retaining vibrancy and balance. Classic black fruits and warm spice flavors coat the palate mingling with hints of dried herbs and a firm structured finish. Enjoy 2020 through 2038 and beyond." +d'Arenberg The Dead Arm Shiraz 2001,"McLaren Vale, South Australia, Australia",Red Wine,98.0,"Upon release d'Arenberg's The Dead Arm Shiraz has a vivid young deep brick-red colour. The nose shows intense and complex cedary, fig, blackberry and blueberry like smells occasionally pepper/spice smells too. Vanilla mocha oak smells and attacking blackberry, cassis characters are also evident on the palate. Full, intense sweet, cedary middle palate flavours have a distinctly silky, svelte texture deceptively disguise the rich powerful cassis and toffee-mocha flavours. The accent is on powerful full bodied berry fruit flavour, with a little sweet English toffee like oak evident on the juicy, rolling finish." +Dashe Todd Brothers Ranch Old Vines Zinfandel 2006,"Alexander Valley, Sonoma County, California",Red Wine,96.0,"Intense black currant, blackberry, chocolate, anise, and roasted coffee on the nose. This wine is lush and balanced, with complex flavors of blackberry, black raspberry and cassis fruit, followed by chocolate, coffee, and clove spice. Sweet, intense, complex finish. " +Dashe Todd Brothers Ranch Zinfandel 2006,"Sonoma County, California",Red Wine,96.0,"The wine was aged for 12 months in 18% new French oak and the remaining 82% in older oak barrels. Every three months we racked the wine out of barrel to clarify the wine and aid in its development. Although we added just a bit of Petite Syrah from the vineyard when ""topping"" the barrels, we decided the wine was perfect as it was when we were having our blending trials. Therefore, no additional lots were blended in, resulting in a wine that was 100% from the Todd Brothers Ranch, and 99% Zinfandel. We feel this wine should easily improve with ten or more years of bottle age. " +De Lisio Krystina Shiraz 2004,"McLaren Vale, South Australia, Australia",Red Wine,96.0,Blend: 100% Shiraz +De Lisio Shiraz 2004,"McLaren Vale, South Australia, Australia",Red Wine,96.0,"""The profound 2004 Shiraz was cropped at a measly .5 tons of fruit per acre, and aged almost entirely in new French oak. It is a killer wine in a killer line-up from De Lisio in 2004. Dense blue/purple to the rim, this highly extracted (but not overly extracted) effort reveals notes of crushed rocks, blueberries, blackberries, camphor, lead pencil shavings, and spicy oak. Boasting great purity, a full-bodied, opulent texture, huge richness, but no sense of pruniness or flabbiness given its precision and refreshing structure, this is a well-balanced, potentially complex McLaren Vale blockbuster. It should drink well for 15+ years."" - Wine Advocate" +De Lisio The Catalyst Shiraz/Grenache 2004,"McLaren Vale, South Australia, Australia",Red Wine,96.0,"""A blockbuster in the making, the 2004 Shiraz/Grenache The Catalyst (80% Shiraz and 20% Grenache aged in primarily neutral French wood) boasts fabulous aromas of flowers, lead pencil shavings, blackberries, cassis, and subtle wood. This full-bodied, intensely packed and stacked effort possesses huge fruit extract, wonderful, mouth-coating glycerin, and a purity as well as seamlessness that must be tasted to be believed. Drink this undeniably profound Australian red over the next 10-15 years."" - Wine Advocate" +Delas Cote Rotie La Landonne 2009,"Cote Rotie, Rhone, France",Red Wine,98.0,"The wine's deep color is underscored by plummy hues. A complex nose shows deep, fruity aromas with hints of licorice and roasted coffee. Endowed with a dense and silky tannic structure, this is a full, fleshy wine that provides an ample and generous palate. Its lasting finish speaks of considerable ageing potential." +Delas Cote Rotie La Landonne 2010,"Cote Rotie, Rhone, France",Red Wine,96.0,"The wine's deep color is underscored by plummy hues. A complex nose shows deep, fruity aromas with hints of licorice and roasted coffee. Endowed with a dense and silky tannic structure, this is a full, fleshy wine that provides an ample and generous palate. Its lasting finish speaks of considerable ageing potential." +Delas Hermitage Domaine des Tourette 2009,"Hermitage, Rhone, France",Red Wine,98.0,"The wine has a deep garnet-red hue with purple tinges. The nose, as with all good Hermitages, is both intense and complex. Domaine des Tourettes 2009 also shows concentrated aromas of fruit, with hints of blackberries and dark cherry. Oak underscores these with notes of toast and chocolate. On the palate the wine is well-built and its ample volume reveals the fine qualities of its granite terroir, finishing with a refreshing mineral-like edge. " +Delectus French Wedding Cabernet Sauvignon 2013,"Knights Valley, Sonoma County, California",Red Wine,96.0,"This is a bold expression of hillside Cabernet, with a dark iridescent violet-hued red color. Complex aromas of cassis, tobacco leaf, cedar, and espresso, are coupled with a monlithic structure of high-quality tannins that is built to last for decades. A long, lingering finish evokes forest floor and classic Cabernet flavors." +Delectus Julia Cuvee 2002,"Knights Valley, Sonoma County, California",Red Wine,96.0,"What's the best kept secret in the Napa Valley? It's the fact that only one other person besides winemaker Gerhard Reisacher knows the exact blend components of this amazing wine. Whispered to daughter Julia while deeply asleep, the secret blend melts away into her dreams. This is Cuvée Julia, the crown jewel in the Delectus portfolio of wines. Cuvée Julia is a blend of the best barrels of the vintage, usually Cabernet driven, and is always the most dramatic bottling of the year" +Denis Mortet Gevrey-Chambertin Les Champeaux Premier Cru 2015,"Gevrey-Chambertin, Cote de Nuits, Cote d'Or, Burgundy, France",Red Wine,96.0,"With a very specific climate, the ""Champeaux"" vineyard is surrounded by dried stone walls and winegrowers’ shelters. The old vines are planted on deep stony terraces composed of particularly red soil with violet colored veins." +Department 66 Pharaon 2015,France,Red Wine,97.0,"Provocative aromas of sweet oak, dark chocolate liqueur, Tahitian vanilla, sage, and plum saturate the glass in a beguiling complexion of aubergine. Sapid flavors of rhubarb, savory red fruits, and boysenberries are evident and harmoniously blend with mineral notes and schistous highlights. The tannins are firm but agreeable and primed for extended aging. Finishing with a spirited acidity, the wine elegantly charms the palate indefinitely." +Diamond Creek Red Rock Terrace Cabernet Sauvignon (1.5 Liter Magnum) 2013,"Diamond Mountain District, Napa Valley, California",Red Wine,99.0,"Red Rock Terrace has velvety tannins. The wine is rich and well balanced, medium dark ruby color with cherry, mint and black currant flavors." +Diamond Creek Red Rock Terrace Cabernet Sauvignon 2013,"Diamond Mountain District, Napa Valley, California",Red Wine,99.0,"Red Rock Terrace has velvety tannins. The wine is rich and well balanced, medium dark ruby color with cherry, mint and black currant flavors." +Diamond Creek Red Rock Terrace Cabernet Sauvignon (375ML half-bottle) 2013,"Diamond Mountain District, Napa Valley, California",Red Wine,99.0,"Red Rock Terrace has velvety tannins. The wine is rich and well balanced, medium dark ruby color with cherry, mint and black currant flavors." +Diamond Creek Volcanic Hill Cabernet Sauvignon 2002,"Napa Valley, California",Red Wine,96.0,"Full bodied and loaded with intense ripe berry fruit, cassis, violets and a smoky richness, finishing with good length and firm tannins. " +Diamond Creek Volcanic Hill Cabernet Sauvignon 2011,"Napa Valley, California",Red Wine,96.0,"Volcanic Hill is the longest lived of Diamond Creek wines. The wines are full bodied and loaded with intense ripe berry fruit, cassis, violets and a smoky richness, finishing with good length and firm tannins." +Disznoko Tokaji Aszu 5 Puttonyos (500ML) 2008,Hungary,,96.0,"Golden to deep amber depending on its age. When young, the nose bursts with intensity: fresh fruits (very often apricot) and citrus aromas. Over 10 years old, the wine gains even greater aromatic complexity filled with dried fruits, spicy and honey notes. A display of the vintage character in flavors. A beautiful balance between vivacious acidity and sweetness. The Disznóko Tokaji Aszú 5 puttonyos tastes fresh, long and is always superbly complex and focused. Amazing length, often with a spicy finish. Spirited!" +Dolce (375ML half-bottle) 1999,"Napa Valley, California",,97.0,"Dolce is a blend of 76% Semillon and 24% Sauvignon Blanc. The rich, exotic fruit flavors and the honeyed botrytis character of the wine are complemented by toasty oak overtones that are balanced by a long, clean finish. Despite the difficulties experienced in the vineyard, this blend holds great promise. This warm vintage naturally developed more tropical flavors than some previous vintages - a reflection of vineyard location and vintage. The wine should continue to grow in complexity and interest as it ages in the bottle. -Dirk Hampson, Director of Winemaking" +Dolce (375ML half-bottle) 2006,"Napa Valley, California",,98.0,"The 2006 Dolce is intensely fruity, driven by aromas of citrus and stone fruits, and layered with notes of honey and spice. Ripe peach and pear dominate in the nose and are complemented with notes of orange zest, dried apricot and fig. The palate is loaded with ripe and juicy apricot. It begins with a silky entry, followed by an unctuous and balanced mid-palate, and a mouthwatering, clean finish. With time we expect the emergence of the bottle bouquet, together with a subtle minerality, will beautifully showcase the fruit-forward nature of this youngster." +Dolce (375ML half-bottle) 2007,"Napa Valley, California",,96.0,"The 2007 Dolce is youthfully fruity with layered aromas ranging from fresh-baked lemon bars to honey and caramel. In the mouth, the citrus aromas shift to peach and pineapple flavors. The silky entry evolves into a creamy and coating texture that is rich yet balanced through the finish. Concentrated and fruit-driven, this vintage will reveal additional layers of aroma and flavor along with a perfumed bottlebouquet in the years to come. " +Dolce (375ML half-bottle) 2010,"Napa Valley, California",,97.0,"Aromas of apricot, poached pear and orange rind dominate the more subtle clove and mineral notes. The flavors mimic the aromas on the nose, melding with a mouthwatering texture and added notes of juicy orange and citrus blossom. This wine shows the restraint of youthfulness with the expectation that its bottle bouquet will emerge with a few more years of bottle age. " +D'Oliveira Bual 1968,Portugal,Collectible,96.0,"Forthcoming and harmonious blend of singed aromas, its sweetness cut by considerable acidity, finishing rather dry and long." +"Dom Perignon & Godiva Gift Set, 36 pc",,,96.0,"Dom Perignon and Godiva are legendary brands that have set the standard for combining luxury with heavenly taste. Known for their artful approach to perfecting vintage Champagne, Dom Perignon is the ideal pairing for Godiva chocolates." +Dom Perignon Limited Edition 2 Bottles plus Six Glass Set 2009,"Champagne, France",Sparkling & Champagne,96.0,"This Limited Edition Gift Pack is ideal for Holiday gifting, containing two bottles of the highly acclaimed 2009 Vintage, as well as 6 elegantly branded Dom Pérignon Glasses, designed to enhance the Dom Pérignon singularity. Dom Pérignon's chefs de caves have long extolled the virtues of serving champagne in larger-bowled glasses, which allow the bubbles to develop slowly and release aromas more evenly." +Dom Perignon Limited Edition Gift Box by Tokujin Yoshioka 2009,"Champagne, France",Sparkling & Champagne,96.0,"Celebrating the solar decade, this limited edition by Japanese artist Tokujin Yoshioka reflects the characters of the Vintage 2009. His works, which transcend the boundaries of product design, architecture, and exhibition installation, are highly evaluated also as art. His works are displayed as part of permanent collections in such highly reputed museums as MoMA in NYC, Centre Georges Pompidou in Paris, Victoria and Albert Museum in London, Cooper Hewitt National Design Museum in NYC and Vitra Design Museum in Weil am Rhein. Tokujin Yoshioka was named one of the “100 most respected Japanese by the world,"" by the Japanese edition of Newsweek and one of ""The 100 Most Creative People in Business 2010"" by Fast Company magazine in the USA." +Dom Perignon Oenotheque 1996,"Champagne, France",Sparkling & Champagne,96.0,"The year was full of contrasts and the summer changeable, with the wetter periods never quite making up for the earlier hydric deficit. Eventually, in the month before grape picking (16 September), it was as much the spells of hot weather as the influence of north-easterly winds that led to the original maturity of the vintage." +Dom Perignon P2 1998,"Champagne, France",Sparkling & Champagne,96.0,The year 1998 was marked by two unusual and opposing occurrences: the spectacular burning of the grapes caused by record high temperatures in August followed by exceptional rainfall in September. +Dom Perignon P2 Vintage in Gift Box 1998,"Champagne, France",Sparkling & Champagne,96.0,"Dom Perignon P2 has an intense, full and radiant bouquet with notes of honeysuckle, orange colored fruits and hints of iodine sensations. The creamy chewiness characterizing the vintage is channeled in a direction that is edgy yet embracing with a wave of aromatic persistence. Smoky, biting and full energy finish balances it all out." +Dom Perignon P2 Vintage in Gift Box 2000,"Champagne, France",Sparkling & Champagne,97.0,"The bouquet is ripe, lively and generous. The warm aromas of hay and brioche mingle with those of bergamot orange and russet stone fruit. The overall effect exudes smoky grey accents. On the palate, the vibrant opening strikes the first chord, a prelude to a complexity that is more tactile than plump, and only gives of itself gradually. The distinguished viscosity is understated and simply fits around the contours of the wine. The length is exquisitely bitter and abounds with sap, a mingling of liquorice and toasted malt." +Dom Perignon Rose 2002,"Champagne, France",Sparkling & Champagne,98.0,"The wine's bouquet is lilting and luminous, with a wide spectrum dominated by an orange glow. This complexity becomes deeper and more somber in the finish, with hints of smoke and black cherry. The wine has an assertive presence and is remarkably tactile, with creamy fleshiness and caressing intensity. The feeling of fullness stretches out and sustains the sappy, vibrant, crystalline note." +Dom Perignon Vintage Luminous Bottle 2009,"Champagne, France",Sparkling & Champagne,96.0,"Dom Perignon only creates vintage wines; it is an absolute commitment. Only the best grapes of the most exceptional years are used, making each vintage distinct. It is the perfect embodiment of the Power of Creation – an act of creation that elevates the mind and enlightens the world." +Dom Perignon Vintage with Gift Box 1999,"Champagne, France",Sparkling & Champagne,96.0,"The commitment of Dom Perignon is a commitment to creation. It's a quest for excellence; it is about taking risk, taking a challenge from the vintage, making it to the style of Dom Perignon. Every single vintage of Dom Perignon is an exclusive wine; it is the harmonious dialogue of style and vintage. Dom Perignon Vintage 1999 goes straight to the heart of Dom Perignon. This wine is radiant, pure and vibrant. It is a story of seduction and sensuality. " +Dom Perignon Vintage with Gift Box 2009,"Champagne, France",Sparkling & Champagne,96.0,"Dom Perignon only creates vintage wines; it is an absolute commitment. Only the best grapes of the most exceptional years are used, making each vintage distinct. It is the perfect embodiment of the Power of Creation – an act of creation that elevates the mind and enlightens the world." +Dom Perignon Vintage with Gift Box 2010,"Champagne, France",Sparkling & Champagne,96.0,"Dom Pérignon Vintage 2010 was a bold wager, the fruit of an unwavering commitment to expressing nature, coupled with the freedom that makes audacious endeavors possible." +Domaine A.F. Gros Richebourg Grand Cru 2012,"Cote de Nuits, Cote d'Or, Burgundy, France",Red Wine,97.0,"This is an unforgettable wine possessing depth and an amazing mix of contrasts : power and finesse. Hints of wild violets, black currant, vanilla and spices that meld into a velvety palate constitute the hallmark of the appellation (power and finesse). Give in to temptation right now, or make it last for several decades." +Domaine Belle Crozes-Hermitage Roche Pierre 2015,"Crozes-Hermitage, Rhone, France",Red Wine,96.0,"Dark robe. Has a stylish nose already – blackberry, primrose, softly floral, black cherry. It is in no hurry, is very calm, references good Burgundy with Pinot-esque style. There is a murmur of oak. The palate sequels very well from the nose; there is a sensuous glass of wine here. The fruit glides along with ultra-smooth tannins within, until the crunch and oak on the finish. Classy, max appeal, a Grand Vin. Dark fruits such as blackberry and a little mulberry lie at its heart. The balance is good. White pepper spices the finish. " +Domaine Bois de Boursan Chateauneuf-du-Pape Cuvee Felix 2000,"Chateauneuf-du-Pape, Rhone, France",Red Wine,96.0,"It is a structured and powerful wine. It has notes of black fruits, licorice and cocoa." +Domaine Claude Dugat Charmes Chambertin 2012,"Cote de Nuits, Cote d'Or, Burgundy, France",Red Wine,96.0,"Dark cherries, plum, blueberry, and quince capture this quintessential 'Charmes' bouquet. Exotic spices compliment this medium-bodied wine. Quite elegant now but can be kept in bottle for several years to come. " +Domaine Coche-Dury Corton-Charlemagne Grand Cru 2011,"Burgundy, France",White Wine,96.0,"The palate has perfect acidity and subtle spicy notes on the entry: hints of lime flower, citrus lemon and a subtle note of mandarin coming through with aeration. Is exhibits balletic poise on the finish – a sensational Corton-Charlemagne that just may turn out to be just as good as the 2010." +Domaine de Beaurenard Cuvee Boisrenard Chateauneuf-du-Pape 1998,"Chateauneuf-du-Pape, Rhone, France",Red Wine,96.0,"Made from parcels of old vines (60-90 years in age) planted in terroirs of great personality and complexity. Grapes picked when fully ripe and meticulously hand-sorted for extra concentration. Very low yield: 15-20 hl/hectare. These old vines were planted in a mix of varieties: the symphony of 13 varieties is thus in evidence, but with a majority of Grenache. This wine spends a long time in vats, and is matured in the most traditional ways: no filtration, 18 months' ageing in oak casks, fined with fresh egg whites, bottled and left to rest in our cellars." +Domaine de Beaurenard Cuvee Boisrenard Chateauneuf-du-Pape 2017,"Chateauneuf-du-Pape, Rhone, France",Red Wine,96.0,"Deep and bright purple color with ruby highlights. Deep and sophisticated nose. Very flavoured, the flower notes of rose and violette brings elegance. The mouth is complex with wild red fruits. Smooth and coated tannins. Deep wine with a long finish." +Domaine de Chevalier (6-Pack OWC Futures Pre-Sale) 2018,"Pessac-Leognan, Bordeaux, France",Red Wine,96.0,"Blend: 65% Cabernet Sauvignon, 30% Merlot, and 5% Petit Verdot" +Domaine de Chevalier (6-Pack OWC Futures Pre-Sale) 2019,"Pessac-Leognan, Bordeaux, France",Red Wine,96.0,"Intense, fresh and refined nose, of red and black fruits. The aromas of black cherry, blackberry and blueberry dominate in an atmosphere of both peppery and sweet spices at the same time.Dense, delicate, delicious and energetic palate. Magnificent finesse concentration. Tight and elegant weft. Sweet flavors of ripefruit are intense, salivating and accompanied by a gustatory complexity very typical of this vintage. Humus, graphite and licorice. Great overall freshness. Impeccable and harmonious balance between the sweetness and liveliness of the different sensations." +Domaine de Chevalier Blanc (Futures Pre-Sale) 2019,"Pessac-Leognan, Bordeaux, France",White Wine,96.0,"Blend: 70% Sauvignon Blanc, 30% Semillon" +Domaine de Chevalier (Futures Pre-Sale) 2018,"Pessac-Leognan, Bordeaux, France",Red Wine,96.0,"Blend: 65% Cabernet Sauvignon, 30% Merlot, and 5% Petit Verdot" +Domaine de Chevalier (Futures Pre-Sale) 2019,"Pessac-Leognan, Bordeaux, France",Red Wine,96.0,"Intense, fresh and refined nose, of red and black fruits. The aromas of black cherry, blackberry and blueberry dominate in an atmosphere of both peppery and sweet spices at the same time.Dense, delicate, delicious and energetic palate. Magnificent finesse concentration. Tight and elegant weft. Sweet flavors of ripefruit are intense, salivating and accompanied by a gustatory complexity very typical of this vintage. Humus, graphite and licorice. Great overall freshness. Impeccable and harmonious balance between the sweetness and liveliness of the different sensations." +Domaine de la Charbonniere Chateauneuf-du-Pape Les Hautes Brusquieres 2017,"Chateauneuf-du-Pape, Rhone, France",Red Wine,98.0,"This Single Vineyard Cuvée reveals layered hints of dark cherries, crushed raspberry, the structure is massive yet with some elegant tannins. " +Domaine de la Cote Bloom's Field Pinot Noir 2016,"Sta. Rita Hills, Santa Barbara, Central Coast, California",Red Wine,96.0,"More than any other vineyard, Bloom’s Field embodies the spirit of the Domaine. The 2016 iteration of Bloom’s Field is both more generous and more composed than its predecessors. The deeply colored wine aligns with a rich nose of red berries, rose hips, seaweed, and soil. The palate is immediate and concentrated without being showy. The influence of both Bloom’s Field’s iron-rich clay top soil and marine sedimentary sub soil result in a juxtaposition of density and effortlessness for which Domaine de la Cote is always striving. The 2016 Bloom’s Field is the most immediate and generous wine of the vintage upon release." +Domaine de la Cote La Cote Pinot Noir 2015,"Sta. Rita Hills, Santa Barbara, Central Coast, California",Red Wine,96.0,"The 2015 la Côte is the most cohesive, complete, and integrated wine the winery has ever bottled. True to the vintage, the wine is richly colored and the aromatics are focused and intense. Texturally, the wine possesses electrifying amplitude and pliancy for such a young, tightly wound wine. The persistent and harmonious mid-palate and the way the acidity hums through the finish is striking. " +Domaine de la Cote La Cote Pinot Noir 2016,"Sta. Rita Hills, Santa Barbara, Central Coast, California",Red Wine,96.0,"The Domaine’s eponymous vineyard offers the prettiest and most ethereal wine of the vintage. Do not, however, mistake its gracefulness as an invitation for early drinking. Along with its upslope neighbor, Siren’s Call, the 2016 la Côte may well be the vintage’s longest-lived wine. Upon release the nose yields sour cherry, black tea, sous bois, and citrus rind, all dancing in the glass and on a highly intricate palate. The finish is uniquely long and contemplative, confirming the wine need not be revisited for another 6-8 years." +Domaine de la Janasse Chateauneuf-du-Pape Vieilles Vignes (1.5 Liter Magnum) 2000,"Chateauneuf-du-Pape, Rhone, France",Red Wine,97.0,"The flagship wine of the estate, still the highest in international rankings. The color is dark with purple reflections. The nose, with discreet aromas of crushed black fruits and garrigue, is just waiting to melt into a noble and fresh material." +Domaine de la Janasse Chateauneuf-du-Pape Vieilles Vignes 2000,"Chateauneuf-du-Pape, Rhone, France",Red Wine,97.0,"Over the last quarter century, Domaine de la Janasse has become one of the most highly-regarded estates in Chateauneuf-du-Pape. Led by siblings Christophe and Isabelle Sabon, the estate combines the best of both traditional and modern techniques to craft a collection of truly riveting wines from ""simple"" value-priced VDP’s to their benchmark Chateauneufs." +Domaine de la Janasse Chateauneuf-du-Pape Vieilles Vignes 2012,"Chateauneuf-du-Pape, Rhone, France",Red Wine,96.0,"The Chateauneuf-du-Pape Vielles Vignes is the flagship wine of the estate. Dark in color with purple hues. A lavishly ripe, extracted Chateauneuf-du-Pape that is complex and yet balanced with acidity - often in contradiction to an appellation better known for sheer exuberance and power. The 2012 Vielles Vignes is a vintage of finesse and elegance." +Domaine de la Janasse Chateauneuf-du-Pape Vieilles Vignes 2015,"Chateauneuf-du-Pape, Rhone, France",Red Wine,97.0,"The flagship wine of the estate, still the highest in international rankings. The color is dark with purple reflections. The nose, with discreet aromas of crushed black fruits and garrigue, is just waiting to melt into a noble and fresh material. Keep it at least ten years before serving on a jugged hare Royale." +Domaine de la Mordoree Chateauneuf-du-Pape La Reine des Bois 1998,"Chateauneuf-du-Pape, Rhone, France",Red Wine,97.0,"Cuvee de la Reine des Bois Chateauneuf-du-Pape has deep ruby red color and red fruit aromas leading to leather, black truffles and coffee notes. Fat and concentrated on the palate, with licorice and dark fruit flavors. Pairs well with game and red meats or cheeses." +Domaine de la Mordoree Chateauneuf-du-Pape La Reine des Bois 2007,"Chateauneuf-du-Pape, Rhone, France",Red Wine,96.0,"Cuvee de la Reine des Bois Chateauneuf-du-Pape has deep ruby red color and red fruit aromas leading to leather, black truffles and coffee notes. Fat and concentrated on the palate, with licorice and dark fruit flavors. Pairs well with game and red meats or cheeses." +Domaine de la Mordoree Chateauneuf-du-Pape La Reine des Bois 2010,"Chateauneuf-du-Pape, Rhone, France",Red Wine,97.0,"Cuvee de la Reine des Bois Chateauneuf-du-Pape has a dark red color with blueish hints. Fruity and intense aromas of dried prunes and blackberry with coffee nuances. Melted and concentrated tannins, full bodied, very long fresh finish." +Domaine de la Mordoree Chateauneuf-du-Pape La Reine des Bois 2015,"Chateauneuf-du-Pape, Rhone, France",Red Wine,96.0,"Deep ruby red, opaque. On the palate, this wine shows red fruits, changing to wooden touches of leather, black truffles and coffee. It is concentrated and full flavored on the palate -- with a very long finish offering notes of liquorice." +Domaine de la Romanee-Conti Grands Echezeaux Grand Cru 2005,"Burgundy, France",Red Wine,96.0,95-96 Wine Advocate +Domaine de la Romanee-Conti La Tache Grand Cru 1996,"Burgundy, France",Red Wine,96.0,"The darkest red colour of all. On the nose, the wine is sharp, as if it were ""double-locked"" in its tannic coating (gangue). The ""enigmatic"" character of this wine finds its full expression in this wine, even if we detect some hints of liquorice typical of La Tâche. Great potential, reserved, its length and ""thickness"" on the palate announce interesting developments ... if you are patient enough to wait!" +Domaine de la Romanee-Conti La Tache Grand Cru 2003,"Burgundy, France",Red Wine,99.0,"La Tâche is elegance and rigor. Beneath the frequent hardness of its tannins, passion is aflame, restrained by an implacable, courtly elegance." +Domaine de la Romanee-Conti La Tache Grand Cru 2004,"Burgundy, France",Red Wine,96.0,"La Tâche 2004 is dark in color and has a lovely licorice expression typical of La Tâche. In the mouth, this wine is long and rich. A classic wine - a wine of charm and distinction; complete, profound and balanced." +Domaine de la Romanee-Conti La Tache Grand Cru 2005,"Burgundy, France",Red Wine,99.0,96 IWC +Domaine de la Romanee-Conti La Tache Grand Cru 2009,"Burgundy, France",Red Wine,97.0,"Dark red color. The nose is dense, but discreet. Black fruits. It is unctuous, ample, rich and opulent in the mouth. The balance between complexity and lightness gives birth to a very classic La Tache: noble, concentrated, lanky, muscled and powerful, but lean and still reserved." +Domaine de la Romanee-Conti Richebourg Grand Cru 2009,"Burgundy, France",Red Wine,97.0,"Beautiful color. On the nose, it is powerful, but fresh with minerality and blackcurrant-bud notes. This is a classic Richebourg: budding with freshness and energy, but the wine is still wrapped in fine tannins that need time to develop." +Domaine de la Romanee-Conti Romanee-Conti 2007,"Vosne-Romanee, Cote de Nuits, Cote d'Or, Burgundy, France",Red Wine,96.0,"The wine of princes, she is velvet, seduction and mystery. It is the most proustian of all the great wines: concealed in the secret perfume of fading rose petals in a Romanee-Conti 1956, is it not the intense and pure sensation of the past recaptured which arrests us and enchant us." +Domaine de la Romanee-Conti Romanee St. Vivant Grand Cru 2005,"Burgundy, France",Red Wine,97.0,95+ Steven Tanzer +Domaine de la Vieille Julienne Chateauneuf-du-Pape Cuvee Reserve 2012,"Chateauneuf-du-Pape, Rhone, France",Red Wine,96.0,"The cuvee Reserve is only made in years where Jean-Paul can taste, in the vineyard, a significant difference in his oldest Grenache. " +Domaine de la Vieille Julienne Chateauneuf-du-Pape Reserve 2005,"Chateauneuf-du-Pape, Rhone, France",Red Wine,96.0,"From southern Rhone, Domaine de la Vieille Julienne is no stranger to many a vintner's coveted success. In 2001, 2003, 2005, and 2006, Robert Parker awarded 100 points to Jean-Paul Daumen's Chateauneuf du Pape Reserve." +Domaine de la Vieille Julienne Chateauneuf-du-Pape Vieilles Vignes 2000,"Chateauneuf-du-Pape, Rhone, France",Red Wine,97.0,"To respect the spirit of the ""appellation"" at Vielle Julienne, this wine is always produced using Chateauneuf du Papes original varietals: Grenache, Syrah, Mourvedre, Cournoise, Cinsault, and even extremely rare varietals like Muscardin and Vaccarese. Harvest is entirely done by hand, and fermentation is carried out exclusively with indigenous yeast. The wine is aged in foudre for 1 year. Until 2001, this cuvee was marked as ""Vieilles Vignes.""" +Domaine de la Vougeraie Charmes-Chambertin Les Mazoyeres Grand Cru 2013,"Gevrey-Chambertin, Cote de Nuits, Cote d'Or, Burgundy, France",Red Wine,96.0,"Several parcels from around the village are assembled in the Gevrey-Chambertin, in a smooth, fine yet complex combination, Craite-Paille, Goulots, Murot, and Galands mix pure silt with more clayey patches, only slightly calcareous if at all." +Domaine de Marcoux Chateauneuf-du-Pape Vieilles Vignes 2007,"Chateauneuf-du-Pape, Rhone, France",Red Wine,98.0,"Official French records indicate that the Armenier family has been tending vines in Châteauneuf-du-Pape since the 1300's. Today, winemaker-sisters Catherine Armenier and Sophie Estevenin continue to write history with the wines of Domaine de Marcoux. " +Domaine de Marcoux Chateauneuf-du-Pape Vieilles Vignes 2016,"Chateauneuf-du-Pape, Rhone, France",Red Wine,97.0,"The Vieilles Vignes, a cuvée made entirely from old-vine Grenache, made in vintages where the Grenache is abundant, rich and complex. It is sourced from the sandy soils of Charbonnières (planted 1900) the limestone marl of Esquierons (planted 1900/1949) and the gravelly red clay of Gallimardes (planted 1934/1959). It is aged entirely in 350L barrels for 18 months. While more concentrated and structured than the regular cuvée, it still possesses the delicate floral and spice character that is the signature of this domaine." +Domaine de Montbourgeau L'Etoile Vin Jaune 2010,"Jura, France",White Wine,97.0,"Made exclusively from the Savagnin grape, the Vin Jaune of Montbourgeau is always produced from a late harvest. After fermentation the wine is racked into foudres (30 hectoliter size) and then, after six months, racked again into smaller barrels. It is never topped off, the ""voile"" appears and the wine is left for at least seven years to age in barrel before being declared “Vin Jaune” and being bottled. The “Jaune” of Montbourgeau is more high-toned than the Jaunes of Puffeney and Gahier, less broad perhaps, but more fine -- a clear reflection of the appellation of L’Etoile." +Domaine des Baumard Quarts de Chaume 2002,"Loire, France",White Wine,96.0,"Considered as one of the greatest sweet white wines of the Loire valley, Quarts de Chaume benefits from a unique location and terroir. The wines from this vineyard have an extremely rare elegance, and a remarkable texture that balances out against an equally impressive richness and powerful cleansing acidity. It expresses a precise bouquet of flowers, citrus and quince." +Domaine des Baumard Quarts de Chaume (375ML half-bottle) 1995,"Loire, France",White Wine,98.0,"Serve Quarts de Chaume as an apertif with foie gras, rillette canapes or chicken liver, blue cheeses such as Roquefort and Gorgonzola, and 'white desserts,' such as poached pears or peaches with creme anglaise." +Domaine des Comtes Lafon Meursault Perrieres 2000,"Meursault, Cote de Beaune, Cote d'Or, Burgundy, France",White Wine,96.0,"Very clean, intense fruit, more nervous than the '99 with aromas of flowers and white fruit. A very good balance on the palate and persistent." +Domaine du Clos de Tart Grand Cru Monopole (1.5 Liter Magnum) 2016,"Morey-St-Denis, Cote de Nuits, Cote d'Or, Burgundy, France",Red Wine,97.0,"Deep ruby color of a royal robe. Very complex nose with a wide range of fragrances: wild strawberry with hints of rose, lilac, spice, pepper, tobacco and noble herbaceous notes. The dense, ample and full-bodied mouthfeel retains an ethereal touch: fleshy and silky tannins lightly fill the palate, leaving a gracious, caressing finish. The 2016 is a powerful wine, elegant, deep and seductive." +Domaine du Clos de Tart Grand Cru Monopole 2016,"Morey-St-Denis, Cote de Nuits, Cote d'Or, Burgundy, France",Red Wine,97.0,"Deep ruby color of a royal robe. Very complex nose with a wide range of fragrances: wild strawberry with hints of rose, lilac, spice, pepper, tobacco and noble herbaceous notes. The dense, ample and full-bodied mouthfeel retains an ethereal touch: fleshy and silky tannins lightly fill the palate, leaving a gracious, caressing finish. The 2016 is a powerful wine, elegant, deep and seductive." +Domaine du Coulet Cornas Billes Noires 2009,"Cornas, Rhone, France",Red Wine,96.0,This is a concentrated and austere wine during its youth. Minerality is expressed throughout the palate and on the finish. +Domaine du Pegau Chateauneuf-du-Pape Cuvee Laurence 1995,"Chateauneuf-du-Pape, Rhone, France",Red Wine,97.0,"Garnet with brick-red glints. Aromas of garrigue, moving after several years of aging to aromas of stone fruits (plums), leather, fur and underbush. On the palate, there are notes of cinnamon, pepper, and meat. The development provides complex and spicier notes." +Domaine du Pegau Chateauneuf-du-Pape Cuvee Laurence 2012,"Chateauneuf-du-Pape, Rhone, France",Red Wine,96.0,"Garnet with brick-red glints. Aromas of stone fruits and leather. On the palate, cinnamon, pepper and meat. The development provides complex and spicier notes. " +Domaine du Pegau Chateauneuf-du-Pape Cuvee Reservee (1.5L Magnum) 2010,"Chateauneuf-du-Pape, Rhone, France",Red Wine,97.0, +Domaine Faiveley Chambertin Clos de Beze Grand Cru 2018,"Gevrey-Chambertin, Cote de Nuits, Cote d'Or, Burgundy, France",Red Wine,96.0,"A beautiful ruby color. This wine has pleasant, fresh, red-fruit aromas on the nose, which we find again on the palate. It has rich and very ripe substance, with fine round tannins. It’s a very well-structured and pleasing wine." +Domaine Georges & Christophe Roumier Bonnes Mares Grand Cru 2002,"Burgundy, France",Red Wine,97.0,"""A beautiful red, dense and broad, with concentrated black cherry, plum and mineral flavors. Shows an old-vine richness and is backed by a firm structure, with ripe, fine-grained tannins. Fine length. Best from 2012 through 2025.""" +Domaine Georges & Christophe Roumier Bonnes Mares Grand Cru 2005,"Burgundy, France",Red Wine,97.0,"""Bright red-ruby. Wild red berries, peony and a whiff of medicinal austerity on the nose. In the mouth this displays superb clarity and class, conveying an impression of great intensity without any excess weight. This literally vibrates on the back end, finishing with an explosive whiplash of fruits and minerals and a broad dusting of tannins. The yield here was around 35 hectoliters per hectare, according to Roumier.""" +Domaine Giraud Chateauneuf-du-Pape Gallimardes 2010,"Chateauneuf-du-Pape, Rhone, France",Red Wine,97.0,"Attractive, intense blood-red color. Shows an elegant nose with strawberry, blueberry and raspberry fruit. Powerful on the palate, it's full-bodied yet smooth with flavors of apple and cherry compote, raspberry tinged with licorice, white pepper and wild herbs." +Domaine Giraud Chateauneuf-du-Pape Les Grenaches de Pierre 2010,"Chateauneuf-du-Pape, Rhone, France",Red Wine,98.0,"Lovely blood-red color with crimson edges. Its powerful nose is reminiscent of basalt, tobacco leaf with cooked fruit notes and juicy prunes. Powerful structured palate, rich and rounded with flavors of fresh strawberry compote, raspberries, cherries tinged with thyme, wild juniper and violet rockrose." +Domaine Giraud Chateauneuf-du-Pape Les Grenaches de Pierre 2015,"Chateauneuf-du-Pape, Rhone, France",Red Wine,97.0,"Lovely blood-red color with crimson edges. Its powerful nose is reminiscent of basalt, tobacco leaf with cooked fruit notes and juicy prunes. Powerful structures palate, rich and rounded with flavors of fresh strawberry compote, raspberries, cherries tinged with thyme, wild juniper and violet rockrose." +Domaine Gourt de Mautens Bressy 2009,"Rasteau, Rhone, France",Red Wine,96.0,"Tis wine is loaded with chocolate, black raspberries, and kirsch, intermixed with dusty, loamy soil notes, pepper, and the telltale chocolate that comes from the old vine Grenache that bakes in the sun in this high elevation appellation. This is a beauty, slightly rustic but enormously endowed." +Domaine Grand Veneur Chateauneuf-du-Pape Vieilles Vignes 2006,"Chateauneuf-du-Pape, Rhone, France",Red Wine,98.0,"""In 2006 a 100% Grenache cuvee was added to the portfolio, the Vieilles Vignes. The 2006 Vieilles Vignes is as impressive as a 2006 Chateauneuf du Pape can be and looks to be one of the candidates for the wine of the vintage. Given the fact that it is all Grenache, the wine has an absolutely magnificent density and an inky purple color, huge, powerful flavors, and a finish that goes on well past a minute. This is a wine for very patient connoisseurs as it is meant for long-term aging. It is an exquisite expression of Chateauneuf du Pape and Grenache. This tannic, awesomely endowed wine has everything going for it. Anticipated maturity: 2014-2030+.""" +Domaine Grand Veneur Chateauneuf-du-Pape Vieilles Vignes 2012,"Chateauneuf-du-Pape, Rhone, France",Red Wine,97.0,"It boasts an inky/purple color in addition to a gorgeous perfume of crushed rocks, jammy black fruits, charcoal and graphite. Blackberry aroma with an air of dates pressed in alongside – this is sweet-noted. It is easy to appreciate, a sleek and stylish start. The palate holds excellent fruit that runs well and has kick. Its tannins move round freely and a minted finale comes forward. Its dark fruit is tasty, darkens on the finish, where tar and char from its oak enter. It is all very much together, a bundle of harmony, and will gain local attributes as it ages. An outstanding Chateauneuf du Pape which display the best of its terroir." +Domaine Grand Veneur Chateauneuf-du-Pape Vieilles Vignes 2017,"Chateauneuf-du-Pape, Rhone, France",Red Wine,96.0,"This wine boasts an inky/purple color in addition to a gorgeous perfume of crushed rocks, jammy black fruits, charcoal, graphite, and blackberry. The palate holds excellent fruit character and has a great kick. The tannins are round and the finish is long with mint and dark fruit notes. It is all very much together and harmonious, and has great aging potential. An outstanding Chateauneuf du Pape expressing the quintessence of its terroir." +Domaine Henri Gouges Nuits-St-Georges Les Vaucrains Premier Cru 2002,"Burgundy, France",Red Wine,96.0,"Located at the exit of the valley of the Vallerots and just above the famous plot of Saint Georges, this plot is in the middle of the hillside, delineated at its highest point by the edge of the forest. The production of grapes is naturally very low making these very concentrated wines. They are characteristic of their terroir with freshness and minerality. Les Vaucrains are exceptional wines, which require at least ten years to reveal their full potential." +Domaine Huet Vouvray Cuvee Constance 2003,"Vouvray, Touraine, Loire, France",White Wine,98.0,"The Cuvee Constance opens with a aromas of gourmet ripe fruit. The palate has a nice complexity, spicy and lightly toasted on the candied fruit. Great concentration of sweetness and acidity, a rarity in the 2003 vintage. An exceptional wine." +Domaine Huet Vouvray Cuvee Constance (500ML) 2015,"Vouvray, Touraine, Loire, France",White Wine,96.0,"Since 1989, the estate has produced this magical, botrytized dessert wine selected from one, two or all three vineyards. When made, the Cuvée Constance (named for Gaston’s mother) ranks among the world’s greatest dessert wines." +Domaine Huet Vouvray Haut Lieu Demi-Sec 2016,"Vouvray, Touraine, Loire, France",White Wine,96.0,"Taking its roots deep into the chalk soils of Vouvray, this off-dry wine resonates beautifully in the mouth. Its natural sugar and refreshing acidity blend harmoniously. Aerial and complex, this fruity wine is to be appreciated young, but can reveal itself graciously to the ones who wait." +Domaine Huet Vouvray Haut Lieu Demi-Sec (375ML half-bottle) 2016,"Vouvray, Touraine, Loire, France",White Wine,96.0,"Taking its roots deep into the chalk soils of Vouvray, this off-dry wine resonates beautifully in the mouth. Its natural sugar and refreshing acidity blend harmoniously. Aerial and complex, this fruity wine is to be appreciated young, but can reveal itself graciously to the ones who wait." +Domaine Huet Vouvray Le Mont Moelleux 2016,"Vouvray, Touraine, Loire, France",White Wine,96.0,"Purchased in 1957, Le Mont lies on the esteemed Premiere Côte. With less clay and more stone than Le Haut-Lieu, Le Mont yields young wines of intense minerality. The wines are the estate's most reticent, but develop the strongest perfume with age. Biodynamically farmed. All grapes are harvested by hand. The wine is soft, rich and elegant." +Domaine Huet Vouvray Le Mont Sec 2014,"Vouvray, Touraine, Loire, France",White Wine,96.0,"After a traditional winemaking style, this wine is a perfect reflection of this vintage. Intense nose of fresh white fruit and orange blossom. Complex and elegant palate. A bottle to keep." +Domaine Huet Vouvray Moelleux Clos du Bourg 2016,"Vouvray, Touraine, Loire, France",White Wine,97.0,"The vines are farmed using biodynamic methods and harvested by hand. Gaston Huët believed this to be the greatest of all Vouvray vineyards. This ancient, walled vineyard has the estate’s shallowest, stoniest soils. The wines are rich and intense." +Domaine Huet Vouvray Moelleux Premier Trie Clos du Bourg 2015,"Vouvray, Touraine, Loire, France",White Wine,96.0,#66 +Domaine Huet Vouvray Moelleux Premier Trie Clos du Bourg 2016,"Vouvray, Touraine, Loire, France",White Wine,96.0,"A deep and vibrant color. On the nose, subtle floral essences and tasty aromas of jammy apricot sets the tone of this wine. The palate is creamy and pure and a beautiful balance of Chenin, with aromas of rhubarb and a spicy finish." +Domaine Huet Vouvray Moelleux Premier Trie Le Mont 2010,"Vouvray, Touraine, Loire, France",White Wine,97.0,"For many insiders, the argument over Vouvray's greatest vineyard comes down to two sites: Le Mont and Clos du Bourg. Undisputably a grand cru vineyard, Le Mont enjoys a choice site on the Premiere Cote. These wines are the estate's most reticent, but develop the strongest perfume with age. Le Mont yields young wines of intense minerality. With age, the wines develop great length and finesse." +Domaine Huet Vouvray Moelleux Premier Trie Le Mont 2016,"Vouvray, Touraine, Loire, France",White Wine,96.0,"For many insiders, the argument over Vouvray’s greatest vineyard comes down to two sites: Le Mont and Clos du Bourg. With less clay and more stone than Le Haut-Lieu, Le Mont yields young wines of intense minerality. With age, the wines develop great length and finesse." +Domaine Jamet Cote-Rotie 2005,"Cote Rotie, Rhone, France",Red Wine,96.0, +Domaine Jamet Cote-Rotie 2012,"Cote Rotie, Rhone, France",Red Wine,96.0,"Sweet black raspberry, roasted herb, new saddle leather, pepper and meat juice characteristics are alive in this medium to full-bodied wine." +Domaine Jean Grivot Richebourg Grand Cru 2016,"Vosne-Romanee, Cote de Nuits, Cote d'Or, Burgundy, France",Red Wine,97.0,"The wine shows aromas and flavors of red berries, herbs, and purple flowers. The palate is rich with ripe fruit and medium weight with bright acidity and fine tannins. Aging in 40-45% new Burgundian pièce brings notes of vanilla, toast, and baking spices." +Domaine La Barroche Chateauneuf-du-Pape Pure 2016,"Chateauneuf-du-Pape, Rhone, France",Red Wine,96.0,"The story of this wine is rooted in a parcel filled with centaury-old vines and pure sandy soil. Pure, made with 100% Grenache, is a homage to Chateauneuf-du-Pape and its most celebrated grape varietal. This wine expresses subtle notes of raspberry, cherry, and spices in pure harmony. It achieves an perfect balance between genorisity and strength. " +Domaine Leflaive Chevalier-Montrachet Grand Cru 1992,"Burgundy, France",White Wine,97.0,"Style: Rich, oaky dry white" +Domaine Leroy Clos Vougeot Grand Cru 2003,"Burgundy, France",Red Wine,97.0,"""The 2003 Clos Vougeot comes forth with unreal aromas of mocha-laced black cherries, chocolate-drenched plums, and candied blackberries. Full-bodied, immensely concentrated, and deep, this broad, bulky, powerful wine is jam-packed with black chocolate, red as well as black cherries, licorice and tar. Loads of solid yet ripe tannin provide this dense blockbuster with ample structure, detectable in its interminable finish. It will require cellaring to civilize its weighty, graceless nature. Projected maturity: 2009-2019.""" +Domaine Perrot-Minot Chambertin Clos-de-Beze 2003,"Burgundy, France",Red Wine,98.0,"Superripe nose dominated by chocolatey oak. Sweet and lush in the mouth, with flavors of blackberry, game and leather. Seems finer-grained than the Chambertin but also more linear and less vibrant. But impressively long on the firmly tannic finish." +Domaine Perrot-Minot Charmes-Chambertin Grand Cru Vieilles Vignes 2003,"Gevrey-Chambertin, Cote de Nuits, Cote d'Or, Burgundy, France",Red Wine,96.0,Composition: 100% Pinot Noir +Domaine Perrot-Minot Mazoyeres Chambertin (scuffed label) 2003,"Gevrey-Chambertin, Cote de Nuits, Cote d'Or, Burgundy, France",Red Wine,96.0,"The complexity of this wine comes through on the nose with notes of plum, dark berries and cassis. The tannins are perfectly structured creating a long finish. " +Domaine Pierre Usseglio et Fils Chateauneuf-du-Pape Mon Aieul (1.5 Liter Magnum) 2012,"Chateauneuf-du-Pape, Rhone, France",Red Wine,96.0,"The selection of soils and the age of the vines provide a beautiful aromatic complexity to this wine. It reveals notes of blueberry, raspberry and licorice. The texture is silky - it is a wine that combines concentration and elegance. The optimum time for drinking this wine is between 10 and 12 years." +Domaine Pierre Usseglio et Fils Chateauneuf-du-Pape Reserve des Deux Freres 2005,"Chateauneuf-du-Pape, Rhone, France",Red Wine,97.0,"""The limited production 2005 Chateauneuf du Pape Reserve des Deux Freres (100% Grenache with considerable press wine is aged in 60% demi-muids and 40% in one- and two-year-old barrels) is certainly one of the Chateauneuf du Papes of the vintage. There are about 6,000 bottles (500 cases) of this wine, which exhibits an opaque blue/purple color and a beautiful nose of blueberry, blackberry, scorched earth, pepper, roasted meats, and smoke. It is full-bodied, viscous, with an inky richness and thickness, but terrific acidity and rather high tannins. I can't see this wine being ready to drink before another 6-7 years of bottle age, but it should keep for 20+ years. Brothers Jean-Pierre and Thierry Usseglio have once again produced some of the finest Chateauneuf du Papes of the vintage, particularly in 2005. This is no small accomplishment given the fact that their 2003 cuvees were among the very finest wines of that challenging and irregular year.""" +Domaine Raymond Usseglio Chateauneuf-du-Pape Cuvee Imperiale 2010,"Chateauneuf-du-Pape, Rhone, France",Red Wine,99.0,"This classic winemaking estate, which employs the well-known Xavier Vignon as their consultant, owns over 45 acres spread throughout Chateauneuf du Pape, with the largest holdings in the north. Raymond Usseglio's 2011s are very strong efforts." +Domaine Saint Prefert Chateauneuf-du-Pape Collection Charles Giraud 2015,"Chateauneuf-du-Pape, Rhone, France",Red Wine,98.0,"The tete de cuvee of the domaine, made from the oldest vines in two parcels, les Serres and le Cristia. Les Serres is very warm and has the famous galets and gravel soil; Cristia has a sandy soil." +Domaine Saint Prefert Chateauneuf-du-Pape Reserve Auguste Favier 2015,"Rhone, France",Red Wine,97.0,#44 +Domaine Saint Prefert Isabel Ferrando Chateauneuf-du-Pape Colombis (1.5 Liter Magnum) 2018,"Chateauneuf-du-Pape, Rhone, France",Red Wine,97.0,"100% Grenache, primarily from the lieu-dit named ""Colombis"" with a sandy soil. Whole-cluster fermented and aged in neutral tronconique barrels for 18 months." +Domenico Clerico Barolo Ciabot Mentin 2007,"Barolo, Piedmont, Italy",Red Wine,98.0,Grape Variety: 100% Nebbiolo. +Dominus Estate (1.5 Liter Magnum) 2007,"Yountville, Napa Valley, California",Red Wine,96.0,"Dominus 2007 is a seamless ""haute couture"" estate wine with an intensely aromatic nose and perfectly elegant palate. Notes of ripe red cherries, fresh almonds, pomegranate and blond tobacco precede sweet tannins and a wonderful, bright finish with great length. It is youthful, noble and discreet. " +Dominus Estate (1.5 Liter Magnum) 2014,"Yountville, Napa Valley, California",Red Wine,97.0,"Blend: 86% Cabernet Sauvignon, 7% Cabernet Franc and 7% Petit Verdot" +Dominus Estate 2007,"Yountville, Napa Valley, California",Red Wine,96.0,"Dominus 2007 is a seamless ""haute couture"" estate wine with an intensely aromatic nose and perfectly elegant palate. Notes of ripe red cherries, fresh almonds, pomegranate and blond tobacco precede sweet tannins and a wonderful, bright finish with great length. It is youthful, noble and discreet. " +Dominus Estate 2014,"Yountville, Napa Valley, California",Red Wine,97.0,"Blend: 86% Cabernet Sauvignon, 7% Cabernet Franc and 7% Petit Verdot" +Dominus Estate 2017 6-Pack Wood Case (OWC),"Napa Valley, California",,97.0,"The historic Napanook Vineyard, a 124-acre site west of Yountville, was planted in 1838. This vineyard was the source of fruit for some of the finest Napa Valley wines. Estate-bottled in the spirit of the Bordeaux châteaux, Dominus Estate is dry-farmed to allow natural stress and good concentration of fruit. Grape clusters are crop-thinned to allow sun and air to pass in between, helping to achieve full maturation and soften the tannins. Only 20% to 40% new French oak barrels are used in order to limit the extraction of oak notes. To express the unique terroir, the classic Bordeaux grape varietals of Cabernet Sauvignon, Merlot, Cabernet Franc and Petit Verdot are planted with different root stocks best suited for the varying soil composition of gravel, heavy clay and loam. " +Dominus Estate (3 Liter Bottle) 2007,"Napa Valley, California",Red Wine,96.0,"Dominus 2007 is a seamless ""haute couture"" estate wine with an intensely aromatic nose and perfectly elegant palate. Notes of ripe red cherries, fresh almonds, pomegranate and blond tobacco precede sweet tannins and a wonderful, bright finish with great length. It is youthful, noble and discreet." +Dominus Estate (3 Liter Bottle) 2014,"Yountville, Napa Valley, California",Red Wine,97.0,"Dominus Estate wines are made with an objective of purity, balance and complexity. Minimal intervention and restraint throughout the process of grape berry selection, fermentation and aging preserve the character of the fruit. The resulting wines convey the very personality of the vineyard." +Dominus Estate (375ML half-bottle) 2007,"Napa Valley, California",Red Wine,96.0,"Dominus 2007 is a seamless ""haute couture"" estate wine with an intensely aromatic nose and perfectly elegant palate. Notes of ripe red cherries, fresh almonds, pomegranate and blond tobacco precede sweet tannins and a wonderful, bright finish with great length. It is youthful, noble and discreet. " +Dominus Estate (375ML half-bottle) 2014,"Yountville, Napa Valley, California",Red Wine,97.0,"Blend: 86% Cabernet Sauvignon, 7% Cabernet Franc and 7% Petit Verdot" +Dominus Estate (6 Liter Bottle) 2007,"Napa Valley, California",Red Wine,96.0,"Dominus 2007 is a seamless ""haute couture"" estate wine with an intensely aromatic nose and perfectly elegant palate. Notes of ripe red cherries, fresh almonds, pomegranate and blond tobacco precede sweet tannins and a wonderful, bright finish with great length. It is youthful, noble and discreet." +Dominus Estate (6 Liter Bottle) 2014,"Yountville, Napa Valley, California",Red Wine,97.0,"Blend: 86% Cabernet Sauvignon, 7% Cabernet Franc and 7% Petit Verdot" +Domus Aurea Cabernet Sauvignon 2016,"Maipo Valley, Chile",Red Wine,97.0,"Among the promises of Domus Aurea are its eucalyptus notes, the balance and freshness of its cherries and its delicate orange zest wrapped in subtle chocolate. Nevertheless, the fact that the whole process is oriented by the same respect for tradition and the terroir, makes every vintage a unique wine. This wine is unfiltered to preserve the original flavor and integrity, which will be much appreciated if you guard it for a long time." +Donatella Cinelli Colombini Brunello di Montalcino Prime Donne 2010,"Montalcino, Tuscany, Italy",Red Wine,96.0,"Brilliant and deep ruby red. The aromas are intense, fine, and spicy. Dry, warm, robust, and harmonious on the palate - it lingers at length in the mouth. " +Donelan Richards Family Vineyard Syrah (1.5 Liter Magnum) 2008,"Sonoma Valley, Sonoma County, California",Red Wine,97.0,"As it breathes in the glass, the wine begins to whisper the reasons we and so many have come to love it. Herb encrusted lamb, graphite, freshly-cut lavender and cherry liquor are just some of the aromas that lift from the glass. The palate of the wine starts with such a distinct sensation, like the first spoonful of chocolate mousse, followed with what is actually quiet distinct tannin that cradles a very full and compelling finish." +Donelan Richards Family Vineyard Syrah (scuffed labels) 2008,"Sonoma Valley, Sonoma County, California",Red Wine,97.0,"As it breathes in the glass, the wine begins to whisper the reasons we and so many have come to love it. Herb encrusted lamb, graphite, freshly-cut lavender and cherry liquor are just some of the aromas that lift from the glass. The palate of the wine starts with such a distinct sensation, like the first spoonful of chocolate mousse, followed with what is actually quiet distinct tannin that cradles a very full and compelling finish." +Donnhoff Niederhauser Hermannshohle Spatlese 2001,Germany,White Wine,97.0,"Extraordinary fragrance and a taut, snappy beautiful wine." +Donnhoff Norheimer Dellchen Riesling Spatlese A P #11 2004,"Nahe, Germany",White Wine,97.0,"Steep cliffs of extrusive rock rise directly from the banks of the River Nahe between Norheim and Niederhausen. In between these cliffs there are small hollows, known in local dialect as Dellchen. Here, the slate soils are mixed with the stony precipitate sedimentary rock of the adjacent volcano cliffs. The extremely steep, perfectly south-facing slope is terraced by dry stone walls. Protected by the surrounding cliffs, the Riesling vines reach very high levels of grape ripeness. The wines displaying the characteristic of this particular terroir to a greater extent have enormous ripening potential." +Dow's Vintage Port 1994,Portugal,Collectible,97.0,"Dow's 1994 Vintage Port is drinking beautifully right now – its one of our best vintages in recent history. It balances opulent red fruits with mineral and eucalyptus tones and has the Dow's characteristic drier finish. Its great depth and structure make it delicious now but it will also continue to age in the bottle for years to come. Declared Vintage Port is made only in the best of the best years and represents less than two percent of all Port made. It is sourced from Dow's top vineyards, primarily Quinta do Bomfim and Quinta da Senhora da Ribeira and aged for two years in barrel before bottling." +Dow's Vintage Port 2011,Portugal,Collectible,96.0,#1 +Dow's Vintage Port (375ML half-bottle) 2011,Portugal,Collectible,96.0,"A romatic and floral, with an excellent balance of fruit, tannin and acidity. The palate starts off with fresh green figs and endswith bitter chocolate. There is fresh acidity and a notableminerality, and no hint of any raisining or over-ripeness on the very long finish." +Dow's Vintage Port (375ML half-bottle) 2017,Portugal,Collectible,96.0,"The 2017 was a very different year to 2016 in terms of the viticultural conditions and it was interesting to watch the progression of the wine and scrutinize its quality as it developed over its first two winters. Whereas 2016 had a very mild winter and exceptionally hot summer, this was compensated by abundant winter and spring rainfall. Conversely, 2017 was warm and dry throughout, although summer temperatures were closer to average, which proved to be a very significant factor allowing for complete, balanced ripening." +Dr. Loosen Wehlener Sonnenuhr Auslese 2003,"Mosel, Germany",White Wine,96.0,"This precipitously steep, rocky vineyard (VAY-len-er ZON-en-oo-er) yields some of the most elegant and sophisticated white wines in the world. The stony gray slate soil gives the wine a delicate and crisp acidity that perfectly balances the pure peachy fruit. " +Dr. Pauly-Bergweiler Bernkasteler alte Badstube am Doctorberg Auslese 2009,"Mosel, Germany",White Wine,97.0,"It is a full-bodied wine, rich, complex, with great depth and charm as it ages. Dr.Pauly-Bergweiler is the only wine-maker selling ""Bernkasteler alte Badstube am Doctorberg"" in the US. The Bernkasteler alte Badstube am Doctorberg wines have always had a very long potential and mature to greater heights as they age." +Duckhorn Monitor Ledge Vineyard Cabernet Sauvignon 2008,"Napa Valley, California",Red Wine,96.0,"This wine displays all of the lush, concentrated red fruit character that has come to define Cabernet Sauvignon from Monitor Ledge. There is a beautiful balance between depth and brightness, with oak-inspired layers of caramel, chestnut and hazelnut complementing mouthwatering flavors of dark cherry, raspberry, red currant and strawberry. A smooth, creamy mid-palate leads to a finish of fruit and sweet spice that showcases the wine's length and dimension." +Duclot Groupe Duclot Bordeaux Prestige Collection Case (9 bottles in OWC) 2015,"Bordeaux, France",Red Wine,99.0,"The jewel of our range, this case is exclusively distributed by our company. Produced in limited quantities and protected by an authentication system, it brings together some of the top Bordeaux chateau: Château Lafite Rothschild, Château Mouton Rothschild, Château Margaux, Château Haut-Brion, Château La Mission Haut-Brion,Château Cheval Blanc, Château Ausone, Petrus, Château d’Yquem." +Dugat-Py Mazis Chambertin 2003,"Gevrey-Chambertin, Cote de Nuits, Cote d'Or, Burgundy, France",Red Wine,96.0,"This Grand Cru wine, which comes from a plot of vines with an average age of 70+ year old, is aged for 16-18 monts in new oak casks. It can be enjoyed in its youth with decanting a few hours before serving." +Dugat-Py Mazis Chambertin 2005,"Gevrey-Chambertin, Cote de Nuits, Cote d'Or, Burgundy, France",Red Wine,99.0,"This Grand Cru wine, which comes from a plot of vines with an average age of 70+ year old, is aged for 16-18 monts in new oak casks. It can be enjoyed in its youth with decanting a few hours before serving." +Dugat-Py Mazis Chambertin 2010,"Gevrey-Chambertin, Cote de Nuits, Cote d'Or, Burgundy, France",Red Wine,98.0,"This Grand Cru wine, which comes from a plot of vines with an average age of 70+ year old, is aged for 16-18 monts in new oak casks. It can be enjoyed in its youth with decanting a few hours before serving." +DuMOL Estate Chardonnay 2014,"Russian River, Sonoma County, California",White Wine,96.0,"Brilliant pale straw color with a green tinge. Intense mineral/slate aromas. Fennel, green olive, sweet mint and quinine. Honey dew melon and lemongrass, some earth tones. Palate is fruitier than the aromas suggest. Lime juice and quince, deep clarity of flavor, hazelnut and lanolin. Piercing, livewire acidity draws out the finish. Great thrust and persistence. A highly detailed, nuanced and focused wine with prominent aromatic savory elements and unfolding layers of fruit richness. Great natural acidity and drive." +DuMOL Estate Chardonnay 2017,"Sonoma Coast, Sonoma County, California",White Wine,96.0,"The wine opens with spearmint, melon, lime and flint notes. It’s tangy, dynamic and ever-changing, the palate uncompromisingly dry, mineral and chiseled—refined and totally captivating. The wine turns dense and full in the center as it uncoils, revealing oiliness and great viscosity. A firmness to the back end is driven by high natural acidity, strong savory elements and lime zest freshness." +DuMOL Estate Pinot Noir 2012,"Russian River, Sonoma County, California",Red Wine,97.0,"Brilliant deep rose color. Penetrating floral, fruit and herbal aromas: black cherry and raspberry, fresh herbs, fragrant flowers, toffee and cocoa powder. Great vineyard purity with tightly entwined aromas and flavors. Dark fruits, earth, fresher blueberry, orange zest, a hint of black olive. Structured back end with lifting acidity and youthful tannins." +DuMOL Estate Pinot Noir 2015,"Russian River, Sonoma County, California",Red Wine,96.0,"Brilliance in the glass. Cranberry, pomegranate, rhubarb and black raspberry fruit. Bay laurel, graphite and tarragon complexity. Underbrushy and woodsy, edgy and intriguing. Savory entry, red currant and sassafras, Rainier cherry and dark cassis. Broad across the palate, density and weight. Clove, lavender and forest floor. Balances succulence and structure. Youthful acidity and fresh minerals extend the finish. Slower to open. This one will age. Really fascinating, commanding pinot – a beautiful mix of red and black fruits, savory elements and chewy tannins." +DuMOL Estate Vineyard Chardonnay 2015,"Sonoma Coast, Sonoma County, California",White Wine,96.0,"Brilliant pale straw color with a green tinge. Intense mineral/slate aromas. Fennel, green olive, sweet mint and quinine. Honey dew melon and lemongrass, some earth tones. Palate is fruitier than the aromas suggest. Lime juice and quince, deep clarity of flavor, hazelnut and lanolin. Piercing, livewire acidity draws out the finish. Great thrust and persistence. A highly detailed, nuanced and focused wine with prominent aromatic savory elements and unfolding layers of fruit richness. Great natural acidity and drive." +DuMOL Jentoft Vineyard Ryan Pinot Noir 2018,"Russian River, Sonoma County, California",Red Wine,96.0,"The 2018 DuMOL Jentoft Vineyard Ryan Pinot Noir represents the essence of coastal Russian River Pinot Noir: intensity, vibrancy and deeply pitched fruits with pulsating acidity and incredible length. This vintage is sleeker and slightly more focused than its predecessor with greater savory complexity and less emphasis on fruit density. Above all else, it is a wine true to its gorgeous landscape. " +DuMOL Ryan Pinot Noir 2012,"Russian River, Sonoma County, California",Red Wine,96.0,"Deep rose color, quite dark and brilliant. Complex floral/herbal aromas: juniper, bay leaf, anise then wild berry sweetness, kirsch, sassafras and tobacco. Great power and dimension to the palate. Rich, but never soft - a lean dynamic power. Boysenberry, maple, cocoa then mint and game. Fine tannin-acid balancing act. Fresh orange zest on the finish." +Dunn Howell Mountain Cabernet Sauvignon (1.5L Magnum - chipped wax) 2007,"Napa Valley, California",Red Wine,97.0,"Muscular Cabernet that will need four or five years to peak. Concentrated fruit has brawny tannic structure. Cedar, vanilla and dark chocolate from toasty oak will integrate with bottle age. There's noteworthy intensity and focus to the flavors, then the structure amps up in the finish. Has outstanding length and pervasive earthiness and minerality. Try this in 2015 and cellar it with confidence until at least 2025." +Dunn Howell Mountain Cabernet Sauvignon 1995,"Howell Mountain, Napa Valley, California",Red Wine,96.0,"The 1995 is densely concentrated and shows a dark ruby core moving to a rim of magenta and garnet. It displays a high intensity of aromas, featuring dried blackberries and cherry, cassis and over ripe plums. Its secondary aromas show some development and include a bouquet of bacon, game meats, leather, violets, and cedar. The palate offers pleasure with a delicious attack of sweet blackcurrant and licorice spice. Oak characters are well integrated with some background flavors of vanilla, toffee, mocha, and cinnamon. Some tasters noted a green or vegetal aspect to the wine with descriptors including thyme and green tomato. Earth characteristics ranged from iron-rich and compost to graphite. Most considered this wine to be youthful, with its high concentration of tannins, full body and fairly high levels of acidity. It seemed a difficult wine to grade because of the level of competition, almost every taster offered a tasting window from 2012 onwards." +Dunn Howell Mountain Cabernet Sauvignon 2008,"Howell Mountain, Napa Valley, California",Red Wine,98.0,"Dunn Vineyards produces only 2,500 cases of Howell Mountain Cabernet Sauvignon. This wine is 100% Cabernet Sauvignon." +Dutschke The 22 Year Old Tawny (375ML half-bottle),Australia,,98.0,"""The 22 year old Tawny"" is a blend of some fantastic individual components. Over recent years I have put together a 1,500 litre (5 Hogshead) Solera, where I now am able to bottle off a small volume of some consistently good quality port for my mail order and US market. Verdelho, Grenache and Shiraz make up over 70% of the blend, with much of this being over 30 years old, and responsible for adding lusciousness and the great ""rancio"" characters. This blend has also a splash of Frontignac, Rutherglen Muscat and a component of 33 year old Palomino that I included to add more complexity and richness.Each of these individual fortified wines have been left to rest and mature untouched for many years. My job was to find them all and blend together to generate a wonderful combination of flavours." +Dutschke The Tokay (half-bottle),Australia,,98.0,"Having a real love for good Aussie fortifieds I have now put together ""The Tokay"". It's a blend of Barossa Valley Tokay with the lusciousness, and nuttiness you'd expect from the Rutherglen Tokay's. The idea of a Tokay developed during vintage 2002 when cousin Jeff asked if I could make him a barrel of Tokay for him to stow away in his shed. There was one remaining row of old Tokay in the vineyard and it's days looked to be numbered. This Tokay had recently been used for a local winemaker's sparkling wine base and was no longer required. The plan was to make a barrel of fortified Tokay for the shed and after vintage knock the vines out with the bulldozer. I struck a deal with Jeff, agreeing that if the wine shaped up well that maybe we would get to keep the vines. We produced 4 hogsheads and the wine was great, and as a result the vines are now here to stay. 2 barrels of Tokay are in Jeff's shed and I got to take the rest. " +Dutton-Goldfield Rued Vineyard Chardonnay 2008,"Russian River, Sonoma County, California",White Wine,96.0,"Warren Dutton planted this Chardonnay vineyard on an east-facing hillside west of the town of Graton in 1969. The selection planted in the vineyard, which produces exceptionally exotic, highly identifiable fruit, has since been propagated across California and is now referred to as the ""Rued Clone."" This vineyard's old vines produce clusters with tiny golden translucent berries that have incredibly enticing flavors, floral aromatics and tropical freshness. " +E. Pira e Figli Chiara Boschis Cannubi Barolo 2000,"Barolo, Piedmont, Italy",Red Wine,96.0,"""Beautifully silky and refined, with fantastic cherry, mineral and raspberry character. Full-bodied, with silky tannins and a long, amazing finish. Keeps going. Superfresh. Chiara Boschis took over the Pira winery in 1990 and this is her best wine to date. Best after 2010.""" +Eisele Vineyard Cabernet Sauvignon (1.5 Liter Magnum) 2016,"Calistoga, Napa Valley, California",Red Wine,96.0,"The 2016 Cabernet from Eisele Vineyard stands out by way of harmony and precision. It is a complex cru revealing multidimensional aromas and sensations. The nose opens on notes of ripe fruit, Burlat cherry, blackberry, blackcurrant creme, and expands to a bouquet of sweet spices and tea. The mouthfeel is suave and supple, almost bewitching with class and finesse: chiseled tannins are accompanied by layers of patchouli, mineral notes, dark fruit and a hint of saltiness. This nectar is one of the purest expressions of the Eisele Vineyard terroir." +Eisele Vineyard Cabernet Sauvignon 2016,"Calistoga, Napa Valley, California",Red Wine,96.0,"The 2016 Cabernet from Eisele Vineyard stands out by way of harmony and precision. It is a complex cru revealing multidimensional aromas and sensations. The nose opens on notes of ripe fruit, Burlat cherry, blackberry, blackcurrant creme, and expands to a bouquet of sweet spices and tea. The mouthfeel is suave and supple, almost bewitching with class and finesse: chiseled tannins are accompanied by layers of patchouli, mineral notes, dark fruit and a hint of saltiness. This nectar is one of the purest expressions of the Eisele Vineyard terroir." +Elderton Command Shiraz 2000,"Rias Baixas, Spain",Red Wine,97.0,Number 27 on +Elderton Command Shiraz 2014,"Barossa, South Australia, Australia",Red Wine,96.0,"Very dark purple with bright magenta hues. Blackberry fruit, aniseed and spices. Aromas of blackberry fruit, aniseed and spices carry through to the palate which is rich, warm and generous. Drink now or cellar confidently for 15 - 20 years. " +Elio Altare Barolo Arborina (1.5 Liter Magnum) 2007,"Barolo, Piedmont, Italy",Red Wine,96.0,"Very intense ruby red with garnet reflections. Warm and elegant, with mint and spicy notes. Fresh to the nose with mature fruits; prunes and blueberries, licorice and notes of aromatic herbs like eucalyptus." +Elio Altare Barolo Arborina 2007,"Barolo, Piedmont, Italy",Red Wine,96.0,"Very intense ruby red with garnet reflections. Warm and elegant, with mint and spicy notes. Fresh to the nose with mature fruits; prunes and blueberries, licorice and notes of aromatic herbs like eucalyptus." +Elio Grasso Barolo Ginestra Vigna Casa Mate (1.5 Liter Magnum) 2007,"Barolo, Piedmont, Italy",Red Wine,96.0,"The Barolo Ginestra Casa Mate is the expression of a potent vintage, but very elegant at the same time. It is very drinkable; the tannins are already perfectly integrated into the wine. Ginestra Casa Mate shows lots red fruit, silky tannins and floral notes, typical of Ginestra. It is perfect for those who want to enjoy a young Barolo in top form." +Elio Grasso Barolo Ginestra Vigna Casa Mate 2007,"Barolo, Piedmont, Italy",Red Wine,96.0,"The Barolo Ginestra Casa Mate is the expression of a potent vintage, but very elegant at the same time. It is very drinkable; the tannins are already perfectly integrated into the wine. Ginestra Casa Mate shows lots red fruit, silky tannins and floral notes, typical of Ginestra. It is perfect for those who want to enjoy a young Barolo in top form." +Equipo Navazos Jerez-Xeres-Sherry La Bota de Fino 15 Macharnudo Alto,"Jerez, Spain",,96.0,"This is a wine for connoisseurs, bottled unfiltered in order to preserve its intense color and racy character. It can be enjoyed upon release, but its evolution in bottle will continue to delight consumers for quite a while, provided it is carefully stored. Some of us fondly remember bottles of this wine opened after 35 and 45 years of storage. " +Eroica Single Berry Select 2001,"Columbia Valley, Washington",White Wine,96.0,"Born from a partnership between Chateau Ste. Michelle and Mosel winemaker Ernst Loosen, Single Berry Select is crafted in the traditional German Trockenbeerenauslese style. This special wine is an ultra rich, concentrated yet elegant wine with intense aromas of dried apricot, honey and sweet spice. Appealing flavors of ripe pineapple, white peach and honey are complemented by a long smooth finish tinged with clove. 145 cases produced." +Eroica 1998 Single Berry Select 1997,"Columbia Valley, Washington",White Wine,98.0,"""Breathtaking in its richness and power, yet balanced against a lacy web of acidity that keeps the sticky, syrupy textures from going over the top. Flavors of apricot, baked apple, dried pineapple and tropical fruit last and last. Drink now through 2020. 100 cases made. (HS)""" +Escarpment Kupe Pinot Noir 2015,"Martinborough, New Zealand",Red Wine,96.0,"This is the eleventh release from The Escarpment Vineyard’s close planted vineyard on Te Muna Road, Martinborough. " +Espectacle Espectacle del Montsant (1.5L Magnum) 2010,Spain,Red Wine,98.0,"Moderately intense red color with purple hues. The aroma, at first appears to be closed; immidiately seduces with an unusual complexity and intensity. Initially stands a background of ripe black fruit wrapped in hardwood. As air reaches the wine, it's scent completely changes to a citric orange and floral notes that are so characteristic for this unique wine. The rose and the orange blossom fill the glass with a surprising exuberance. On the palate is it opulent, seductive and highly persistant. As in previous years, it's high concentration relies on the aroma and not on a great tannic structure. It's a wine that grows on the palate as the seconds pass. Yet another year, this wine reflects the formidable personality of centenary vines from an unmistakable region." +Espectacle Espectacle del Montsant 2006,Spain,Red Wine,96.0,"This outstanding new wine comes from a single, very steep vineyard planted with over 100 year old Grenache vines. The vineyard is located at La Figuera, on the northern edge of the Montsant D.O., and looks onto the famous Montsant mountain as well as having spectacular views of the Ebro valley and even the distant Pyrenees 200 kms away. Hence the name!" +Espectacle Espectacle del Montsant 2010,Spain,Red Wine,98.0,"Moderately intense red color with purple hues. The aroma, at first appears to be closed; immidiately seduces with an unusual complexity and intensity. Initially stands a background of ripe black fruit wrapped in hardwood. As air reaches the wine, it's scent completely changes to a citric orange and floral notes that are so characteristic for this unique wine. The rose and the orange blossom fill the glass with a surprising exuberance. On the palate is it opulent, seductive and highly persistant. As in previous years, it's high concentration relies on the aroma and not on a great tannic structure. It's a wine that grows on the palate as the seconds pass. Yet another year, this wine reflects the formidable personality of centenary vines from an unmistakable region." +Espectacle Espectacle del Montsant 2012,Spain,Red Wine,99.0,"Its color is surprisingly intense compared to previous vintages. Bright, airy and deep, it delights us with a lush appearance in which clear violet notes on a ruby background can be distinguished. The wine initially evokes notes of red fruits on a well defined floral background. Rose and violet notes quickly appear. These are surrounded by increasing complexity in which cocoa and cassis are clearly distinguished. Gradually, as it aerates, the wine's aroma expands and characteristic notes of orange blossom appear. In the month it is opulent and very unctuous. Almost immediately its intense, agreeable texture caresses the palate giving very pleasant sensations and leaving us with a pleasant and long finish." +Espectacle Montsant 2013,"Montsant, Spain",Red Wine,96.0,"Its color is surprisingly intense compared to previous vintages. Bright, airy and deep, it delights us with a lush appearance in which clear violet notes on a ruby background can be distinguished. The wine initially evokes notes of red fruits on a well defined floral background. Rose and violet notes quickly appear. These are surrounded by increasing complexity in which cocoa and cassis are clearly distinguished. Gradually, as it aerates, the wine's aroma expands and characteristic notes of orange blossom appear. In the month it is opulent and very unctuous. Almost immediately its intense, agreeable texture caresses the palate giving very pleasant sensations and leaving us with a pleasant and long finish." +Espectacle Montsant 2014,"Montsant, Spain",Red Wine,97.0,"Its color is surprisingly intense compared to previous vintages. Bright, airy and deep, it delights us with a lush appearance in which clear violet notes on a ruby background can be distinguished. The wine initially evokes notes of red fruits on a well defined floral background. Rose and violet notes quickly appear. These are surrounded by increasing complexity in which cocoa and cassis are clearly distinguished. Gradually, as it aerates, the wine's aroma expands and characteristic notes of orange blossom appear. In the month it is opulent and very unctuous. Almost immediately its intense, agreeable texture caresses the palate giving very pleasant sensations and leaving us with a pleasant and long finish." +Evening Land Seven Springs Vineyard La Source Chardonnay 2012,"Eola-Amity Hills, Willamette Valley, Oregon",White Wine,96.0,#3 +Evening Land Seven Springs Vineyard La Source Pinot Noir 2012,"Eola-Amity Hills, Willamette Valley, Oregon",Red Wine,98.0,#3 +Evening Land Seven Springs Vineyard Pinot Noir 2012,"Eola-Amity Hills, Willamette Valley, Oregon",Red Wine,96.0,"This wine is a deep garnet in color with a ruby edge. Thenose is dominated with freshly picked blackberries, toastedalmonds, baking spice and hints of citrus. The palate ispleasantly balanced, shows soft tannins and notes of freshlymade grenadine. The finish is endless and expresses beautifulminerality, a lingering acidity, and perseverant fruit that allundeniably and characteristically come from the Seven Springs Estate." +Eyrie Estate Chardonnay 2014,"Willamette Valley, Oregon",White Wine,96.0,"The wines are subtly expressive, elegant, and long-lived." +Failla Hirsch Vineyard Pinot Noir 2010,"Sonoma County, California",Red Wine,97.0,"Aromatics of the Hirsch Vineyard Pinot Noir 2010 are quintessential Hirsch; expressive with raspberry, green tea, sandalwood and balsam. The palate shows the noble side of Pinot Noir; fine but resolved tannins that give way to great freshness as a result of the well preserved acidity." +Failla Occidental Ridge Vineyard Pinot Noir 2010,"Sonoma County, California",Red Wine,97.0,"2010 brought out more of Occidental's savory side with aromatics of maple syrup, pecan, and sassafras. Brighter on the palate this vintage, with a juicy mouthfeel balanced by acidity and resolved firm tannins." +Famille Perrin Gigondas l'Argnee Vieilles Vignes 2012,"Gigondas, Rhone, France",Red Wine,97.0,"This wine gets its exceptional aromas from vines spanning less than 1 hectare, with nearly 100 years in age." +Far Niente Cabernet Sauvignon 2005,"Oakville, Napa Valley, California",Red Wine,96.0,"Notes of dense black fruit, anise and blackberries appear up front followed by hints of fruit jam and dark chocolate. In the mouth, this wine unfolds in layers, beginning with a round and supple entry and progressing to a full, weighty structure on the palate. The silky tannins are textured and coating, producing a wine that is smooth from start to finish." +Fattoria Le Pupille Elisabetta Geppetti Saffredi (1.5 Liter Magnum) 2013,"Tuscany, Italy",Red Wine,98.0,"Rich garnet red in color, with an opulent bouquet of black plums, cassis, cedar spice, and violet this wine exudes pedigree. Warm and luscious, the fruit expands on the palate as the well-integrated tannins fill the mouth. Long and lingering the finish is unforgettable." +Fattoria Le Pupille Elisabetta Geppetti Saffredi (1.5 Liter Magnum) 2017,"Tuscany, Italy",Red Wine,97.0,"Deep ruby color with purple reflections. It shows pronounced flavors of black fruits like blackcurrant and black cherry along with spicy aromas of cloves, cinnamon and licorice. The palate has a generous velvety texture with round tannins and a return of the fruit for a long and persistent finish." +Fattoria Le Pupille Elisabetta Geppetti Saffredi 2013,"Tuscany, Italy",Red Wine,98.0,"Rich garnet red in color, with an opulent bouquet of black plums, cassis, cedar spice, and violet this wine exudes pedigree. Warm and luscious, the fruit expands on the palate as the well-integrated tannins fill the mouth. Long and lingering the finish is unforgettable." +Fattoria Le Pupille Elisabetta Geppetti Saffredi 2017,"Tuscany, Italy",Red Wine,97.0,"Deep ruby color with purple reflections. It shows pronounced flavors of black fruits like blackcurrant and black cherry along with spicy aromas of cloves, cinnamon and licorice. The palate has a generous velvety texture with round tannins and a return of the fruit for a long and persistent finish." +FEL Savoy Vineyard Pinot Noir 2015,"Anderson Valley, Mendocino, California",Red Wine,97.0,"Aromatic waves of black cherry, pomegranate, and boysenberry fill the glass of this elegantly concentrated wine. Subtle notes of anise, black tea leaves, and redwood needles add further depth and complexity to the nose. The weight and concentration of this heady wine is immediately apparent in the mouth, with dense layers of black fruit, pencil shavings, and hints of cocoa. The velvet-like tannins provide structure that is punctuated by a refreshingly acidic finish that lingers in the mouth for several minutes. This wine will age gracefully for a full decade or more. " +Felsina Chianti Classico Riserva Rancia (1.5 Liter Magnum) 2006,"Chianti Classico, Chianti, Tuscany, Italy",Red Wine,96.0,"Brilliant, rich ruby red. Spicy nose with floral notes and wild berry nuances. Spice continues in the mouth, nicely complemented by a dense, soft fabric of youthful tannins; excellent structure and superb overall character." +Felsina Maestro Raro Cabernet Sauvignon 2016,"Tuscany, Italy",Red Wine,97.0,"The grapes come from the vineyards Rancia Piccola and Poggiolo, the first also called Mastro Raro, adjacent and similar to that of Rancia. The best-known and most wydely-planted red grape in the world, Cabernet Sauvignon, was planted here, right in the locus of the Felsina terroir at its most classic. First vintage 1987. " +Ferrari Giulio Ferrari Riserva del Fondatore 2006,"Trentino, Trentino-Alto Adige, Italy",Sparkling & Champagne,97.0,"It presents itself in the glass with a glowing golden hue, highlighted by extremely fine, persistent bubbles. The bouquet displays an incredible succession of sensations that continue to alternate, ranging from citrus zest to creamy eggnog, from mango to sugared almonds, and from acacia blossom to freshly baked brioche, all underpinned by an enticing hint of iodine. The entry on the palate is sumptuous in its unbridled elegance and light in its incredibly concentrated fruitiness, which offers reminiscences of ripe pineapple, dried fruits and toasted hazelnuts. The finish is very refined, revealing lingering brackish notes that give even greater length to the aftertaste." +Ferrer Bobet 2008,"Priorat, Spain",Red Wine,96.0,"Ferrer Bobet is primarily a blend of Carignane and Grenache, from hundred year old vines in some of the best vineyards in Priorat, sourced while their own vineyards mature. Though the ""second wine"" of Ferrer Bobet, the initial 2005 release put Ferrer Bobet on the wine world map. It launched the Ferrer Bobet mission of creating wines of elegance and purity, and the message has resonated." +Figgins Estate Red Wine 2010,"Walla Walla Valley, Columbia Valley, Washington",Red Wine,97.0,"Intoxicating aromas of cinnamon, dried flowers, baking spices, and blackberry puree. Not as immediately sexy and appealing as the voluptuous 2009 but exhibiting all of the same charactersitics of Figgins Estate Vineyard with more classic structured backbone and long term attractiveness.. This vintage shows amazing purity of fruit and aromatics, balanced by the structure and acidity of a cool vintage, with an immaculate finish to both the weather and the wine." +Flora Springs Rutherford Hillside Reserve Cabernet Sauvignon 1994,"Napa Valley, California",Red Wine,96.0,"This wine is absolutely delicious with ripe, luscious fruit that wraps around the tannins. It is a seductive wine with vibrant aromas and flavors of jammy blackberries, spice, black currants, vanilla and black licorice." +Flowers Sea View Ridge Pinot Noir 2010,"Sonoma County, California",Red Wine,98.0,"Deep vibrant red color. Delicate floral notes of rose petal and bergamot combine with hints of forest floor, earth and ripe cherry. Flavors emerge with raspberry, red current and dried cherry with hints of graphite and other minerals. The wine's texture is elegant and smooth across the palate with an enduring finish." +Flowers Sea View Ridge Pinot Noir 2014,"Sonoma Coast, Sonoma County, California",Red Wine,96.0,"Deep garnet core. is wine is deceptively elegant and complex with aromas of rhubarb, Bing cherry, pomegranate and blood orange mingling with talc, white pepper, and redwood spice. On the palate are darker berry fruits with orange zest and savory notes. Well-integrated silky tannins and brilliant acidity, this wine unfolds in the glass with layers and nuance. Made with 100% Pinot Noir." +Fonseca Vintage Port 1963,Portugal,Collectible,96.0,"Rich full ruby center, tawny highlights. A wine in total harmony on the bouquet. The nose overflows with aromas of cured leather, warm marmalade, cinnamon, scented rosewood. Pungent, fat, rounded; oodles of volume on the nose. Then wonderful pear drop lift on the finish. " +Fonseca Vintage Port 1992,Portugal,Collectible,97.0,"Fonseca vintage ports are renowned for their great fruit richness and voluptuousness, and, while powerful and mouthfilling, for their breed and balance. In the context of each vintage, they combine the tannic dimension and grip which give great port its longevity with the structure and complexity that are Fonsecas hallmark." +Fonseca Vintage Port 1994,Portugal,Collectible,97.0,"Dark red, ruby edge. Dense blackcurrant fruit, very fresh and elegant, incredible balance of fine fruit and the first hints of bottle maturity. On the palate it is very full, with lots of fine tannins which carry loads of fresh blackcurrant fruit. The youth it still holds today is the testament of how extraordinary this vintage is, and the capacity it has to continue to age for the rest of this century." +Fontodi Flaccianello della Pieve 2015,"Tuscany, Italy",Red Wine,96.0,Flaccianello combines all the wild and old-world characteristics of the Sangiovese grape with the modern vinification techniques of what may be the top winemaking house in Tuscany today. The vineyards from which this wine takes its name continues to produce a Sangiovese of superior quality year on year. Made with 100% Sangiovese. +Forjas del Salnes Leirana Finca Genoveva Albarino 2018,"Rias Baixas, Spain",White Wine,96.0,"Brilliant straw-yellow. Fresh quince, tangerine and lemongrass on the intensely perfumed nose, which is complicated by floral and quinine nuances that build with air. Shows impressive nerve and mineral lift on the palate, offering vibrant citrus and orchard fruit flavors and a suave floral nuance. Finishes taut, racy and very long, displaying superb focus and an echo of florality. " +Fox Creek Reserve Shiraz 1998,Australia,Red Wine,96.0,Powerful blackberries and blackcurrant flavors together with licorice and dark chocolate. These flavors are balanced by firm acidity and fully integrated tannin giving a wine of extraordinary depth and length of finish. This is the epitome of Fox Creek's Reserve Shiraz style. +Frederic Esmonin Ruchottes-Chambertin Grand Cru (1.5 Liter Magnum) 2016,"Gevrey-Chambertin, Cote de Nuits, Cote d'Or, Burgundy, France",Red Wine,96.0,"Ruchottes is a very small Grand Cru, divided into three lieu-dits: Ruchottes du Dessus, Clos des Ruchottes and Ruchottes du Bas, which sits directly above Mazy-Chambertin Haut. The top sections of the Ruchottes are quite steep, with very shallow, and very poor topsoil due to erosion, whereas the lower sections are not quite as infertile. The wines from Ruchottes tend to be characterized as being more structured than other grand crus, but in reality they are finely fruited and more detailed, causing them to appear to be more structured than wines with a heavier fruit profile. The 60 year old vines work their way through the fractured Premeaux and Oolite limestone which lies just beneath the surface. Some Pinot Beurrot in this parcel gives the wine an added measure ofgras, notes Frédéric Esmonin” (Tanzer 2/2016)." +Frederic Esmonin Ruchottes-Chambertin Grand Cru (3 Liter) 2016,"Gevrey-Chambertin, Cote de Nuits, Cote d'Or, Burgundy, France",Red Wine,96.0,"Ruchottes is a very small Grand Cru, divided into three lieu-dits: Ruchottes du Dessus, Clos des Ruchottes and Ruchottes du Bas, which sits directly above Mazy-Chambertin Haut. The top sections of the Ruchottes are quite steep, with very shallow, and very poor topsoil due to erosion, whereas the lower sections are not quite as infertile. The wines from Ruchottes tend to be characterized as being more structured than other grand crus, but in reality they are finely fruited and more detailed, causing them to appear to be more structured than wines with a heavier fruit profile. The 60 year old vines work their way through the fractured Premeaux and Oolite limestone which lies just beneath the surface. Some Pinot Beurrot in this parcel gives the wine an added measure ofgras, notes Frédéric Esmonin” (Tanzer 2/2016)." +Freeman Keefer Ranch Pinot Noir 2008,"Russian River, Sonoma County, California",Red Wine,96.0,"The 2008 Freeman Keefer Ranch Pinot Noir is reminiscent of the soft and fruity 2007 version. There's a beautiful nose of rhubarb, black cherries, spicy oak and cola that seems to change every time you pick up the glass. On the palate, the texture is seductive with perfect acidity and very pleasant cranberry and cherry flavors. The finish is long with toasty oak and fruit. We anticipate the best drinking window to be from 2011 to 2015 for the '08 Freeman Keefer. " +Freemark Abbey Bosche Cabernet Sauvignon 2012,"Rutherford, Napa Valley, California",Red Wine,97.0,"Dark ruby in color, the 2012 Bosché has sweet black cherry aroma with integrated oak spice and black fruits. The complexity in the nose expresses green olive, aromatic cedar, walnut meat, mushroom and dark chocolate. The flavor is big, voluptuous, soft and velvety, with rich great depth of black fruit. The tannins are well integrated providing a very long fruitful finish." +Freemark Abbey Bosche Cabernet Sauvignon 2014,"Rutherford, Napa Valley, California",Red Wine,96.0,"Very dark (opaque) ruby in color, the 2014 Bosché has a rich, dusty blackberry and cassis aroma, with immense depth and complexity. The sweet oak spice is well integrated with spice nuances of cinnamon, clove, aromatic cedar, black pepper, and dark cocoa powder. The flavor is big, voluptuous, soft, and velvety, with rich great depth of black fruit. With balanced acidity, good body, and texture, the tannins are well integrated providing a very long fruitful finish." +Freemark Abbey Sycamore Cabernet Sauvignon 2015,"Rutherford, Napa Valley, California",Red Wine,97.0,"This opaque dark ruby wine has aromas of black currant and blueberry, with nuances of blackberry jam on toast, dark chocolate truffle, and forest floor. The oak adds the right amount of complexity with aromatic cedar, cinnamon, and clove. The wine has a great depth of black fruit flavor, with a strong expression of sweet black cherry and dark plum. There is a complexity in the nose that hints of tobacco, Mexican spice, and a briary thicket. This full-bodied cabernet sauvignon has expressive tannin, and, with good acidity, shows great aging potential. " +Frescobaldi Castelgiocondo Brunello di Montalcino 1997,"Montalcino, Tuscany, Italy",Red Wine,96.0,"CastelGiocondo Brunello di Montalcino presents a clear ruby red with garnet highlights. Pronounced notes of blackberry elegantly accompanied by floral notes such as violet. The nose is complex and well-blended: spicy notes of black pepper and clove, tobacco and leather, and ""jus de viande"" reflect well the evolution of the wine. Resonating tannin textures, mellow structure with a long and elegant finish." +Frescobaldi Castelgiocondo Brunello di Montalcino Riserva 1999,"Montalcino, Tuscany, Italy",Red Wine,97.0,"A generous, multi-layered aromatic spectrum, veined with crisp nuances of menthol, followed by clean-edged fragrances of dark red berries, in particular blackberry and blueberry. Last to emerge are notes of rich spice, where elegant hints of black pepper and cinnamon predominate, capped by pungent tobacco leaf. " +Frescobaldi Castelgiocondo Brunello di Montalcino Ripe di Convento Riserva 2012,"Montalcino, Tuscany, Italy",Red Wine,96.0," Intense and brilliant ruby red in colour, the wine is complex and intense on the nose: aromatic expression is of alternating notes of red and black fruits, damson and blackcurrant, before giving way to mineral notes of spice and incense. On the palate Ripe al Convento is opulent, enveloping, harmonious and rich with elegant tannins balanced by excellent flavour and acidity. The finish is persistent, lingering and aromatic." +Frescobaldi Castiglioni Giramonte 2006,"Tuscany, Italy",Red Wine,97.0,"Giramonte is Tenuta di Castiglioni's single-vineyard cru, produced in limited quantities from merlot and sangiovese. A purple-rimmed ruby red, so intense as to be almost opaque. Intense aromas of wild cherry and blackberry, both fresh-picked and as preserves, in addition to roasted hazelnuts, espresso beans, chocolate, vanilla, and cocoa butter, with spicy impressions of clove. Rich and smooth in the mouth, with an emphatic suite of smooth, velvety tannins and very lengthy development and finish." +Fuligni Brunello di Montalcino Riserva 2001,"Montalcino, Tuscany, Italy",Red Wine,97.0,"Only made in the finest years, the Fuligni Brunello di Montalcino Riserva shows remarkable elegance and complexity, and a beautiful bouquet of marasca cherries, tobacco and mint, with a lovely, long finish." +Futo (1.5 Liter Magnum) 2007,"Napa Valley, California",Red Wine,97.0,FUTO is the culmination of our efforts to produce the finest Cabernet-based blend possible from our estate vineyards. In making FUTO we strive for a balance of complexity and focus. We believe the wine should display power while retaining the site-specific characteristics that make the wine unique. +Futo 2007,"Oakville, Napa Valley, California",Red Wine,97.0,FUTO is the culmination of our efforts to produce the finest Cabernet-based blend possible from our estate vineyards. In making FUTO we strive for a balance of complexity and focus. We believe the wine should display power while retaining the site-specific characteristics that make the wine unique. +Futo 2011,"Oakville, Napa Valley, California",Red Wine,97.0,"This wine’s aroma has it all: plums, incense, tobacco leaf, violets, and exotic spices. Zero racking and extended lees contact has given the 2011 FUTO a satisfying balance of creamy richness and superb freshness. Generous and inviting flavors of black-skinned fruits, cappuccino, citrus and cloves work in harmony with the sweet tannin and well integrated oak. While texturally approachable now, the inner density and complexity of this wine will continue to unfold with cellar age." +Futo 2013,"Oakville, Napa Valley, California",Red Wine,98.0,"A complex wine from a complex estate. The FUTO Oakville Estate Red Wine finds its feet with rich, sumptuous Cabernet Sauvignon but leans heavily on Cabernet Franc for poise and finesse. Petit Verdot is layered in for good measure." +Futo 5500 Cabernet Sauvignon 2014,"Stags Leap District, Napa Valley, California",Red Wine,96.0,"The 2014 FUTO 5500 is as clear as a bell. Vivid aromatics of cherry blossom, raspberry and currents, and a beguiling note of alpine herbs combine in a plush yet dense center. In addition to all this freshness is an almost glaze-like layer that provides an explosive backdrop to the contoured finish. The power, purity, and personality of this vintage will provide a thrill ride young or old. Blend: 95% Cabernet Sauvignon, 5% Merlot." +Futo Cabernet Sauvignon 5500 (1.5 Liter Magnum) 2013,"Oakville, Napa Valley, California",Red Wine,98.0,"An opulent wine with saturated purple color. Pure aromas of black cassis, kirsch, mulberry and violets. A wine of great intensity and presence, but freshness and precision. The oak is nearly all concealed by the fruit which is penetrating and supported by powdery tannins and perfect acidic tension. The finish is complex with an added mineral stain leaving no doubt this wine has the reserves to age for decades." +Futo Cabernet Sauvignon 5500 2012,"Stags Leap District, Napa Valley, California",Red Wine,99.0,"An opulent wine with saturated purple color. Pure aromas of black cassis, kirsch, mulberry and violets. A wine of great intensity and presence, but freshness and precision. The oak is nearly all concealed by the fruit which is penetrating and supported by powdery tannins and perfect acidic tension. The finish is complex with an added mineral stain leaving no doubt this wine has the reserves to age for decades." +Futo Cabernet Sauvignon 5500 2013,"Oakville, Napa Valley, California",Red Wine,98.0,"An opulent wine with saturated purple color. Pure aromas of black cassis, kirsch, mulberry and violets. A wine of great intensity and presence, but freshness and precision. The oak is nearly all concealed by the fruit which is penetrating and supported by powdery tannins and perfect acidic tension. The finish is complex with an added mineral stain leaving no doubt this wine has the reserves to age for decades." +Gaja Costa Russi 1997,"Piedmont, Italy",Red Wine,97.0,"Drinking wonderfully at the moment, but will improve further with age. Aromas of berry, mint, roses and violets follow through to a medium-to full-bodied palate, with round, velvety tannins and a ripe fruit aftertaste. Drink now through 2010." +Gaja Costa Russi 1996,"Piedmont, Italy",Red Wine,97.0,"Drinking wonderfully at the moment, but will improve further with age. Aromas of berry, mint, roses and violets follow through to a medium-to full-bodied palate, with round, velvety tannins and a ripe fruit aftertaste. Drink now through 2010." +Gaja Costa Russi 2005,"Piedmont, Italy",Red Wine,96.0,Color: Dark ruby/purple +Gaja Costa Russi 2007,"Piedmont, Italy",Red Wine,97.0,"Dark ruby/purple. A captivating and refined nose with well-integrated aromas of blackberries, violets and roasted coffee beans. Elegance and crystal purity characterize this extremely complex and densely woven wine with an aging potential of decades." +Gaja Sori Tildin 1997,"Piedmont, Italy",Red Wine,97.0,"This Piedmont beauty is dark in color and beautifully compacted on the midpalate, where it displays gorgeous blackberry, black cherry, mint and spicy oak notes. Tannins are firm and ripe. A serious red that needs time. Best from 2002 through 2008." +Gaja Sperss 2007,"Piedmont, Italy",Red Wine,97.0,"The nose shows a dark, pure and very focused fruit with classic hints of tar, licorice and a touch of truffles. Sperss displays the austere character typical of Serralunga terroir: deep structure and lots of ripe tannins. Dense, massive yet seamless, this beautifully integrated wine possesses low acidity as well as a terrific finish." +Gaja Sperss 2013,"Barolo, Piedmont, Italy",Red Wine,96.0,"Ruby red color. Aromas are dark, pure and very focused with classic hints of tar, licorice, and a touch of truffles. On the palate, Sperss displays the austere character typical of Serralunga terroir: deep structure and lots of ripe tannins. Dense, massive yet seamless, the beautifully integrated wine possesses low acidity as well as a terrific finish." +Gaja Sugarille Brunello di Montalcino 2010,"Montalcino, Tuscany, Italy",Red Wine,96.0,"Deep ruby in color. Rich, complex aromas of ripe fruit (plums and wild cherries), violets and hints of cloves and tobacco. Elegant structure and ripe, well-integrated tannins. This wine is normally more austere in youth than Rennina due to the slightly firmer tannic structure; but after 5-7 years, its depth and concentration lead to a complex flavor profile of great balance." +Galardi Roccamonfina Terra di Lavoro 2004,Italy,Red Wine,97.0,"The wine is deep purple in color with smoky, earthy aromas and hints of tobacco and graphite. Notes of ripe black cherries, cassis, tobacco and leather come through on the palate of this big-structured, full-bodied wine. This iconic wine pairs beautifully with Italian or French pot roasts, filet mignon or aged cuts of beef. " +Galardi Roccamonfina Terra di Lavoro 2008,Italy,Red Wine,97.0,"The family owned Galardi estate produces just one wine and it does so with perfection. Located onvolcanic slopes in northwestern Campania, the vineyards are nestled among chestnut groves andbenefit from Mediterranean Sea breezes. Terra di Lavoro actually means ""land of work"" in Italian, aname that has historical roots, but also accurately reflects the difficult volcanic soil compositionwhich results in very low yields. In this challenging environment, Aglianico and its supporting grapePiedirosso produce wines of incredible depth, complexity and elegance." +G.D. Vajra Langhe Freisa Kye 2008,"Piedmont, Italy",Red Wine,96.0,"Freisa is an ancient and noble variety of grape. A relative of Nebbiolo, it shares the same character, crispy acidity and tannic structure. Freisa saves the same taste the variety had centuries ago in its own genes. Made with 100% Freisa grapes." +Gemstone Vineyard Estate Cabernet Sauvignon 2013,"Yountville, Napa Valley, California",Red Wine,96.0,"This is a well-structured Cabernet Sauvignon, with notes of crème de cassis, rose, black chocolate, baked fruit, tobacco and vanilla bean. We love it for it’s juicy mouth feel, layered textured and a lingering finish with just the right amount of acidity to balance the mature tannins. Produced from 6 different blocks on the estate, this wine is a true reflection of the diversity of our property, in addition to an exceptional vintage with long aging potential. " +Gemstone Vineyard Estate Red Wine 2013,"Yountville, Napa Valley, California",Red Wine,96.0,"The Gemstone Vineyard 2013 Estate Red Wine is a blend of estate-grown Cabernet Sauvignon, Merlot, Cabernet Franc and Petit Verdot from several micro-blocks and distinctive clones from our 16-acre vineyard. This rich and complex wine is luscious and seductive with hints of blueberries, mocha, cherry cola, and creamy vanilla. The opulent, sweet and silky tannins lead to a long finish and a wine that will age for 15+ years. " +Georges Vernay Condrieu Coteau de Vernon 2006,"Condrieu, Rhone, France",White Wine,96.0,This very steep vineyard makes any mechanization impossible. The vines are manually kept without the use of residual herbicide or insecticide. +Georges Vernay Condrieu Les Chaillees de L'Enfer 2016,"Condrieu, Rhone, France",White Wine,96.0,"Opulent, full-bodied and aromatic, this is a remarkably well balanced wine." +Georges Vernay Cote-Rotie Maison Rouge 2016,"Cote Rotie, Rhone, France",Red Wine,96.0,The very rugged vineyard makes any mechanization impossible. The vines are maintained manually. Phytosanitary treatments are made with organic products +Giacomo Conterno Cascina Francia Barolo (1.5 Liter Magnum) 2004,"Barolo, Piedmont, Italy",Red Wine,97.0,"In years of outstanding quality, a selection is made while the Nebbiolo grapes are still on the vines, and the very best are reserved to become Monfortino. The two Barolos are fermented identically, with the exception that no temperature control is employed for Monfortino no matter how high the temperatures may go. The wines are then racked into their respective botti for elevage. The Barolo ""Cascina Francia"" is bottled after approximately four years in wood, and the Monfortino after approximately seven years." +Giacomo Conterno Cascina Francia Barolo 2004,"Barolo, Piedmont, Italy",Red Wine,97.0,"In years of outstanding quality, a selection is made while the Nebbiolo grapes are still on the vines, and the very best are reserved to become Monfortino. The two Barolos are fermented identically, with the exception that no temperature control is employed for Monfortino no matter how high the temperatures may go. The wines are then racked into their respective botti for elevage. The Barolo ""Cascina Francia"" is bottled after approximately four years in wood, and the Monfortino after approximately seven years." +Giacomo Conterno Monfortino Barolo Riserva 2002,"Barolo, Piedmont, Italy",Red Wine,98.0,Fruit Source:Cascina Francia cru in Serralunga +Giacomo Conterno Monfortino Barolo Riserva 2006,"Barolo, Piedmont, Italy",Red Wine,98.0,"The bouquet is perfectly matched to the wine. Elegance and finesse add contrast to the wine’s sheer power and determination. Dried rose, licorice, tar, spice and tobacco show immense definition and focus." +Giacomo Conterno Monfortino Barolo Riserva 2010,"Barolo, Piedmont, Italy",Red Wine,97.0,"Since 1978, both Barolos—Monfortino and Cascina Francia—have been sourced exclusively from Cascina Francia. Monfortino represents, of course, a selection of the best grapes in the greatest years. But it also made differently, first undergoing an uncontrolled fermentation at relatively high temperatures. On average, Monfortino also remains an additional three years longer in large oak casks (botti). Monfortino’s extra aging in cask, says Roberto, is a consequence of the extraordinary structure, power and concentration of the wine." +Giaconda Estate Chardonnay 2004,Australia,White Wine,96.0,"Racy yet very textural. Powerful nose with an interesting combination of fruit and mineral while the palate has extreme impact and focus. Signature Giaconda flavors of meal and hazelnut, great length and balance. This is all about concentration with great finesse. Don't miss this as it should turn out to be a real classic. " +Gianni Brunelli Brunello di Montalcino Riserva 2013,"Montalcino, Tuscany, Italy",Red Wine,96.0,"Deep ruby red with garnet reflections. Austere and ethereal aromas with leather and black cherry notes, intense and enveloping. Remarkable structure with well defined tannins, good acidity, marked personality, typical." +Gibson Old Vine Shiraz 2002,Australia,Red Wine,96.0,"Aged in 100% new oak (70% French and 30% American), the 2002 Shiraz Old Vine Collection is an amazing Shiraz produced from 92- to 139-year-old vines. Surprisingly, it possesses ""only"" 14+% alcohol. A deep saturated purple color is followed by aromas of espresso roast, white chocolate, pepper, blackberry liqueur, and melted asphalt. This is a youthful, primary red displaying an incredible wealth of fruit, magnificent glycerin as well as depth, and a monster finish of 70+ seconds. This stunning 2002 should hit its prime in 2-4 years, and last for 15 or more." +Giovanni Corino Barolo Vigna Giachini 2005,"Barolo, Piedmont, Italy",Red Wine,96.0,"Barolo Vigna Giachini is intense and opulent, vibrant with fruit and the vanilla-cedar aromas that oak confers. In my opinion Giachini is the most representative cru of the Annunziata subzone of La Morra. It displays all the trademarks of this splendid vineyard area: fragrance and length, soft supple tannins and a fullbodied generosity dressed in flawless austerity. A profound wine." +Giuseppe Rinaldi Barolo Brunate 2010,"Barolo, Piedmont, Italy",Red Wine,97.0,#51 +Giuseppe Rinaldi Barolo Brunate Le Coste 2007,"Barolo, Piedmont, Italy",Red Wine,96.0,"The Brunate and Le Coste grapes were vinified in different ways: the Brunate fruit was kept apart, and went into a special riserva that rested in the cellar in large bottles for ten years and was then put in standard bottles, while the other lots, following one of the most hallowed Barolo traditions, were meticulously blended together." +Glaetzer Amon Ra Shiraz (1.5 Liter Magnum) 2006,"Barossa Valley, Barossa, South Australia, Australia",Red Wine,99.0,"97-100 points WA ""Amon-Ra has become one of Australia's icon wines. Made from 100% Shiraz sourced from vineyards ranging in age from 80-120 years and with microscopic yields of 0.5 tons per acre, the 2006 Amon-Ra was aged for 15 months in new French and American oak. The wine is a thick, glass-coating, purple/black in color. The aromas cover a wide range of scents including smoke, vanilla, pepper, Asian spices, coconut, espresso, blueberry, and chocolate. Thick, rich, layered, and complete, this monumental wine offers extraordinary intensity and length. It requires 10-15 years to fully evolve and should easily last through 2040. Hats off to Ben Glaetzer for producing an extraordinary portfolio! The renowned winemaker, Ben Glaetzer, sources all of his fruit for this label from the Ebenezer district in the northern Barossa. Many knowledgeable experts cite this sub-region as the finest in the Valley."" - Wine Advocate" +Glaetzer Amon Ra Shiraz 2002,"Barossa Valley, Barossa, South Australia, Australia",Red Wine,96.0,"The 2002 vintage in the Barossa was a spectacular year - wines of great fruit richness and intensity. Dense purple color, with aromas of raspberry, plum and perfumed fruit. A rich and powerful palate that is underpinned by fine-grained tannins which will ensure great longevity if cellared well." +Glaetzer Amon Ra Shiraz 2007,"Barossa Valley, Barossa, South Australia, Australia",Red Wine,99.0,"Amon-Ra is considered to be the king of all gods. The temple of Amon-Ra, now known as the temple of Karnak, was believed to be the first temple to ever plant a mono-culture vineyard to produce wine for the citizens of the temple. Rameses 111 lists 513 vineyards belonging to the temple of Amon-Ra." +Glaetzer Amon Ra Shiraz 2009,"Barossa Valley, Barossa, South Australia, Australia",Red Wine,96.0,"The key to Amon-Ra Shiraz is balancing the extraction, rather than maximizing it. The fruit has such expression that we aim to preserve the characteristics of the vineyard rather than dominate them. " +Glaetzer Anaperenna Shiraz/Cabernet Sauvignon 2006,"Barossa Valley, Barossa, South Australia, Australia",Red Wine,97.0,"""The 2006 Shiraz (75%) – Cabernet Sauvignon (25%) ""Anaperenna"" is the wine formerly known as Godolphin, the change resulting from a trademark dispute. It was aged for 15 months in new French and American oak. Opaque purple, it offers a sensational bouquet of pain grille, scorched earth, meat, game, blueberry, and black currants. This is followed by a surprisingly elegant yet powerful, structured wine with gobs of spicy fruit, ripe tannins, and a plush texture. The long, 60-second finish is succulent and sweet. Give this classy wine 4-6 years in the cellar and enjoy it through 2030. Hats off to Ben Glaetzer for producing an extraordinary portfolio! The renowned winemaker, Ben Glaetzer, sources all of his fruit for this label from the Ebenezer district in the northern Barossa. Many knowledgeable experts cite this sub-region as the finest in the Valley.""" +Glaetzer Godolphin Shiraz/Cabernet Sauvignon 2004,"Barossa Valley, Barossa, South Australia, Australia",Red Wine,98.0,"The wine is a seamless fusion of two varieties, Shiraz and Cabernet Sauvignon. A vibrant plummy red in color. On the nose, there are lifted blackcurrant and briary fruit, expressive of Cabernet Sauvignon, with pure cinnamon and chocolate spice. The Cabernet components remained on skins for 2-3 months and developed a savory complexity which tightens the shiraz. The palate has leafy, herbaceous notes and rich dark fruit flavours. Well-rounded and velvety, the tannins are ripe and focussed." +Goldschmidt Vineyard Oakville Game Ranch Cabernet Sauvignon PLUS 2005,"Oakville, Napa Valley, California",Red Wine,96.0,"The prestigious Game Ranch Vineyard is situated in the famed Oakville appellation in the heart of the Napa Valley. Located on an old river bottom on the eastern bench of the Silverado Trail, the vineyard is made up of very rocky, well draining soils. In this stressful, low moisture environment, the vines struggle to put everything they can into the development of the fruit. With perfect control over the watering of this vineyard site we are able to coax the vines to produce grapes of great concentration and exceptional quality. Made with 100% Cabernet Sauvignon." +Gosset Celebris Extra Brut with Gift Box 2002,"Champagne, France",Sparkling & Champagne,96.0,"In 1993, cellarmaster Jean-Pierre Mareigner decided to pursue a project that had originated with Albert Gosset (15th generation, 1915-1991) — a prestige cuvée that would represent the best of Champagne Gosset. Thus was born CELEBRIS, a 1988 vintage cuvée, sold for the first time in 1995. This cuvée is the culmination of the Gosset style and immediately joined other high-end champagnes in its class. The great aromatic complexity and beautiful finesse that distinguishes this wine mean it can be paired with the most elaborate dishes." +Graham's Stone Terraces Vintage Port 2011,"Douro, Portugal",Collectible,96.0,Intense tannic structure and color of purple-black intensity. Fresh scented aromas of violets and mint. there is a complex palate of weighty and spicy tannins and combined with blackberry and blackcurrant fruit. +Graham's Vintage Port 1963,"Douro, Portugal",Collectible,96.0,"Power, dimension and real character are all hallmarks of this most memorable Vintage. Even after many years the Graham's 1963 never fails to impress with its superbly balanced components of fruit, tannin and elegance. This wine shows elegant ""rose petal"" aromas. The flavors are of concentrated caramelised fruit in perfect balance." +Graham's Vintage Port 1985,"Douro, Portugal",Collectible,96.0,"First unanimous declaration since 1975. Known for their huge amounts of luscious fruit and round tannins. One of the best wines of the vintage, full-bodied, full tannins with long finish. Drink 2000 and onwards." +Grand Reve Collaboration Series Reserve Cabernet Sauvignon 2007,"Red Mountain, Yakima Valley, Columbia Valley, Washington",Red Wine,96.0,"Vineyard Manager Ryan Johnson carefully selected the best Cabernet Sauvignon from Ciel du Cheval to be crafted by winemakers Mark McNeilly and Ross Mickel into a vin de garde. Aged in 100% new French oak barrels, this Reserve Cabernet Sauvignon is an uncompromising tribute to this outstanding vintage and vineyard." +Greenock Creek Alices Shiraz 2001,"Barossa Valley, Barossa, South Australia, Australia",Red Wine,98.0,"Rich and fleshy, with pretty coffee, plum, wild berry and spice notes that are smooth and polished, long and flavorful. An extremely limited release wine from one of Australia's ""Cult"" wineries." +Greenock Creek Alices Shiraz 2002,"Barossa Valley, Barossa, South Australia, Australia",Red Wine,96.0,"Rich and fleshy, with pretty coffee, plum, wild berry and spice notes that are smooth and polished, long and flavorful. An extremely limited release wine from one of Australia's ""Cult"" wineries." +Greenock Creek Alices Shiraz 2004,"Barossa Valley, Barossa, South Australia, Australia",Red Wine,98.0,"""The 2004 Shiraz ""Alice's Block"" received the same 28 months in used American oak. The riveting nose of smoke, asphalt, earth, truffle, blackberry, and blueberry roars from the glass. Dense, packed, and opulent, it somehow is able to concurrently exhibit finesse and elegance. Amazingly pure and long in the finish, one's first reaction is that it cannot get any better. Remarkably, it does. Greenock Creek Vineyard and Cellars, owned by Michael and Annabelle Waugh, is one of the Barossa's benchmark wineries. Start with a great terroir, add in old vine material, and meticulous winemaking and the results are usually extraordinary."" - Wine Advocate" +Greenock Creek Alice's Shiraz 2003,"Barossa Valley, Barossa, South Australia, Australia",Red Wine,97.0,"Rich and fleshy, with pretty coffee, plum, wild berry and spice notes that are smooth and polished, long and flavorful. An extremely limited release wine from one of Australia's ""Cult"" wineries." +Greenock Creek Apricot Block Shiraz 2000,"Barossa Valley, Barossa, South Australia, Australia",Red Wine,96.0,"This rich, dark red wine has complex aromas of spice and fruit, plums, berries and a splash of dark chocolate with a lingering velvety finish." +Greenock Creek Apricot Block Shiraz 2001,"Barossa Valley, Barossa, South Australia, Australia",Red Wine,99.0,"The Shiraz Apricot Block, 360 cases produced from microscopic yields of .9 tons of fruit per acre (8-year old vines), tips the scales at 14.5% alcohol, and was aged in both new and old large American barrels (called hogsheads) prior to being bottled unfiltered. This dense, chewy Barossa classic has a finish that lasts over 60 seconds. Although still somewhat primary, it reveals tremendous potential, even from this challenging vintage." +Greenock Creek Apricot Block Shiraz 2002,"Barossa Valley, Barossa, South Australia, Australia",Red Wine,96.0,"This rich, dark red wine has complex aromas of spice and fruit, plums, berries and a splash of dark chocolate with a lingering velvety finish. " +Greenock Creek Creek Block Shiraz 2002,"Barossa Valley, Barossa, South Australia, Australia",Red Wine,96.0,"This is more immediately harmonious and polished than most recent Creeks. It seems to be more classically predictable Barossa Shiraz of the highest order than one of your typically dirty, swampy, sweaty bayou-bluesy brutes. Its smooth, glossy aroma lets little glints of the usual aniseed and chocolate components show with time, and theres that delightful lolly shop whoof of dusting sugar, but thats it for the first half hour. The palates slender, with the lithe, sinuous acidity of a pole-vaulter, but hidden in a delicious wrapping of the cleanest, most intense and promising Shiraz possible. " +Greenock Creek Creek Block Shiraz 2004,"Barossa Valley, Barossa, South Australia, Australia",Red Wine,99.0,"This ones not as swampy and marshy as many Creek Blocks have been, and while many have displayed fennel aromas - the volatile fennel grows right along the creek - the distinguishing factorthat tells us this is Creek Block is its mild Dutch licorice tang, with that pinch of salt. Theres no Piltdown Man this year, but a pleasant touch of tea tin, and overt chocolate, like in 1999 and 2003,with a pleasing shot of after dinner mint as well. The palates massive and squishy, like dark chocolate custard in a trifle, and that black tea comes back with its tannin to balance the lingering,solicitous, salacious finish. Like the 1999, the wine seems more alluringly feminine than most Creek Blocks." +Greenock Creek Roennfeldt Road Shiraz 1997,"Barossa Valley, Barossa, South Australia, Australia",Red Wine,98.0,"This flagship wine is a monster from century old vines. It speaks for itself – complex and intense, with masses of berry fruit and spice flavors that are complemented with a lovely oak finish that lingers on and on." +Greenock Creek Roennfeldt Road Shiraz 1999,"Barossa Valley, Barossa, South Australia, Australia",Red Wine,98.0,"It is no accident that the 1995, 1996 & 1998 vintage received a perfect 100 point score by Robert Parker. We think this vintage is just as impressive. Extremely allocated! " +Greenock Creek Roennfeldt Road Shiraz 2001,"Barossa Valley, Barossa, South Australia, Australia",Red Wine,99.0,"Greenock Creek Vineyard and Cellars, owned by Michael and Annabelle Waugh, is one of the Barossa's benchmark wineries. Start with a great terroir, add in old vine material, and meticulous winemaking and the results are usually extraordinary." +Greenock Creek Seven Acres Shiraz 1998,"Barossa Valley, Barossa, South Australia, Australia",Red Wine,96.0,"After it was planted in 1990, the Seven Acre block very quickly made clear its intention to supply low crops of intense Barossa Shiraz with a rare floral note highlighting its dainty, but dense bouquet. The palate is beautifully viscous and long, deliciously adorning the sensories like a magnificent silky drape. The tannins are leafy and green, but do nothing to interrupt that astonishing lingering smoothness of the finish and aftertaste. The wine offers great promise for the patient cellarmaster." +Greenock Creek Seven Acres Shiraz 2001,"Barossa Valley, Barossa, South Australia, Australia",Red Wine,98.0,"The Shiraz Seven Acre appears more earth-driven, revealing notes of tar, creosote, creme de cassis, licorice, and a hint of truffles. While firmer and more tannic, savage, and animal-like than its sibling, it possesses extraordinary density, power, and richness. Thirteen year old vines cropped at 1.4 tons of fruit per acre produced less than 100 cases." +Greenock Creek Seven Acres Shiraz 2005,"Barossa Valley, Barossa, South Australia, Australia",Red Wine,96.0,"This is probably the best release from the Seven Acre vineyard since the vines were planted in 1990, even more dense than the previous wines. The Seven Acre vineyard yields one to one and a half tonnes per acre; total production was 400 cases. Wood treatment: matured in aged American oak for 28 months. " +Grgich Hills Estate Yountville Selection Cabernet Sauvignon 2005,"Napa Valley, California",Red Wine,96.0,"The long, cool growing season produced an elegant wine with aromas of black fruit and licorice with a touch of black pepper on the finish. Nicely balanced between acid, fruit and tannin, this wine is the perfect partner with roasted beef, cured ham or creamy cheeses. All of the grapes were grown at our estate vineyards, which were farmed using organic and Biodynamic principles." +Guarachi Family Wines Beckstoffer Las Piedras Heritage Single Vineyard Cabernet Sauvignon 2012,"St. Helena, Napa Valley, California",Red Wine,96.0,"A signature cabernet sourced entirely from Las Piedras. Known for its gravely soil, this Beckstoffer Heritage vineyard traces its roots back to the original Mexican land grants more than 150 years ago. Powerful with a lingering finish." +Guigal Chateau D'Ampuis Cote Rotie 2003,"Cote Rotie, Rhone, France",Red Wine,96.0,"Ampuis is composed of 93% Syrah and 7% Viognier, and aged in the same manner as the Guigal single-vineyard crus, for 36 months in new barrels that are all made at the estate. The hallmark of Chateau d'Ampuis is an unbelievably seductive perfume full of sweet red fruits, black fruits and spices, and an elegance despite the intense concentration of fruit. Chateau d'Ampuis defines what a great wine should be with its beautiful balance, complexity and length." +Guigal Chateau D'Ampuis Cote Rotie 2010,"Cote Rotie, Rhone, France",Red Wine,97.0,#77 +Guigal Ermitage Ex Voto Blanc 2005,"Hermitage, Rhone, France",White Wine,97.0,"""Light gold. A stunning bouquet offers powerful pear, peach pit, anise, salty minerality and a huge wallop of smoky peat-this smells like an Islay whisky! Painfully concentrated pit fruit flavors are complemented by orange peel, clove and smoked meat, but there's an elegance to this that's reminiscent of a top-notch Burgundy. A simply remarkable wine, with uncanny complexity and depth of flavor.""" +Guigal Ermitage Ex Voto Blanc 2010,"Hermitage, Rhone, France",White Wine,98.0,"White flowers, haythorne, and acacia honey predominate on the nose. Aromatic and very powerful. Very expressive and fleshy fruit on the palate. The white comes from two parcels, les Murets (90%) and L'Hermite (10%). These two wines represent the pinnacle of the appellation, with exceptional concentration and great potential longevity. " +Guigal Ermitage Ex Voto Blanc 2012,"Hermitage, Rhone, France",White Wine,96.0,"White flowers, haythorne, and acacia honey predominate on the nose. Aromatic and very powrful. Very expressive and fleshy fruit on the palate." +Guigal Ermitage Ex Voto Blanc 2013,"Hermitage, Rhone, France",White Wine,97.0,"Brilliant clean straw yellow. Powerful and intense aromas of white flowers, acacia honey and hawthorn blossom. Rich and full-bodied on the palate. Fully expressive of the terroir which lends this Hermitage body and strength. " +Guigal Ermitage Ex Voto Rouge 2009,"Hermitage, Rhone, France",Red Wine,97.0,"Ruby red with purplish highlights. A nose of black fruits, leather, licorice, as well as aromas of roasting, oriental spices, and eucalyptus. There is powerful aromatic intensity and a lot of fullness and structure in the mouth. A very assertive expression of terroir which expresses the elegance and power of its tannins. This wine is one for very long aging, massive and concentrated, it has a rare intensity of flavor and color. " +Guigal Ermitage Ex Voto Rouge 2010,"Hermitage, Rhone, France",Red Wine,98.0,"The Hermitage Ex Voto Rouge displasys deep dark ruby color with mauve tints with aromas of black fruits, leather, licorice, coffee flavor and oriental spices. Powerful attack with richness and an important tannic structure. This wine expression fully the terroir trough its finesse and the strength of its tannins. Great ageing potential, structured and concentrated with a rare intensity of flavor and color." +Guigal Ermitage Ex Voto Rouge 2012,"Hermitage, Rhone, France",Red Wine,96.0,"The Hermitage Ex Voto Rouge displasys deep dark ruby color with mauve tints with aromas of black fruits, leather, licorice, coffee flavor and oriental spices. Powerful attack with richness and an important tannic structure. This wine expression fully the terroir trough its finesse and the strength of its tannins. Great ageing potential, structured and concentrated with a rare intensity of flavor and color." +Guigal Ermitage Ex Voto Rouge 2013,"Hermitage, Rhone, France",Red Wine,97.0,"Black fruits, leathers, licorice, aromas of roasting and oriental spices. Notes of eucalyptus. Very powerful aromatic intensity. A lot of richness and structure on the palate. Very strong expression of the terroir which expresses itself by the elegance and the power of its tannins." +Guigal La Doriane Condrieu 2006,"Condrieu, Rhone, France",White Wine,97.0,100% Viognier +Guigal La Landonne Cote Rotie 1997,"Cote Rotie, Rhone, France",Red Wine,97.0,"Red-black robe with dark nuances. On the nose, intense and powerful aromas of black fruits, licorice, Asian spices and roast. The attack on the palate reveals power, concentration as well as massively structured but elegant tannins. The wine magnificently translates its terroir. " +Guigal La Landonne Cote Rotie 2006,"Cote Rotie, Rhone, France",Red Wine,97.0,"The 2006 vintage produced wines with more forward fruit than 2005, but with good tannic structure and at least 20 years of aging potential in a good cellar. " +Guigal La Landonne Cote Rotie 2007,"Cote Rotie, Rhone, France",Red Wine,97.0,"A 2.1 hectare site planted entirely with Syrah, La Landonne has been produced since 1978. Guigal acquired the vineyard from numerous small owners, building his holding parcel by parcel over a decade. The vineyard is on one of the steepest of the Côte Brune, a 45 degree slope on pure schist. This is often the most tannic and structured of the Cote Roties, and can take decades to reveal its true potential." +Guigal La Landonne Cote Rotie 2009,"Cote Rotie, Rhone, France",Red Wine,99.0,"An almost lack red dress with very dark tints. On the nose, small black fruit, leather, licorice and roasted aromas and oriental spices. Strong aromatic intensity. The wine is powerful in the mouth and shows massive structure of tannins and concentration. An assertive expression of terroir." +Guigal La Landonne Cote Rotie 2010,"Cote Rotie, Rhone, France",Red Wine,99.0,"La Landonne displays red/black color with deep dark tints with aromas of black fruits, licorice and roasted notes and oriental spices. Powerful and intense aromas. Powerful attack with important tannic structure. Rich and concentrated. Fully expressive of the terroir. Great ageing potential, structured and concentrated with a rare intensity of flavor and color." +Guigal La Landonne Cote Rotie 2011,"Cote Rotie, Rhone, France",Red Wine,98.0,"La Landonne displays red/black color with deep dark tints with aromas of black fruits, licorice and roasted notes and oriental spices. Powerful and intense aromas. Powerful attack with important tannic structure. Rich and concentrated. Fully expressive of the terroir. Great ageing potential, structured and concentrated with a rare intensity of flavor and color." +Guigal La Landonne Cote Rotie 2012,"Cote Rotie, Rhone, France",Red Wine,98.0,"La Landonne displays red/black color with deep dark tints with aromas of black fruits, licorice and roasted notes and oriental spices. Powerful and intense aromas. Powerful attack with important tannic structure. Rich and concentrated. Fully expressive of the terroir. Great ageing potential, structured and concentrated with a rare intensity of flavor and color." +Guigal La Landonne Cote Rotie 2013,"Cote Rotie, Rhone, France",Red Wine,98.0,"Reddish black with deep dark tints. Small black fruits, liquorice and oriental spices on the nose. Powerful and intense aromas. Powerful attack with important tannic structure. Rich and concentrated. Fully expressive of the terroir. Overall, great aging potential, structured and concentrated with a rare intensity of flavor and color." +Guigal La Landonne Cote Rotie 2015,"Cote Rotie, Rhone, France",Red Wine,99.0,"Reddish black with deep dark tints. Small black fruits, licorice and oriental spices on the nose. Powerful and intense aromas. Powerful attack with important tannic structure. Rich and concentrated. Fully expressive of the terroir. Overall, great aging potential, structured and concentrated with a rare intensity of flavor and color." +Guigal La Landonne Cote Rotie 2014,"Cote Rotie, Rhone, France",Red Wine,98.0,"Reddish black with deep dark tints. Small black fruits, licorice and oriental spices on the nose. Powerful and intense aromas. Powerful attack with important tannic structure. Rich and concentrated. Fully expressive of the terroir. Overall, great aging potential, structured and concentrated with a rare intensity of flavor and color." +Guigal La Mouline Cote Rotie 2005,"Cote Rotie, Rhone, France",Red Wine,99.0,"""The black/purple-colored 2005 Cote Rotie La Mouline offers up scents of soy, bacon fat, barbecue smoke, espresso roast, and a hint of caramelized chocolate. While enormously rich, opulent, and fleshy, even in this tannic, structured year, it possesses a finesse and softness that are hard to believe. This stunning 2005 should drink beautifully for 25 or more years.""" +Guigal La Mouline Cote Rotie 2010,"Cote Rotie, Rhone, France",Red Wine,99.0,"La Mouline displays ruby red color with red vermillion tints. Small red fruits, blackberry and floral violet aromas .Intensely aromatic, powerful but full of finesse. Supple with balance between the finesse of the aromas and an explosive richness due to the concentration of the wine. Greatly expressive of the terroir. A feminine wine with voluptuous silky texture and intense aromas." +Guigal La Mouline Cote Rotie 2011,"Cote Rotie, Rhone, France",Red Wine,96.0,"Red fruits, blackberry and floral aromas of vio- let. The wine is silky, velvety and voluptuous, with intense aromatics. An oustanding wine to enjoy with exceptional meals, especially game birds." +Guigal La Mouline Cote Rotie 2009,"Cote Rotie, Rhone, France",Red Wine,98.0,"Ruby red with bright red highlights. On the nose, small red fruits, blackberry and floral aromas of violets, powerful but fine aromatic intensity. The wine has a soft mouthfeel and beautiful harmony between the fine flavors and explosive richness due to the concentration. A voluptuous feminine wine with a velvety or silky texture and intense aromatics." +Guigal La Mouline Cote Rotie 2012,"Cote Rotie, Rhone, France",Red Wine,96.0,"Red fruits, blackberry and floral aromas of vio- let. The wine is silky, velvety and voluptuous, with intense aromatics. An oustanding wine to enjoy with exceptional meals, especially game birds." +Guigal La Mouline Cote Rotie 2013,"Cote Rotie, Rhone, France",Red Wine,96.0,"Ruby red with red vermillion tints. Small red fruits, blackberry and floral violet aromas.Intensely aromatic, powerful but full of finesse. Supple with balance between the finesse of the aromas and an explosive richness due to the concentration of the wine. Greatly expressive of the terroir. A feminine wine with voluptuous silky texture and intense aromas." +Guigal La Mouline Cote Rotie 2014,"Cote Rotie, Rhone, France",Red Wine,97.0,"Ruby red in color, this wine offers aromas of small red fruits, blackberry and violet. It is intensely aromatic -- powerful, but full of finesse. On the palate, the wine is supple, with balance between the finesse of aromas and an explosive richness due to the wine's concentration. Greatly expressive of the terroir." +Guigal La Mouline Cote Rotie 2015,"Cote Rotie, Rhone, France",Red Wine,98.0,"Ruby red in color, this wine offers aromas of small red fruits, blackberry and violet. It is intensely aromatic -- powerful, but full of finesse. On the palate, the wine is supple, with balance between the finesse of aromas and an explosive richness due to the wine's concentration. Greatly expressive of the terroir." +Guigal La Turque Cote Rotie 1997,"Cote Rotie, Rhone, France",Red Wine,96.0,"La Turque is Guigal's latest addition to the single-vineyard Côte-Rôties, acquired in 1985. It is also the smallest, with just under a hectare planted to 93% Syrah and 7% Viognier. Situated on a vertiginous slope in the center of the Côte Brune that enjoys perfect southern exposure, the vineyard benefits from a complex soil of shale and iron oxide that lends finesse to the wine." +Guigal La Turque Cote Rotie 2001,"Cote Rotie, Rhone, France",Red Wine,96.0,"La Turque is Guigal's latest addition to the single-vineyard Côte-Rôties, acquired in 1985. It is also the smallest, with just under a hectare planted to 93% Syrah and 7% Viognier. Situated on a vertiginous slope in the center of the Côte Brune that enjoys perfect southern exposure, the vineyard benefits from a complex soil of shale and iron oxide that lends finesse to the wine." +Guigal La Turque Cote Rotie 2003,"Cote Rotie, Rhone, France",Red Wine,98.0,"""The 2003 Cote Rotie La Turque reveals an incredible nose of incense, black truffles, blackberries, espresso roast, roasted meats, melted road tar, tapenade, and bacon. A meaty, full-bodied, extraordinarily concentrated wine with a viscous texture, a remarkable finish, and even more tannin and body than La Mouline, it requires 4-5 years of cellaring, and should drink well over the following 30+.""" +Guigal La Turque Cote Rotie 2005,"Cote Rotie, Rhone, France",Red Wine,99.0,"""The sumptuous 2005 Cote Rotie La Turque is a candidate for perfection. Abundant tannin and structure, a black/purple color, and a beautiful nose of graphite, asphalt, charcoal, blackberries, blueberries, espresso roast, chocolate, pepper, and lychee nut are found in this sensationally concentrated, multidimensional, profound wine. It will last for 25-35 years.""" +Guigal La Turque Cote Rotie 2006,"Cote Rotie, Rhone, France",Red Wine,96.0,"The 2006 vintage produced wines with more forward fruit than 2005, but with good tannic structure and at least 20 years of aging potential in a good cellar. " +Guigal La Turque Cote Rotie 2007,"Cote Rotie, Rhone, France",Red Wine,96.0,"La Turque is Guigal's latest addition to the single-vineyard Cote Roties, acquired in 1985. It is also the smallest, with just under a hectare planted to 93% Syrah and 7% Viognier. Situated on a vertiginous slope in the center of the Côte Brune that enjoys perfect southern exposure, the vineyard benefits from a complex soil of shale and iron oxide that lends finesse to the wine." +Guigal La Turque Cote Rotie 2009,"Cote Rotie, Rhone, France",Red Wine,98.0,"Ruby red with dark tints. On the nose there are aromas of mall red fruits, cherry, and blackberry with powerful and elegant aromatic intensity. There beautiful harmony on the palate, between flexibility, concentration and fine wine selected tannins. An assertive expression of terroir." +Guigal La Turque Cote Rotie 2010,"Cote Rotie, Rhone, France",Red Wine,99.0,"La Turque displays deep ruby red color with dark tints with aromas small red fruit, blackberry, morello cherry. Intensely aromatic, powerful and elegant. Supple attack with a balanced supple structure, concentration and elegant tannins. Fully expressive of the terroir. With all the virility of the Cote Brune, La Turque also has all the subtlety and femininity of the Cote Blonde." +Guigal La Turque Cote Rotie 2011,"Cote Rotie, Rhone, France",Red Wine,97.0,"Red fruits, cherry and blackberry dominate the nose on this wine, which is both elegant and intense. Offers smoky, meaty barbecue notes intermixed with forest floor and coffee beans." +Guigal La Turque Cote Rotie 2012,"Cote Rotie, Rhone, France",Red Wine,97.0,"Red fruits, cherry and blackberry dominate the nose on this wine, which is both elegant and intense. Offers smoky, meaty barbecue notes intermixed with forest floor and coffee beans." +Guigal La Turque Cote Rotie 2013,"Cote Rotie, Rhone, France",Red Wine,98.0,"Deep ruby red with dark tints. Small red fruit, blackberry, morello cherry Intensely aromatic, powerful and elegant. Supple attack with a balanced supple structure, concentration and elegant tannins. Fully expressive of the terroir. With all the virility of the Cote Brune, La Turque also has all the subtlety and femininity of the Cote Blonde." +Guigal La Turque Cote Rotie 2014,"Cote Rotie, Rhone, France",Red Wine,96.0,"Deep ruby red in color, this wine offers aromas of small red fruit, blackberry and morello cherry. It is intensely aromatic -- powerful, but elegant. On the palate, the wine has a balanced, supple structure, with great concentration and elegant tannins." +Guigal La Turque Cote Rotie 2015,"Cote Rotie, Rhone, France",Red Wine,99.0,"Deep ruby red in color, this wine offers aromas of small red fruit, blackberry and morello cherry. It is intensely aromatic -- powerful, but elegant. On the palate, the wine has a balanced, supple structure, with great concentration and elegant tannins." +Guigal Saint-Joseph Vignes de l'Hospice Rouge 2015,"Saint-Joseph, Rhone, France",Red Wine,96.0,"Grown on the vineyard directly across from Hermitage and planted on the same rock formation, dramatically perched above the town of Tournon, the Vignes de l'Hospice makes perhaps the most persuasive argument as to why Saint-Joseph at one time was considered superior even to Hermitage. It shares with the best Hermitage a powerful intensity, yet the elegance of Saint-Joseph is beautifully apparent in how the wine draws out and finishes." +Gundlach Bundschu Vintage Reserve Cabernet Sauvignon 2013,"Sonoma Valley, Sonoma County, California",Red Wine,97.0,"The 2013 Vintage Reserve is loaded with berries, dark chocolate, violets and dried herbs, espresso, toasty vanilla, and rich earth. Supple tannins meld with blackberries, red currants and cocoa powder to offer mouth-filling texture, great acidity and a lingering finish. This vintage will mature for another 32 years if you're patient or decant for 3+ hours if you're not. " +Gypsy Canyon Winery Mission Ancient Vine Angelica Dona Marcelina's Vineyard (375ML half-bottle),"Sta. Rita Hills, Santa Barbara, Central Coast, California",Collectible,96.0,Ancient Vine Angelica is a historic dessert wine from our 130-year-old Mission vineyard in Sta. Rita Hills. It is presented in a hand-blown bottle with a hand-made paper label printed on a manual letterpress. The cork is sealed with estate-harvested bees wax. +Hardys Eileen Hardy Shiraz 1998,Australia,Red Wine,96.0,"A full flavored Shiraz, but one which stops short of being excessively ripe or oaky. It has rich, ripe fruit flavors, evident toasted oak character, and a long, smooth, persistent finish. Fine quality." +Harlan Estate (1.5 Liter Magnum) 2004,"Napa Valley, California",Red Wine,97.0,"For twenty five years, Harlan Estate has been committed to creating a California ""First Growth"" wine estate." +Harlan Estate (1.5 Liter Magnum) 2007,"Napa Valley, California",Red Wine,96.0,"This extraordinary estate, run by Bill Harlan, has never had either a shortage of ambition or patience. Harlan originally had his wines made elsewhere, but never found the resulting product up to his standards until his home vineyard, high on the western hills of the Oakville Corridor, hit an acceptable level of quality, which turned out to be in 1990. In October, I did a vertical tasting of every Harlan Estate vintage made (which I will report on at a future date), and one thing that was clear is just how extraordinary these wines are, and how well they are aging. Even in California's lighter, more challenging years, Harlan turned out wines that anyone would be happy to own and consume. The newest offerings include two vintages of The Maiden essentially their second wine, and the flagship Harlan Estate fewer than 2,000 cases produced." +Harlan Estate (1.5 Liter Magnum) 2009,"Napa Valley, California",Red Wine,96.0,"Even after all of these years, and with much more intense competition than ever before, Harlan Estate remains one of the great wines in Napa Valley." +Harlan Estate 1991,"Napa Valley, California",Red Wine,98.0,"Deep color. a complex, slightly earthy, sweet mineral nose reminiscent of wild brush and undergrowth, glazed fruit, cedar, toasty vanilla, and ripe black currants. With aeration the aromatics grow significantly more multi-faceted, with distinct notes of celery and green olive. Although still outsized in the mouth, it shows remarkable balance with plenty of sweet ripe fruit, enhanced by layers of green and black olives. the finish lingers on with smooth and noticeably ripe tannins. The 1991 has been tightly wound and slow to evolve for much of its life." +Harlan Estate 1997,"Napa Valley, California",Red Wine,97.0,"Color very dense, nearly opaque. Very ripe, concentrated aromatics of vanilla, minerals, coffee,blackberries, licorice, cassis, prune, and shoyu, with high notes of bright red and black fruitsbehind. The flavors are very thick, ripe, layered, and supple on the palate, with tremendouspower and density. The flavor profile is broad, jammy—almost confectionary—and verycomplex, yet displaying a balance of acidity. Tannins and alcohol harmonize to show anuncommon richness." +Harlan Estate 2004,"Oakville, Napa Valley, California",Red Wine,97.0,"For twenty five years, Harlan Estate has been committed to creating a California ""First Growth"" wine estate." +Harlan Estate 2009,"Napa Valley, California",Red Wine,96.0,"Even after all of these years, and with much more intense competition than ever before, Harlan Estate remains one of the great wines in Napa Valley." +Harlan The Maiden 2001,"Oakville, Napa Valley, California",Red Wine,98.0,"The Maiden represents the second selection from the estate. It is a highly detailed and sumptuous wine, remarkably faithful to the vineyard's pedigree. Accordingly, the resemblance to her ""big sister"" is unmistakable." +Hartford Court Far Coast Pinot Noir 2016,"Sonoma Coast, Sonoma County, California",Red Wine,96.0,"Far Coast Vineyard consistently produces one of our boldest Pinot Noir offerings. The 2016 follows suit with intense cherry cola, blackberry and cocoa aromas. The subtle earth and underbrush characters carry into the flavors along with Asian spice and a broad, lush texture followed by black cherry and blackberry fruits. The persistent finish is distinctly Far Coast." +Hartford Court Far Coast Vineyard Chardonnay 2016,"Sonoma Coast, Sonoma County, California",White Wine,96.0,"This vintage of the Far Coast Vineyard Chardonnay exhibits aromas of orange zest, yellow apple, dried fruits and spice. The flavors lead with tangerine, mandarin orange and quince, followed by a long textural finish of minerals and gravel." +Hartford Court Four Hearts Chardonnay 2007,"Russian River, Sonoma County, California",White Wine,96.0,"Complex aromas and flavors of white peach, citrus blossom, Asian pear and candied lemon give way to a rich and weighty mid-palate, followed by a very long, exotic spice infused finish." +Hartford Court Four Hearts Chardonnay 2015,"Russian River, Sonoma County, California",White Wine,96.0,"This highly textured wine displays aromas of yellow apple, honeysuckle and tangerine skin. Fresh flavors of Granny Smith apple and Meyer lemon are intertwined with layers of spice and crystallized ginger. A rich and weighty mid-palate is followed by a very long exotic, mineral infused finish." +Hartford Court Four Hearts Chardonnay 2016,"Russian River, Sonoma County, California",White Wine,96.0,"This highly textured wine displays aromas of yellow apple, honeysuckle and tangerine skin. Fresh flavors of Granny Smith apple and Meyer lemon are intertwined with layers of spice and crystallized ginger. A rich and weighty mid-palate is followed by a very long exotic, mineral-infused finish. " +Hartford Court Four Hearts Chardonnay 2017,"Russian River, Sonoma County, California",White Wine,96.0,"This highly textured wine displays aromas of yellow apple, honeysuckle and tangerine skin. Fresh flavors of Granny Smith apple and Meyer lemon are intertwined with layers of spice and crystallized ginger. A rich and weighty mid-palate is followed by a very long exotic, mineral-infused finish." +Hartford Court Jennifer's Pinot Noir 2016,"Russian River, Sonoma County, California",Red Wine,96.0,"Jennifer's Pinot noir is both elegant and powerful. It features aromas of boysenberries, violets and lavender followed by flavors of black raspberries, black tea, and anise. The 2016 Jennifer's Pinot is very dense, but with fine tannins and a silky, persistent mouthfeel. This wine is an expression of one of the most unique neighborhoods in the Russian River Valley." +Hartford Court Stone Cote Chardonnay 2014,"Sonoma Coast, Sonoma County, California",White Wine,97.0,"This single-vineyard bottling from one of Hartford Court's most well-known estate vineyards offers aromas of white peach, spiced pears, orange blossom, hazelnuts and crushed rocks. Stone fruit, nectarine and tangelo flavors are counter balanced with a flinty, textural finish." +Hartford Court Stone Cote Chardonnay (slightly torn label) 2007,"Sonoma County, California",White Wine,96.0,"This single-vineyard bottling offers restrained minerality and aromas of kiwi fruit and nectarine. The 2007 Stone Cote has great balance with white peach and creme brulee flavors that complement its silky texture and long, minerally finish." +Hartford Court Stone Cote Chardonnay (torn label) 2006,"Sonoma County, California",White Wine,96.0,This single-vineyard bottling from the 2006 vintage offers restrained minerality and aromas of kiwi fruit and nectarine. +Heitz Cellar Martha's Vineyard Cabernet Sauvignon (1.5 Liter Magnum) 1985,"Napa Valley, California",Red Wine,98.0,"Heitz Cellars receives the entire production from the famed vineyard in Oakville for its limited edition of vineyard designated Cabernet Sauvignon. Its distinctive minty, characteristics, rich flavors, and overall balance have made it one of the most identifiable Cabernet Sauvignons in the world, and one of the most sought after. To add to its overall complexities, the 100 percent varietal Cabernet is aged for a year in American oak tanks and two and a half years in French limousin oak barrels." +Hendry Block 7 and 22 Zinfandel 2011,"Napa Valley, California",Red Wine,96.0,"Hendry blocks 7 and 22 are located on benchlands west of the town of Napa. The nine acres are between 230 and 300 feet above sea level and have thin, stony Boomer series soils. The maritime climate is moderated by morning fog and strong afternoon breezes from San Pablo Bay. " +Hendry Block 7 and 22 Zinfandel (375ML half-bottle) 2011,"Napa Valley, California",Red Wine,96.0,"Hendry blocks 7 and 22 are located on benchlands west of the town of Napa. The nine acres are between 230 and 300 feet above sea level and have thin, stony Boomer series soils. The maritime climate is moderated by morning fog and strong afternoon breezes from San Pablo Bay. " +Henry's Drive Reserve Shiraz 2002,Australia,Red Wine,97.0,"The Reserve Shiraz is the signature wine of Henry's Drive Vignerons and encompasses our approach to winemaking at its finest. Only the most exceptional parcels of fruit are hand selected from our family vineyard. Made with minimal intervention, this wine is a true expression of the vineyard, variety, and terroir of Padthaway." +Henschke Hill of Grace Shiraz 1996,"Eden Valley, Barossa, South Australia, Australia",Red Wine,98.0,100% shiraz grapes from pre-phylloxera material brought from Europe by the early German settlers in the mid 1800s and grown in the Eden Valley wine region. +Henschke Hill of Grace Shiraz 2002,"Eden Valley, Barossa, South Australia, Australia",Red Wine,96.0,"Very deep crimson in color. Rich complex aromas of plum, prune, blackberry and blueberry with licorice, tar, exotic spices, chocolate, cedar and mint. The rich, complex palate is lush, dense and concentrated with layers of flavors and textures. Excellent acid/fruit balance, velvety tannins and exceptional length." +Henschke Hill of Grace Shiraz 2003,"Eden Valley, Barossa, South Australia, Australia",Red Wine,98.0,"Dark crimson in color. A complex, spicy nose of tar, anise, blackberries and blueberries with hints of five spice, vanilla and cedar. The sweet, lush and fleshy palate displays great depth and texture, with excellent length and intensity and fine, velvety tannins." +Henschke Hill of Grace Shiraz 2004,"Eden Valley, Barossa, South Australia, Australia",Red Wine,96.0,"Very deep crimson in color. Perfumed, with sweet lifted spicy aromas of plum, blackberry, anise, herbs and spices. Complex, with hints of sage, pepper, vanilla and cedar. The rich, complex, textured palate is sweet, juicy and fleshy, layered with spicy velvety tannins. Elegant and powerful, with great length." +Henschke Hill of Grace Shiraz 2006,"Eden Valley, Barossa, South Australia, Australia",Red Wine,97.0,"Dark crimson in color. A complex, spicy nose of tar, anise, blackberries and blueberries with hints of five spice, vanilla and cedar. The sweet, lush and fleshy palate displays great depth and texture, with excellent length and intensity and fine, velvety tannins." +Henschke Hill of Grace Shiraz 2008,"Eden Valley, Barossa, South Australia, Australia",Red Wine,96.0,"Intense deep crimson in color. The nose is attractive and enticing with aromas of sweet blackberry, blueberry, Satsuma plum and rhubarb, with characteristic nuances of oriental spices, black tea leaves, anise, tar and cedar. The palate is rich and concentrated with spicy plum, crushed herbs and Dutch licorice flavors. An amazing balance of acid, fruit intensity, weight and length create a powerful palate that finishes with long, fine tannins." +Henschke Hill of Grace Shiraz 2009,"Eden Valley, Barossa, South Australia, Australia",Red Wine,97.0,"Deep red with crimson hues. Complex aromas of red currants, blackberry and marzipan with hints of five spice, dried herbs, black pepper, smoked charcuterie and layers of fine French oak. The palate is deep, rich and textural with a beautiful expression of berry fruits and spice, finishing with long, fine velvety tannins." +Henschke Hill of Grace Shiraz 2012,"Eden Valley, Barossa, South Australia, Australia",Red Wine,96.0,"Very deep crimson, with violet hues. Captivating briary blackberry and mulberry aromatics lead to alluring exotic five spice, star anise and black peppercorns, with herbaceous notes of thyme and dried basil and slight gamey hints. The palate has incredible length and purity, with a focused core of blackberry and plum fruit, wrapped by beautifully integrated layers of silky tannins and lingers endlessly with flavors of sage leaf and blackcurrant skin." +Henschke Hill of Grace Shiraz 2015,"Eden Valley, Barossa, South Australia, Australia",Red Wine,98.0,"Dark crimson in color with deep garnet hues. A concentrated array of aromas of mulberry, blackberry and dark plum indicate the richness to come while savory and complex notes of charcuterie, cedar, sage and five spices tease the senses. Plush and velvety on the palate, the wine has intense fruit concentration with plum, redcurrant, blackberry and anise flavours, yet an enchantingly elegant and refined structure. Layers of silky tannins reveal the impressive depth of the wine before giving way to an incredibly long finish." +Henschke Mount Edelstone Shiraz 2005,"Eden Valley, Barossa, South Australia, Australia",Red Wine,97.0,"Deep crimson in color with a purple hue. Powerful, ripe aromas of blackberry and plum with complexing hints of star anise, ferns, eucalyptus and dark chocolate. The palate is an intense and concentrated blend of sweet, juicy plum pudding fruit and structured ripe tannin. With mouthfilling power, seamless texture and lingering finish the wine displays the hallmark characters of the Mount Edelstone vineyard in one of its greatest years." +Heritage School Vineyards Missiaen's Hillside Vineyard Cabernet Sauvignon 2013,"Calistoga, Napa Valley, California",Red Wine,96.0,"Tucked in the hillsides northwest of downtown Calistoga, Harris Estate Vineyards continues to produce wines of impressive purity and texture. These full-bodied wines have personalities that reflect their mountainside location and ideal grape growing soils. Year after year I am impressed by the quality of grapes grown here, making this one of Napa Valley’s finest up-valley vineyards. " +Hess The Lion Cabernet Sauvignon 2014,"Mt. Veeder, Napa Valley, California",Red Wine,96.0,"In this vintage of The Lion Cabernet Sauvignon, the nose filled with generous aromas of blue and black fruits – blackberry, blueberry and a hint of dark chocolate. This wine is always refined and elegant, and in the 2014 vintage there is a density in both flavor and texture that draws right to it. The palate displays a beautiful spectrum of rich, ripe, dark fruits supported by distinctive barrel spice flavors and mouth coating tannins. This Cabernet Sauvignon showcases the signature style of Mount Veeder fruit with depth and richness, a velvety texture and a lasting vibrancy." +Hidden Ridge 55% Slope Cabernet Sauvignon 2013,"Sonoma County, California",Red Wine,97.0,"Ripe black fruit aromas pour from the glass followed by notes of spice, cocoa, black tea and hibiscus. The full bodied palate is dense with the flavors of cocoa, blackberry and brown sugar, carried on smooth tannins and supple texture. The flavors of tea, mocha and cherries carry through on the long finish." +Hidden Ridge Impassable Mountain Reserve Cabernet Sauvignon 2009,"Sonoma County, California",Red Wine,96.0,"Full bodied and richly textured, the Impassable Mountain Reserve is a complex expression of mountain Cabernet Sauvignon. The nose opens with toffee, blackberry bramble, black tea and cassis. Bright cherry and black raspberry lead through a focused palate, scented with nutmeg and brown sugar, and finishing with tea laced dark chocolate. This wine will reward cellaring for a decade or more, but can be enjoyed early with decanting." +Hidden Ridge Impassable Mountain Reserve Cabernet Sauvignon 2008,"Sonoma County, California",Red Wine,96.0,"Full bodied and richly textured, the Impassable Mountain Reserve is a complex expression of mountain Cabernet Sauvignon. The nose opens with toffee, blackberry bramble, black tea and cassis. Bright cherry and black raspberry lead through a focused palate, scented with nutmeg and brown sugar, and finishing with tea laced dark chocolate. This wine will reward cellaring for a decade or more, but can be enjoyed early with decanting. " +Horsepower Vineyards Sur Echalas Vineyard Syrah 2012,"Walla Walla Valley, Columbia Valley, Washington",Red Wine,97.0,"Giving up classic, Old World Syrah notes of blackcurrants, black olives, smoked meats, ground pepper and violets, this beauty hits the palate with full-bodied richness and is gorgeous, concentrated and expansiveness on the palate, with plenty of of mid-palate depth and length." +Horsepower Vineyards Sur Echalas Vineyard Syrah 2013,"Walla Walla Valley, Columbia Valley, Washington",Red Wine,97.0,"The self-nourishing interrelationship of earth, plants and animals have been central to vigneron Christophe Baron’s farming philosophy ever since he pioneered biodynamic farming in the Walla Walla Valley in 2002." +Horsepower Vineyards The Tribe Vineyard Syrah 2011,"Walla Walla Valley, Columbia Valley, Washington",Red Wine,98.0,"The self-nourishing interrelationship of earth, plants and animals have been central to vigneron Christophe Baron’s farming philosophy ever since he pioneered biodynamic farming in the Walla Walla Valley in 2002." +Hundred Acre Few and Far Between Cabernet Sauvignon 2009,"Howell Mountain, Napa Valley, California",Red Wine,96.0,Hundred Acre Few and Far Between Cabernet Sauvignon is made exclusively from one hundred percent Cabernet Sauvignon grown on Hundred Acre's estate vineyard in Napa Valley. +Hundred Acre Kayli Morgan Cabernet Sauvignon 2014,"Napa Valley, California",Red Wine,99.0,"All Hundred Acre wines are made by sorting the fruit berry by berry, fermenting in small French oak fermenters, and long aging in the finest barriques. The secret to Hundred Acre is no compromise and no detail overlooked, ever." +Il Palazzone Brunello di Montalcino Riserva 1999,"Montalcino, Tuscany, Italy",Red Wine,96.0,"Characterized by a deep ruby color with garnet hues. Bursts of cherry, ripe plum and hints of bay leaf are balanced with overtones of chocolate and coffee grounds a good tannic structure and an extremely long, silky finish. " +Il Poggione Brunello di Montalcino Riserva Vigna Paganelli 2006,"Montalcino, Tuscany, Italy",Red Wine,96.0,"Il Poggione Brunello di Montalcino Riserva is an intense ruby-red color. An elegant nose with notes of red fruit, leather and spices. This wine also has a persistent, balanced flavor, with long seductive finish. " +Immortal Estate Impassable Mountain Cabernet Sauvignon 2014,"Sonoma County, California",Red Wine,98.0,"Individual barrels are selected from our finest lots each year to compose the Impassable Mountain. Two lots from the upper ridgeline were selected for their power and pure expression of our unique terroir. This vintage is a study in focus and purity, and the concentration and structure will allow it to evolve and unfold for decades to come. This inimitable wine shows dense characters both savory and sweet: black fruit, raspberry, vanilla, clove, cocoa nib, tarragon, cedar, black tea, in endless recursive layers of flavor and texture." +Inglenook Rubicon 2002,"Napa Valley, California",Red Wine,96.0,"""This is the best Rubicon ever...""" +Inglenook Rubicon (375ML half-bottle) 2004,"Napa Valley, California",Red Wine,96.0,"All Rubicon Estate vineyards are harvested by hand in the early morning. The grapes arrive at the winery in small bins and the fruit is hand-sorted before crushing. A second sorting of the must removes any remaining leaves or pieces of broken stems. The must is allowed to ‘cold soak' for three to five days prior to the onset of natural fermentation. Depending on the age of the vineyard and quality of the tannins, macerations may vary from one to three weeks. Rubicon is fermented in wooden Taransaud open-top tanks which hold the natural warmth of the fermentation longer into the maceration. This allows the new wine to stabilize color and increase the mouthfeel of the new wine. Both traditional punch-downs (early stages of fermentation) and pump-overs are used, resulting in ultra-dense, coating and supple tannins. " +Iron Horse Green Valley Chinese Cuvee 2004,"Green Valley, Russian River, Sonoma County, California",Sparkling & Champagne,96.0,"This is Iron Horse's second vintage of Chinese Cuvee. It commemorates the Year of the Snake, which began Sunday, February 10, 2013. " +Isole e Olena Cepparello 2013,"Tuscany, Italy",Red Wine,97.0,"The flagship wine consists of 100% Sangiovese aged in French oak barrels. Over the years, Paolo has refined his Cepparelloby giving it more air during vinification and increasing time spent in oak from 12-14 months to 18-20 months. Although DeMarchi started focusing on the use of better quality oak around 1993, it is the increased age of the vineyards themselvesthat have given Cepparello its overall finesse. The wine is made from a top selection of the estate’s best fruits from thevineyards in Barberino Val d’Elsa in the northern part of Chianti Classico." +Isole e Olena Chianti Classico 2010,"Chianti Classico, Chianti, Tuscany, Italy",Red Wine,96.0,"The grapes are grown on the Isole o Olena estate which covers 290 hectares in the heart of the Chianti Classico hills between Florence and Siena, of which 49 are planted with vines and 42 are in production. The vineyards are approximately 400 meters above sea level and face south west. It's an elegant and balanced Chianti Classico that is medium bodied, with ripe cherry fruits and spice. Cedar notes are present on the nose and pallet. It is very focused and pretty with fresh acidity and firm tannins. The must is fermented in temperature controlled stainless steel thanks with approximately 15 days maceration. During fermentation, pumping takes place twice a day. After the malolactic fermentation, the wine is racked into barrels and 4000 liter casks where it matures for about one year. It is then bottled and released after 3-4 months." +J. Lohr Signature Cabernet Sauvignon 2014,"Paso Robles, Central Coast, California",Red Wine,96.0,"J. Lohr Signature Cabernet Sauvignon was first produced to honor the 80th birthday of their founder, Jerry Lohr. Signature represents both a tribute to Jerry’s pioneering efforts in the Paso Robles region and their portfolio’s ultimate, limited, red wine release. The 2014 J. Lohr Signature Cabernet Sauvignon is the second vintage of this statement wine; it is the result of years of experience and collaboration between our vineyards and winemaking teams. " +Jaboulet Hermitage La Chapelle (1.5L) 1998,"Hermitage, Rhone, France",Red Wine,96.0,"One of the finest red wines of France. When young the color is deep purple, like black cherries, with aromas of blackcurrant and blackberry. It is a full wine with delicate tannins, 100% destemmed, complex. With age this rich nectar takes on scents of leather, truffles, undergrowth and leaf-mold. The Syrah vines, with an average age of 35 years, have an exceptional position on the hill, facing the south. Not a single ray of sunshine misses this slope." +Jaboulet Hermitage La Chapelle 1989,"Hermitage, Rhone, France",Red Wine,96.0,"Intense ruby red color, limpid and bright. Highly complex bouquet, distinguished nose, revealing the Syrah's great finesse. Black fruits, sweet spices and, ultimately, finely woody. Full and generous palate, silky tannins and a very long finish" +Jaboulet Hermitage La Chapelle 1990,"Hermitage, Rhone, France",Red Wine,97.0,"Intense ruby red color, limpid and bright. Highly complex bouquet, distinguished nose, revealing the Syrah's great finesse. Black fruits, sweet spices and, ultimately, finely woody. Full and generous palate, silky tannins and a very long finish." +Jaboulet Hermitage La Chapelle 2016,"Hermitage, Rhone, France",Red Wine,97.0,"Intense ruby red, limpid and bright. Highly complex, distinguished nose, revealing the Syrah’s great finesse. Black fruits, sweet spices and, ultimately, finely woody. Full and generous, silky tannins and a very long finish." +Jaboulet Hermitage La Chapelle 2017,"Hermitage, Rhone, France",Red Wine,98.0,"A legendary cru... Over centuries, this mythical cru has built its reputation on a single hill, and an epic history. In the beginning, the hill was home to a hermitage founded by Henri Gaspard de Sterimberg in 1224. This knight, returning from the Albigensian Crusade, and weary of bloodshed, asked permission to Blanche of Castille to take refuge from the world on the summit of this granite hill. Soon joined by others, the community began to plant vines... A charming tale, but one that overlooks the fact that the hermitage owes only its name to the hermit: the vineyard has existed since ancient times with the famous wines of Vienne. " +Jaboulet Hermitage La Chapelle (3 Liter Bottle) 1990,"Hermitage, Rhone, France",Red Wine,97.0,"Intense ruby red color, limpid and bright. Highly complex bouquet, distinguished nose, revealing the Syrah's great finesse. Black fruits, sweet spices and, ultimately, finely woody. Full and generous palate, silky tannins and a very long finish." +Jaffurs Syrah Bien Nacido Vineyard 2008,"Central Coast, California",Red Wine,96.0,"The 2008 Bien Nacido Vineyard Syrah is always our darkest wine. It is extracted and rich with surprising density and power. It has a candy-spice-cherry-raspberry-sweet tar aroma and a thick, smooth, dark-fruit taste. It was made using nine barrels. (222 cases produced) " +Jean-Louis Chave Hermitage (1.5 Liter Magnum) 2016,"Hermitage, Rhone, France",Red Wine,96.0,"Generally 100% destemmed, as the Hermitage is meant to be about the expression of the individual vineyards and soils and Jean-Louis believes that stems have a tendency to level out the differences. Fermentation in wood tonneaux and stainless steel tanks. Aged in barriques for 30 months." +Jean-Louis Chave Hermitage 2014,"Hermitage, Rhone, France",Red Wine,96.0,"Generally 100% destemmed, as the Hermitage is meant to be about the expression of the individual vineyards and soils and Jean Louis believes that stems have a tendency to level out the differences. Fermentation in wood tonneaux and stainless steel tanks. Aged in barriques for 30 months." +Jean-Louis Chave Hermitage 2015,"Hermitage, Rhone, France",Red Wine,98.0,"Generally 100% destemmed, as the Hermitage is meant to be about the expression of the individual vineyards and soils and Jean Louis believes that stems have a tendency to level out the differences. Fermentation in wood tonneaux and stainless steel tanks. Aged in barriques for 30 months." +Jean-Louis Chave Hermitage Blanc 2012,"Hermitage, Rhone, France",White Wine,96.0,Blend: 80% Marsanne and 20% Roussanne +Jean-Noel Gagnard Batard-Montrachet 2009,"Cote de Beaune, Cote d'Or, Burgundy, France",White Wine,96.0,"Gold-tinged and extremely healthy Chardonnay grapes produced concentrated, powerful wines. Their rich aromas and flavors captivate the senses, with overtones of spice, preserved citrus, toast, ripe fruit, white flowers, and acacia honey. A beautiful freshness on the aftertaste reflects fine acidity. The wine is altogether full-bodied and sumptuous on the palate, with a strong, dynamic presence and a spark of brilliance." +Jim Barry The Armagh Shiraz 2002,"Clare Valley, South Australia, Australia",Red Wine,98.0,"Ripe, spicy and distinctive for its jazzy floral, peppery notes that weave through the solid blackberry and anise flavors. It all lingers impressively on the polished, generous finish." +Jim Barry The Armagh Shiraz 2004,"Clare Valley, South Australia, Australia",Red Wine,98.0,"The 2004 Armagh is black-purple in color. It displays a nose of lifted, aromatic, blueberry/blackberry cassis, cedary oak, spice and complex, underlying savory characters. The palate is huge and dense, with fully integrated oak, yet still featuring complex fruits of plum, blackcurrant, blackberry and black cherry. It shows deep, brooding consistency, with the flavor and texture of chocolate mudcake. " +Jim Barry The Armagh Shiraz 2012,"Clare Valley, South Australia, Australia",Red Wine,96.0,"An inky red with a magenta hue in the glass, this wine opens with lifted notes of violets, moschino cherries and bright, fresh purple fruits with undertones of caramel. Intense flavors of liquorice, mocha, caramel, nutmeg, cloves and blueberries are in abundance. The palate displays concentration and tightly wound flavors, supported by powdery, fine grained tannins leading into a long savory finish. The length of flavor and power in this wine, whilst still showing finesse and restraint, is what sets it at the pinnacle of red winemaking at Jim Barry Wines. " +Jim Barry The Armagh Shiraz 2016,"Clare Valley, South Australia, Australia",Red Wine,97.0,"The Armagh Shiraz has achieved extraordinary success and is regarded as one of Australia’s highest quality wines.The vineyard was named after the adjoining hamlet of Armagh, established by Irish settlers in 1849 and named after the lush rolling hills of their homeland. Jim Barry planted the 3.3 hectare vineyard in 1968 with Shiraz grapes." +J.J. Prum Graacher Himmelreich Gold Capsule Auslese Riesling 2003,"Mosel, Germany",White Wine,96.0,"""This is really singing. Floral, apricot and mineral notes burst from the glass, and the wine is silky and impeccably balanced. Very concentrated, yet lightweight and elegant, with a fresh aftertaste. Should be brilliant in about 20 years. Drink now through 2025."" –BS " +J.J. Prum Wehlener Sonnenuhr Gold Capsule Auslese Riesling 2012,"Mosel, Germany",White Wine,96.0,"The wines of the Wehlener Sonnenuhr possess an excellent structure, show beautiful, ripe aromas and flavours (typically stone fruits, like peach), a fine minerality and great depth and length. Especially after having been aged for some years, their harmony, finesse and expression is unique. " +J.J. Prum Zeltinger Sonnenuhr Auslese Riesling 2017,"Mosel, Germany",White Wine,97.0,"Highly concentrated, yet light, vibrant wine. The fine botrytis is very well-structured. Great balance. The precise acidity plays charmingly with the wine's fruity aromas and flavors. Great aging potential. " +Jonata El Alma de Jonata 2011,"Santa Ynez Valley, Santa Barbara, Central Coast, California",Red Wine,96.0,"Heady and colorful nose of red fruit, black Kalamata olive, fresh green herbs and clean, brown earth. It is an experience just smelling this blend. Seductive stuff. A wine of balance and intrigue.Dark bittersweet chocolate, dried leaves, sweet tobacco, black tea and Luxardo cherries. Stays fresh and refined across the palate and finishes with a note of minty coolness and firm yet finetannin. Cooler climate cabernet franc at its complete and complex best." +Jonata El Desafio de Jonata 2013,"Santa Ynez Valley, Santa Barbara, Central Coast, California",Red Wine,96.0,Ripe red fruit moving to black fruit and fresh mushrooms. Perfumed and lifted. Cassis and freshly turned soil. Stunning combination of black and evergreen. Regal structure that starts out taut and fleshes out with time in the glass. Mint leaves. Coolness. Black olive and smokey fruit. Intense structure with beautifully robust tannins. Classic Jonata Cabernet Sauvignon. +Jonata Fenix 2013,"Ballard Canyon, Santa Barbara, Central Coast, California",Red Wine,96.0,Robust and sexy. A veritable black hole of sweet black fruit and structure. Layers and layers of powdered tannins. Rose petals and cinnamon. Red licorice and dried strawberry. Soft and pillow-like mid palate attack. Immense. Supremely rich. Huge push of herb-laced bold fruit with notes of cedar. Erupts with wonderful fruit push on the finish. Cacao tannins. Salted caramel and toasty oak. Lingers with nuance of dried blueberries and charred steak. +Jonata La Sangre de Jonata 2010,"Santa Ynez Valley, Santa Barbara, Central Coast, California",Red Wine,97.0,"An explosively aromatic wine with jasmine, black pepper and hard blackberry candies. Though it is the most powerful of the Jonata reds in 2010, it also already strikes me as the most cohesive and complete at this stage. Unforgettable purity of fruit throughout and a remarkable weight on the palate. This wine boasts the most velvety midpalate of any Sangre to date. It flows across the palate with incredible energy and unmatched power. Seamless! The tannins build slowly at the start and form a formidable tower that will certainly reward cellaring. 2010 Sangre strikes me as a blend between the best aspects of the 2008 and 2009 Sangre in its combination of impenetrable black fruit, formidable extract and surprising brightness. " +Jonata La Sangre de Jonata 2012,"Santa Ynez Valley, Santa Barbara, Central Coast, California",Red Wine,97.0,"Gamier and darker than the Todos at this stage. Truly lives up to its name. The 2012 is an exotic sangre with ripe fruit, pronounced black pepper, tar and truffle. Perfumed and powerful and equally impressive on the palate. Floods the mouth with densely packed black fruit. So much kinetic energy. Seamless travel across the palate. Even with the remarkable aromatic profile and mind-boggling density, it is the finish that leaves the lasting impression. Perfectly layered tannins slowly subside leaving nothing but subtle fruit and perfectly balanced acidity. Combination of the tension and massive proportions of its 2007 predecessor and the delicate cool climate notes of the ethereal 2010." +Jonata La Sangre de Jonata 2011,"Santa Ynez Valley, Santa Barbara, Central Coast, California",Red Wine,96.0,"Even at this early stage, it immediately jumps out of the glass aromatically. It displays some similarity at this stage to its older sibling, the legendary 2008. This is the first Sangre to include significant amounts of passito-style dried and whole cluster fermented wines (20%) and also a dollop of Grenache (6%). The resulting notes of dried herbs on the nose and the blast of ripe red fruit on the palate are a welcome addition to the simultaneously chaotic and focused mélange that is Sangre. After all this exotic talk of stem inclusion, drying fruit and Grenache additions, it is remarkable to note that this is the most reserved and elegant of all of the Sangre blends to date. It is beyond perfumed on the nose, but remains tightly coiled on the palate. With time in glass it opens to showcase peeks of velvet and plush richness on the mid palate. The earthy side of Syrah also plays a large role. It is soft and supple with remarkably fine tannins. This is a special Sangre. " +Jonata La Sangre de Jonata 2013,"Santa Ynez Valley, Santa Barbara, Central Coast, California",Red Wine,96.0,"Still tight and closed, which is a great sign for a young Sangre with such a long life ahead. Scents of black plum, black pepper and soy sauce. Savory notes combine with lifted black fruit. Shows its power on the attack with superbly sweet mulberry fruit. Dense and chewy like all of the 2013 reds. Tightly wound with ultra fine tannin wrapped around a savory core. Dried mushroom, clove andblack true. Exceptionally well-endowed Sangre. A wild animal of a wine. Built in a similar mold to the epic 2005 and 2009 Sangre bottlings. " +Jorge Ordonez Number 4 Esencia (375ML half-bottle) 2004,Spain,Boutique,99.0,"Esencia is a unique wine that incorporates the raisined muscat grape. After 24 months in barrel, we achieve a partial fermentation of the must. Alois Kracher, through this wine, sought to convey the essence of the village of Almáchar, in the heart of the Axarquía, famous from time immemorial for its delicious muscat grapes and raisins. " +Joseph Drouhin Chambertin-Clos de Beze Grand Cru 2015,"Gevrey-Chambertin, Cote de Nuits, Cote d'Or, Burgundy, France",Red Wine,98.0,"A beautiful, intense ruby-red color. Powerful but refined aromas. When the wine is young, the aromas are reminiscent of black cherry and dark chocolate. With age, they evolve towards notes of undergrowth, truffle and liquorice. After 15 years or so, the aromas of candied fruit remain but are mingled with nuances of leather and musk. Tannins provide a good structure, perfectly balanced by the velvety texture of the wine. The long aftertaste brings back the aromas of cherry and liquorice: a kaleidoscope of sensations." +Joseph Drouhin Chambertin-Clos de Beze Grand Cru 2016,"Gevrey-Chambertin, Cote de Nuits, Cote d'Or, Burgundy, France",Red Wine,98.0,"A beautiful, intense ruby-red color. Powerful but refined aromas. When the wine is young, the aromas are reminiscent of black cherry and dark chocolate. With age, they evolve towards notes of undergrowth, truffle and licorice. After 15 years or so, the aromas of candied fruit remain but are mingled with nuances of leather and musk. Tannins provide a good structure, perfectly balanced by the velvety texture of the wine. The long aftertaste brings back the aromas of cherry and licorice: a kaleidoscope of sensations." +Joseph Drouhin Montrachet Marquis de Laguiche 1998,"Burgundy, France",White Wine,96.0,"This world-famous estate belongs to one of the oldest and most aristocratic French families : the Marquis de Laguiche. Out of the 14 different owners, the Marquis de Laguiche family is proprietaire of the largest portion of Le Montrachet, entirely located in Puligny (according to many authorities, the better side). It has been in their hands since 1363. It is ironical that the hillside of Montrachet, producing Burgundys most prestigious white wine (and in some say the worlds most complex), should look so unprepossessing. The etymology of the place-name is actually instructive : the word rachet refers to a poor type of soil where only scrawny bushes can grow. It is therefore on this ""poor, hard, infertile"" soil, which geologists call Bathonian limestone, that the Chardonnay grape develops this unique ""terroir"" character. Montrachet is full bodied and luscious, yet elegant. It is only after a few years in bottle that it will develop its famous complexity and richness. Nose and aftertaste are reminiscent of exotic fruit, honey, liquorice, grilled almond and many other flavours which wine lovers over the years have attempted to analyse. But it is perhaps a musical word which can best describe this glorious wine: a symphony of sensations." +Joseph Jewell Grist Vineyard Zinfandel 2012,"Dry Creek Valley, Sonoma County, California",Red Wine,96.0,"This opulent, food-friendly Zinfandel is made with fruit sourced from 41-year old vines high above the Dry Creek Valley. A compelling nose of bing cherry, blueberry, toffee and black peppercorn precedes mouth-watering acidity and a spicy, tart cherry finish on the palate." +Joseph Phelps Backus Vineyard Cabernet Sauvignon (1.5 Liter Magnum) 2016,"Oakville, Napa Valley, California",Red Wine,98.0,"The 2016 vintage expresses rich red and dark fruit, fragrant violets, rose petals, graphite and black tea aromatics. A wine of great distinction, it melds power and structure with freshness and elegance in seamless layers of ultra-concentrated blueberry and black cherry with hints of baking spices and cassis to a lengthy finish." +Joseph Phelps Backus Vineyard Cabernet Sauvignon 2003,"Oakville, Napa Valley, California",Red Wine,96.0,"The 2003 Backus Cabernet is saturated in color with a dark purple, ruby red hue. The aromas of mocha, minerality, black fruits and graphite are characteristic of this unique, grand cru vineyard in the Oakville appellation. The incredible nose is framed by robust tannins, bright fruit flavors and subtle French oak notes, with a depth and concentration that follows through on the palate. " +Joseph Phelps Backus Vineyard Cabernet Sauvignon 2013,"Oakville, Napa Valley, California",Red Wine,96.0,"Blend: 90% Cabernet Sauvignon, 5% Merlot, 5% Petit Verdot" +Joseph Phelps Backus Vineyard Cabernet Sauvignon 2017,"Oakville, Napa Valley, California",Red Wine,96.0,"A wine of great depth and integrity, 2017 Backus offers aromatic blackberry, blueberry, cocoa powder and black pepper with notes of forest floor and fragrant young violet. Powerful tannin structure envelopes vibrant layers of crushed rock minerality and black fruit with a fresh, inviting, lingering finish." +Joseph Phelps Backus Vineyard Cabernet Sauvignon (3 Liter - autographed) 2003,"Oakville, Napa Valley, California",Red Wine,96.0,"The 2003 Backus Cabernet is saturated in color with a dark purple, ruby red hue. The aromas of mocha, minerality, black fruits and graphite are characteristic of this unique, grand cru vineyard in the Oakville appellation. The incredible nose is framed by robust tannins, bright fruit flavors and subtle French oak notes, with a depth and concentration that follows through on the palate. " +Joseph Phelps Insignia (1.5 Liter Magnum) 2001,"Napa Valley, California",Red Wine,96.0,"With complex aromas of black cherry, plum, chocolate, currant and toasty oak, the wine displays layers of flavor and richness that disguise its power and longevity. Beautifully crafted and balanced, Insignia reflects a new level of quality from both the vineyards and the growing regions. ""A triumph. Aged nearly two years in all-new French oak, this massive wine stuns with its superb balance. Manages the elusive challenge of reining in hugely ripe black currant, cherry and oak flavors and sweet tannins while keeping the palate impression soft and alluring, almost feminine. Just gorgeous right out of the bottle, but should develop effortlessly through the decade and beyond.""-Wine Enthusiast " +Joseph Phelps Insignia (1.5 Liter Magnum) 2015,"Napa Valley, California",Red Wine,97.0,"The 2015 Insignia is densely hued with rich dark fruit, cocoa powder and fragrant dried flower notes. Velvety texture and weight on the palate with layers of juicy black plum, Madagascar vanilla and bergamot. Bold, creamy and supple with integrated tannin structure and a lengthy finish." +Joseph Phelps Insignia (1.5 Liter Magnum) 2014,"Napa Valley, California",Red Wine,96.0,"The 2014 Insignia opens with expressive blackberry, cocoa powder, Bergamot and floral aromatics. Fresh and focused with concentrated black fruit, mocha, cardamom and Madagascar vanilla notes. Opulent and rich with supple tannin structure and balance." +Joseph Phelps Insignia 2014,"Napa Valley, California",Red Wine,96.0,"The 2014 Insignia opens with expressive blackberry, cocoa powder, Bergamot and floral aromatics. Fresh and focused with concentrated black fruit, mocha, cardamom and Madagascar vanilla notes. Opulent and rich with supple tannin structure and balance." +K Vintners Cattle King Syrah 2013,"Walla Walla Valley, Columbia Valley, Washington",Red Wine,98.0,"Power! Layers of licorice, black olive, meat, smoke, dark fruit, white and black pepper. Deep, concentrated and just awesome. This wine is rich, dense and delicious!" +K Vintners Motor City Kitty Syrah 2013,Washington,Red Wine,96.0,"A dark, dense mouthful of boysenberry, blackberry and damp earth. Layer in olives and blood for a savory, expansive wine. " +K Vintners Northridge Syrah 2007,"Walla Walla Valley, Columbia Valley, Washington",Red Wine,96.0,"Extremely concentrated, intense color. Notes of huckleberry, cedar, cigar and kirsch. Built like a brick shit-house; exuberant ripe fruit with grippy backbone and spice and a seamless finish. " +K Vintners Rockgarden Syrah 2012,Washington,Red Wine,96.0,"Supple, rich & earthy, areal, oh-so-profound wine with great depth. Asian 5 spice, cool ash, game and just exotic. Oh-so-smooth, deep & classic." +K Vintners The Beautiful Syrah 2012,"Walla Walla Valley, Columbia Valley, Washington",Red Wine,97.0,"Feminine, deep and compelling. First off a beautiful fragrance of black plum, exotic spice, toasted brioche. Luxurious and sexy with a palate anchored with crushed rock, wet earth and garrigue. Always beautiful." +K Vintners The Hustler Syrah 2009,"Walla Walla Valley, Columbia Valley, Washington",Red Wine,96.0,"""The Hustler ""is from the oldest Syrah vineyard in the Walla Walla Valley. I've only made this wine three times in the past ten years. 35 months in barrel. Great depth and concentration, aromas of cool campfire ash, game and roasted herbs. Silky and plush with a lot of ""WOW,"" seamless and complete, this is the last Hustler of the decade. " +K Vintners Wells Syrah (1.5 Liter Magnum) 2006,"Walla Walla Valley, Columbia Valley, Washington",Red Wine,97.0,"Textbook K Syrah. Game, black olive, crushed stone and a bouquet of fresh flowers thrown in." +Kaesler Old Bastard Shiraz 2005,"Barossa Valley, Barossa, South Australia, Australia",Red Wine,98.0,"""As good as the preceding wines may be, they pale in the shadow of the 2005 Shiraz ""Old Bastard"", sourced from a 114-year-old vineyard, and which spent 22 months in new and one-year-old French oak. It presents a superb perfume of cedar, violets, lavender, smoked meat, game, black raspberry, and blueberry. This leads to a voluptuous, velvety-textured, layered, super concentrated Shiraz in perfect balance with well-concealed tannins and a 60-second, pure finish. Give it 6-8 years and drink it through 2035. The Kaesler family, of Silesian origin, emigrated to the Barossa in the 1840s. The winemaking is in the hands of Reid Bosward and Stephen Dew."" - Wine Advocate" +Kaesler Stonehorse Shiraz 2002,"Barossa Valley, Barossa, South Australia, Australia",Red Wine,96.0,"The ""Stonehorse"" wines are vinified to make styles that emphasise fruit characteristics with complementary barrel maturation. The oak is used to support the palate with firm dignified structure, and spice the nose like truffles in pasta." +Kalin Cuvee CH Chardonnay 1995,"Sonoma Coast, Sonoma County, California",White Wine,96.0,"The 1995 vintage produced roasted nut aromas combined with crisp apple-like flavors to produce a terroir-driven, Meursault style Chardonnay. The scents and flavors of this wine emanate from the marine fogscape of the Sonoma Coast, and the marine shale and limestone terroir. These rich flavors and aromas are reminiscent of a freshly baked yellow plum tart, ground cinnamon, roasted almonds, etc. The unusually favorable fruit-acid structure of this cool climate wine will allow for the sustained development of bottle complexity." +Kamen Estate Cabernet Sauvignon (1.5 Liter Magnum) 2013,"Moon Mountain District, Sonoma Valley, Sonoma County, California",Red Wine,96.0,"The 2013 Cabernet Sauvignon greets you with a burst of intense aromatics. A cornucopia of black fruits, wild berries, dark sweet cherries, tea, mocha, black cardamom, acacia flowers, suede, sun baked river rocks and a subtle hint of star anise. The palate is lush, concentrated and beautifully balanced. It possesses amazing fruit purity, layered complexity, velvety tannins, a powerful mouthfeel and an endless finish. Enjoy now and over its 20 year evolution." +Kamen Estate Cabernet Sauvignon 2012,"Moon Mountain District, Sonoma Valley, Sonoma County, California",Red Wine,96.0,"Rich and lush with a pure fruit filled core exibiting notes of black mountain berries, black cherries, wild black raspberries, roasted plums and crushed rock. The effusive nose continues with aromas of graphite, violets, suede, exotic black cardamom, Ceylon cinnamon and a hint of fresh black pepper. This perfectly balanced Cabernet Sauvignon is both extracted and structured and will drink well now and over the next 20 years." +Kamen Estate Cabernet Sauvignon 2013,"Moon Mountain District, Sonoma Valley, Sonoma County, California",Red Wine,96.0,"The 2013 Cabernet Sauvignon greets you with a burst of intense aromatics. A cornucopia of black fruits, wild berries, dark sweet cherries, tea, mocha, black cardamom, acacia flowers, suede, sun baked river rocks and a subtle hint of star anise. The palate is lush, concentrated and beautifully balanced. It possesses amazing fruit purity, layered complexity, velvety tannins, a powerful mouthfeel and an endless finish. Enjoy now and over its 20 year evolution." +Kamen Estate Cabernet Sauvignon 2014,"Moon Mountain District, Sonoma Valley, Sonoma County, California",Red Wine,96.0,"Kamen Estate's 2014 Cabernet is incredibly balanced and sings from the glass with layers and layers of heady aromas and concentrated flavors. Wild blueberries, tree ripened plums, raspberry popovers, marzipan, graphite, licorice whip, milk chocolate and forest floor. The estate’s hallmark notes of violets and crushed rock are ever present. This wine is supremely generous and approachable in its youth, however, its elegance and power make a strong argument for cellaring over the next 20 years." +Kamen Estate Kashmir Cabernet Sauvignon 2012,"Sonoma Valley, Sonoma County, California",Red Wine,98.0,"This intensely aromatic wine sings from the glass with the perfumeof ripe blackberry, wild raspberries, roasted plums, dark chocolate,Christmas fruitcake, charcoal, wet stone and the exotic hint ofsandalwood. Sweet, lush fruit explodes on the palate. Concentratedand gripping yet ethereal and elegant. The wine’s expansive flavorprofile delivers lush layers, firm yet silky tannins and a monumentalfinish. Enjoy now or cellar over the next 30 years." +Kanzler Vineyards Pinot Noir 2007,"North Coast, California",Red Wine,96.0,"Dark ruby color. Intense flavors of black cherry, boysenberry and blueberry. Wonderful nose of rose petals and spice combined with a delightful earthiness. A big, but well balanced wine with good acid and soft tannins to complement the conentrated fruit flavors. A wine that reveals layer upon layer of mouthwatering structure, depth and complexity as it lingers on the palette. " +Kapcsandy Family Winery Rapszodia 2012,"Yountville, Napa Valley, California",Red Wine,98.0,"A rich, ethereal style wine. Sweet tobacco, herbs, mint, licorice, new leather, smoke and incense are some of the many notes that flesh out in the Rapszodia. This is a wine built in pure elegance and finesse. The silky, gracious finish leaves a lasting impression." +Kapcsandy Family Winery State Lane Cabernet Sauvignon Grand Vin 2005,"Yountville, Napa Valley, California",Red Wine,98.0,"Blend: 80% Cabernet Sauvignon, 14% Merlot, 6% Cabernet Franc," +Kapcsandy Family Winery State Lane Cabernet Sauvignon Grand Vin 2017,"Yountville, Napa Valley, California",Red Wine,96.0,100% Cabernet Sauvignon +Kapcsandy Family Winery State Lane Vineyard Estate Cuvee 2007,"Napa Valley, California",Red Wine,96.0,"46% Cabernet Sauvignon, 46% Merlot, 6% Cab Franc, 2% Petite Verdot" +Kapcsandy Family Winery State Lane Vineyard Roberta's Reserve 2006,"Yountville, Napa Valley, California",Red Wine,96.0,"The Roberta's Reserve exhibits classic Merlot notes of chocolate fudge and mocha intertwined with black currants, sweet black cherries, and hints of smoke and forest floor. The complex aromatics are accompanied by an opulent, lush wine displaying terrific definition." +Kapcsandy Family Winery State Lane Vineyard Roberta's Reserve 2008,"Yountville, Napa Valley, California",Red Wine,99.0,"Flagship Merlot-based wine from Kapcsandy Family, in part an homage to the exceptional wines of Pomerol, Bordeaux. From the finest parcels of Merlot on the estate and only 7% of our entire production." +Kapcsandy Family Winery State Lane Vineyard Roberta's Reserve 2010,"Yountville, Napa Valley, California",Red Wine,97.0,"Blend: 95% Merlot, 5% Cabernet Franc " +Kapcsandy Family Winery State Lane Vineyard Roberta's Reserve 2014,"Yountville, Napa Valley, California",Red Wine,96.0,Full body and superb tannin tension with polish and balance. Harmony. The layers and texture to this are phenomenal. The greatest American merlot ever made. Ranks the best in the world. +Kathryn Kennedy Santa Cruz Mountains Estate Cabernet Sauvignon 2012,"Santa Cruz Mountains, California",Red Wine,97.0,"After a series of cool and cold vintages, 2012 brought a warm and more typical growing season. The larger than normal crop load served only to usher a slow and long ripening. This new vintage surprises in its appeal as current drinking big scale Cabernet. It has a spectacular mouthfeel with a dense core of fruit and soil flavors all carried by an “on target” balance." +Kay Brothers Block 6 Shiraz 1998,"McLaren Vale, South Australia, Australia",Red Wine,98.0,"Robust, rich and full flavored, displaying complex and varied fruit and spice characters with abundant fine tannins leading to a long lingering finish. " +Kay Brothers Block 6 Shiraz 2001,"McLaren Vale, South Australia, Australia",Red Wine,98.0,"""Robust, rich and full flavoured, displaying complex and varied fruit and spice characters with abundant fine tannins leading to a long lingering finish. This vintage is very well structured and with further bottle age will become a wonderful mouth filling harmony. I am often asked how long this will take. It's about 7 years till the wine plateaus but it should live many years beyond with good cellaring but do watch the corks as some will last decades but more than likely most much less. I am looking forward to the day when we use the Stelvin screw cap closure rather than cork!"" " +Kay Brothers Block 6 Shiraz 2004,"McLaren Vale, South Australia, Australia",Red Wine,98.0,"The Block 6 vineyard faces east and rows run north-south with vine spacing 12 feet between vines in row. Vines are cane and spur pruned with the canes wrapped on the top wire of the trellis. The present four acres comprises a corner of red loam, some heavy clay in the middle of the block and gravely alluvial soils on the lower side. The underlying geology consists of quartz, ironstone and some silty limestone. " +Kay Brothers Hillside Shiraz 1999,"McLaren Vale, South Australia, Australia",Red Wine,96.0,During the last decade of the 19th Century Herbert & Frederick Kay planted the first Shiraz vines on the eastern hillside of their McLaren Vale Amery Vineyard. In 1992 the last of those original Hillside Shiraz plantings - Block 6 - celebrated its centenary and to commemorate this milestone Herbert's grandson Colin began replanting the old Hillside vineyard using cuttings taken from the ancient gnarled vines of Block 6. +Keenan Mernet Reserve (1.5 Liter Magnum) 2007,"Napa Valley, California",Red Wine,97.0,"2007 is our 9th consecutive vintage of ""Mernet"" (mare-nay), our proprietary marriage of Merlot and Cabernet. Each blend has been half Merlot and half Cabernet, but no two wines have had the same vineyard combinations. This year the Merlot half is equally split between the ""Mailbox Vineyard"" and the Carneros Merlot. The Cabernet half of the blend is all estate clone 7. The resulting wine is a seamless blend of the two varietals with an emphasis on high-toned sweet, delicious rich fruit with an almost hidden depth and structure to allow for indefinite aging. Enjoy now or decades from now." +Keenan Mernet Reserve 2002,"Spring Mountain District, Napa Valley, California",Red Wine,96.0,"This marriage of varietals is deemed “Mernet” (Mare-nay) by winery president, Michael Keenan. The name stems from the components of the blend – Mer(lot) and (Caber)net, with each of the wines supplying what the other may have lacked. The finished wine is a beautifully balanced, full-bodied wine that will radiate impressive flavors and aromas for many years to come." +Keenan Mernet Reserve 2006,"Spring Mountain District, Napa Valley, California",Red Wine,96.0,"2006 is the 8th consecutive vintage of ""Mernet"" (mare-nay), Rober Keenan's proprietary marriage of Merlot and Cabernet. Each blend has been half Merlot and half Cabernet but no two wines have hadthe same vineyard combination. This year the Merlot half is from the ""Mailbox Vineyard"" and the Cabernet half is equally split between estate Cabernet Sauvignon (clone 15) and estateCabernet Franc. The resulting wine is a seamless blend of the three varietals with an emphasis on high-toned sweet, delicious rich fruit with an almost hidden depth and structure to allow for indefinite aging. Enjoy now or decades from now." +Keenan Mernet Reserve 2007,"Spring Mountain District, Napa Valley, California",Red Wine,97.0,"2007 is our 9th consecutive vintage of ""Mernet"" (mare-nay), our proprietary marriage of Merlot and Cabernet. Each blend has been half Merlot and half Cabernet, but no two wines have had the same vineyard combinations. This year the Merlot half is equally split between the ""Mailbox Vineyard"" and the Carneros Merlot. The Cabernet half of the blend is all estate clone 7. The resulting wine is a seamless blend of the two varietals with an emphasis on high-toned sweet, delicious rich fruit with an almost hidden depth and structure to allow for indefinite aging. Enjoy now or decades from now." +Kilikanoon Attunga 1865 Shiraz 2005,"Clare Valley, South Australia, Australia",Red Wine,97.0,"Attunga 1865 Shiraz is a single vineyard, Clare Valley Shiraz made from some of Australia's oldest living vines. These 900 individual Shiraz vines, planted in Clare's ancient Terra Rossa soils, were established in 1865 before the phylloxera scourge which decimated the vines of Europe and the USA. " +Kilikanoon Oracle Shiraz 2003,"Clare Valley, South Australia, Australia",Red Wine,97.0,"Intense, inky / crimson red with distinct youthful, purple hues. Lifted sweet plum and berry fruits. Hints of coffee, chocolate and menthol integrate and complex well with the spicy French oak. Palate is richly textured and flavoured, initial sweet plum and berry fruits integrated with the firm tannins and a smooth, alcohol finish. The palates natural acidity and subtle oak characters provide length, complexity and persistence." +Kilikanoon Parable Shiraz 2004,Australia,Red Wine,96.0,"The 2004 Parable is made entirely from the grapes of two premium vineyards in the McLaren Vale region. Both vineyards are low yielding, traditionally managed and are between 30 and 45 years of age. Traditional vinification techniques using small separate batches of fruit, open fermenters and basket pressing has created a full bodied and flavoursome Shiraz. The wine was matured for 2 years in small American and French oak casks before careful blending and bottling unfiltered to ensure the preservation of the intense varietal characters. " +Kinsella Estates Heirloom Vineyard Cabernet Sauvignon 2014,"Dry Creek Valley, Sonoma County, California",Red Wine,96.0,"While it was the third consecutive year marked by limited rainfall, the 2014 vintage offered a perfectly temperate growing season characterized by long, moderate days and cool, clear nights. The year began with warm spring conditions that gave way to an early bud break and the consistent, dry weather afforded an optimal fruit set of small berries with incredible concentration. Crop yields were down a bit from 2013, but the quality was magnificent. It was a textbook growing season, every winemaker’s dream." +Kistler Vineyards Cuvee Catherine Pinot Noir (torn label) 2005,"Russian River, Sonoma County, California",Red Wine,96.0,"A tightly wound, purple wine brimming with cassis, violet and minerals. A wine which combines finesse with power." +Kistler Vineyards Cuvee Cathleen Chardonnay 2002,"Sonoma Mountain, Sonoma Valley, Sonoma County, California",White Wine,96.0,"This vineyard produces one of our most complete and complex Chardonnays, and nears perfection on an annual basis." +Kistler Vineyards Cuvee Cathleen Chardonnay 2006,"Sonoma Mountain, Sonoma Valley, Sonoma County, California",White Wine,98.0,"This vineyard produces one of our most complete and complex Chardonnays, and nears perfection on an annual basis." +Kistler Vineyards Cuvee Cathleen Chardonnay 2007,"Sonoma Mountain, Sonoma Valley, Sonoma County, California",White Wine,97.0,"Produces one of our most complete and complex chardonnays, and nears perfection on an annual basis." +Kistler Vineyards Cuvee Natalie Pinot Noir 2007,"Sonoma Coast, Sonoma County, California",Red Wine,96.0,"One of the rare uplifts of red, older iron oxide driven soils in the area, mixed with gravel. A consistently elegant wine marked by red floral notes and a striking perfume." +Kistler Vineyards Dutton Ranch Chardonnay 2005,"Russian River, Sonoma County, California",White Wine,96.0,"Produced since 1979. Wine grapes planted to what was once the premiere apple growing region of western Sonoma County, located in the heart of the Sonoma Coast region. Annually results in a wine of precision, with focused, structural acids layered through a body of delicate orchard fruit tones and overlaid with roasted grain." +Kistler Vineyards Dutton Ranch Chardonnay 2015,"Russian River, Sonoma County, California",White Wine,96.0,"Produced since 1979. Wine grapes planted to what was once the premiere apple growing region of western Sonoma County, located in the heart of the Sonoma Coast region. Annually results in a wine of precision, with focused, structural acids layered through a body of delicate orchard fruit tones and overlaid with roasted grain." +Kistler Vineyards Hudson Chardonnay 2007,"Carneros, California",White Wine,97.0,"Sourced since 1994. Located in the southwestern reaches of Napa County, where a rare mix of volcanic and marine sediment soils meet to produce a wine of depth and elegance, often touched with high pitched tones of iodine, and an oyster shell like minerality." +Kistler Vineyards Hyde Vineyard Chardonnay 2004,"Carneros, California",White Wine,96.0,"Kistler A wine of weight, without being heavy that is consistently supported by a strong acid profile and a steely like sulfide character." +Kistler Vineyards Hyde Vineyard Chardonnay 2005,"Carneros, California",White Wine,96.0,A Chardonnay of weight (without being heavy) that is consistently supported by a strong acid profile and a steely like sulfide character. +Kistler Vineyards Kistler Vineyard Chardonnay 2002,"Sonoma Valley, Sonoma County, California",White Wine,96.0,"Produced since 1986. Just shy of 1800 feet in elevation, in a small bowl on the western edge of the Mayacama mountains lies the original Kistler planting. Thirty year old vines grow dry farmed in deep red volcanic ash, producing a wine with an intense sense of the mountain heritage of the delicate stone fruit that is lifted, like its McCrea cousin, yet firmer, and with a stronger core and added layers of richness." +Kistler Vineyards Kistler Vineyard Chardonnay 2004,"Sonoma Valley, Sonoma County, California",White Wine,96.0,"Produced since 1986. Just shy of 1800 feet in elevation, in a small bowl on the western edge of the Mayacama mountains lies the original Kistler planting. Thirty year old vines grow dry farmed in deep red volcanic ash, producing a wine with an intense sense of the mountain heritage of the delicate stone fruit that is lifted, like its McCrea cousin, yet firmer, and with a stronger core and added layers of richness." +Kistler Vineyards Kistler Vineyard Chardonnay 2007,"Sonoma Valley, Sonoma County, California",White Wine,96.0,"Produced since 1986. Just shy of 1800 feet in elevation, in a small bowl on the western edge of the Mayacama mountains lies the original Kistler planting. Thirty year old vines grow dry farmed in deep red volcanic ash, producing a wine with an intense sense of the mountain heritage of the delicate stone fruit that is lifted, like its McCrea cousin, yet firmer, and with a stronger core and added layers of richness." +Kistler Vineyards Kistler Vineyard Pinot Noir 1998,"Sonoma Valley, Sonoma County, California",Red Wine,96.0,"A concentrated wine, with impressive energy to its red and black fruit flavors and subtle earth tones." +Kistler Vineyards Stone Flat Vineyard Chardonnay 2005,"Sonoma Coast, Sonoma County, California",White Wine,97.0,"Located in the western portion of Carneros, where the soils are driven by heavy river run cobble, but the air is dominated by afternoon winds from the Pacific. Produces a wine that strikes an impeccable balance between its minerality, its fruit reminiscent core and it's silken, persistent finish." +Kistler Vineyards Stone Flat Vineyard Chardonnay 2006,"Sonoma Coast, Sonoma County, California",White Wine,96.0,"A Chardonnay that strikes an impeccable balance between its minerality, its fruit reminiscent core and its silken, persistent finish." +Kistler Vineyards Stone Flat Vineyard Chardonnay 2007,"Carneros, California",White Wine,96.0,"A Chardonnay that strikes an impeccable balance between its minerality, its fruit reminiscent core and its silken, persistent finish." +Kistler Vineyards Trenton Roadhouse Chardonnay 2014,"Sonoma Coast, Sonoma County, California",White Wine,96.0,"In production since 1994, vineyard designate since 2009. The newest addition to Kistler's vineyard designate bottlings. Straddling a south facing hilltop and comprised of Gold ridge soils, like the Vine Hill and Dutton vineyards, but the finest grained sand of any of those sites. Produces a soil influenced wine of resounding minerality and complex earthy sulfides which stand above the green toned orchard fruit notes." +Kistler Vineyards Vine Hill Chardonnay (375ML half-bottle) 2015,"Russian River, Sonoma County, California",White Wine,96.0,"Produced since 1991. The vineyard that surrounds the winery. 23 year old dry farmed Chardonnay grown in a deep, sandy subset of the Gold Ridge soil series that seemingly has no bottom. The vines mine the nutrient poor sands to produce a wine of unparalleled energy and verve. One of our perennial favorites due to its resounding natural acids and low pH which strike a perfect balance with the stone fruit body and notes of toasted hazelnut." +Kongsgaard Chardonnay 2001,"Napa Valley, California",White Wine,98.0,"""An awesome effort, the 2001 Chardonnay may be this estate's finest Chardonnay to date. Boasting profoundly intense notes of orage marmalade, minerals, lemon oil, and honeysuckle as well as great delineation for its massive size, this terrific Chardonnay tastes like a grand cru white Burgundy.""" +Kongsgaard Syrah 2005,"Napa Valley, California",Red Wine,98.0,"An exotic masterpiece with its dense smoky, gamey intensity and profoundly long finish. Its spiritual antecedent lies in the northern Rhone between the Cote-Rotie and Hermitage. " +Kongsgaard Syrah 2014,"Napa Valley, California",Red Wine,96.0,The 2014 Syrah by Kongsgaard Napa Valley is another glorious milestone in their long Syrah history. It was apparent in the fermenter that the 2014 was destined to become a wild and intense wine. The sheer volume of savory aroma and flavor experienced while doing the pump-overs in the first week of this wine’s life was truly astonishing. +Kongsgaard The Judge Chardonnay 2007,"Napa Valley, California",White Wine,98.0,"Honeyed citrus and stony high notes lift the aroma, anticipating the palate, which explodes into an array of glorious impressions from peach and apricot to lemon rind to apple custard pie." +Kosta Browne 4 Barrel Pinot Noir 2007,California,Red Wine,97.0,"Rich and filling. Complex with layers of berries, warm spices, rich ripe cherries and sweet lavender with a touch of spice. Intense and coating. The 2007 4-Barrel is expansive on the palate with many levels of fruit and currants. Traces of dark berry and ripe plum. A tremendously long and caressing finish." +Kosta Browne Kanzler Vineyard Pinot Noir 2005,"Sonoma Coast, Sonoma County, California",Red Wine,96.0,"Aromas of dark blackberry, plum and cedar with overtones of dark stonefruit. Powerful flavors greet the palate with plum and black cherry. Hints of shitake mushroom, forest floor and fresh cedar give the wine a masculine tone. Ripe cherry, plum and undertones of cassis supply opulent black fruit, while maintaining the unmistakable Pinot Noir character throughout the finish." +Kracher Chardonnay TBA Nouvelle Vogue No. 5 (375ML) 2011,"Burgenland, Austria",,96.0,"Ripe tropical fruit notes, delicate oak spice and fudge. The palate shows off its vibrant acidity and citrus fruit characters in the finish." +Kracher Chardonnay Trockenbeerenauslese #13 1998,"Burgenland, Austria",Collectible,97.0,"The 1998 Chardonnay Trockenbeerenauslese Nouvelle Vague Number 13 is Kracher's most concentrated wine from this vintage. Cedar, spices, apricots, and overripe peaches are displayed by thisfull-bodied, muscular offering. It is hugely dense, almost syrupy, with loads of jammy and jellied fruits in its round, sexy personality. This Rubenesque wine has untold quantities of fruit (mostly apricots), spices, and botrytis in its expressive, seamless flavorprofile. This harmonious, muscular and graceful wine will retain its fruit for at least 15 years, and will potentially age longer than anyone reading this article." +Kracher Chardonnay Trockenbeerenauslese No 13 (375ml) 1998,"Burgenland, Austria",Collectible,97.0,"The 1998 Chardonnay Trockenbeerenauslese Nouvelle Vague Number 13 is Kracher's most concentrated wine from this vintage. Cedar, spices, apricots, and overripe peaches are displayed by this full-bodied, muscular offering. It is hugely dense, almost syrupy, with loads of jammy and jellied fruits in its round, sexy personality. This Rubenesque wine has untold quantities of fruit (mostly apricots), spices, and botrytis in its expressive, seamless flavor profile." +Kracher Scheurebe TBA #10 (375ML half-bottle) 2002,"Burgenland, Austria",Collectible,96.0,"The Kracher Sheurebe #10 opens with medium golden yellow color. Aromas of fresh tangerine zest, red-berried characters, honeyed notes, and a highly attractive bouquet. On the palate, white tropical fruit notes, highly mineral with a salty tang on the finish. Despite the immense residual sugar value, the wine is remarkably fresh. " +Kracher Scheurebe Zwischen Den Seen Trockenbeerenauslese #9 (375ML half-bottle) 2000,"Burgenland, Austria",Collectible,97.0,"Medium gold. Fresh Muscat grape aromas on the nose, seductive exotic and floral notes with fresh kumquat. Spicy nutmeg and white pepper characters on the finish, leading to a long and pleasantly lingering aftertaste. Magnificent varietal character." +Kracher Welschriesling Trockenbeerenauslese No. 11 (375ML half-bottle) 2002,"Burgenland, Austria",Collectible,98.0,"Rich golden-yellow tone. Intense aromas of herbed spice, a touch of smoke over nougat, subtle fig, apricot and honey. The palate is luscious and succulent with fruit-driven flavors of orange; intense and elegant, with complexity and concentration of fruit. Despite the spectrum of the technical data, the wine is exceptionally harmonious, with long development potential." +Krug Clos d'Ambonnay 1995,"Champagne, France",Sparkling & Champagne,97.0,"""For 15 years, Champagne Krug has kept a secret. During that time, brothers Rémi and Henri Krug, the former managing director and winemaker, respectively, and Henri's son, Olivier Krug, the current managing director, dreamed about, developed, vinified and aged a new single-vineyard Champagne. The new wine, Clos d'Ambonnay 1995, has one of the highest-ever price tags of a newly released wine... " +Krug Clos du Mesnil Blanc de Blancs 1986,"Champagne, France",Sparkling & Champagne,98.0,"The wine is characterized by crispness, freshness and vivacity allied to the rich nutty and honey notes of great Chardonnay wines. A Krug for fanatics of rarity." +Krug Clos du Mesnil Blanc de Blancs 1990,"Champagne, France",Sparkling & Champagne,97.0,"The wine is characterized by crispness, freshness and vivacity allied to the rich nutty and honey notes of great Chardonnay wines. A Krug for fanatics of rarity." +Krug Clos du Mesnil Blanc de Blancs 1995,"Champagne, France",Sparkling & Champagne,98.0,One of the rarest and most sought after bottlings of vintage Champagne in the world. The 1995 vintage was just released from the Krug cellars. +Krug Clos du Mesnil Blanc de Blancs 1998,"Champagne, France",Sparkling & Champagne,96.0,"Krug Clos du Mesnil is the product, not merely of a single grape variety and a single year, but of a single historic vineyard. Made with 100% Chardonnay grapes from the Clos du Mesnil, a single walled vineyard covering just 1.85 hectares (or 4.57 acres) within the village of Mesnil-sur-Oger in the renowned Côte des Blancs. " +Krug Grande Cuvee Brut (164th Edition) with Gift Box,"Champagne, France",Sparkling & Champagne,96.0,"This is an extraordinary blend of 127 wines from 11 different years, the oldest from 1990 and the youngest from 2008. As you taste it, notes of toasted bread, hazelnut, nougat, barley sugar and jellied fruits may take you by surprise. You may even taste hints of apples still on the tree, flowers in bloom, ripe and dried fruit, almonds, marzipan, gingerbread, sweet spices and even brioche and honey." +Krug Vintage Brut (1.5 Liter Magnum) 1990,"Champagne, France",Sparkling & Champagne,98.0,"Finally, the 1990 Krug is here!" +Krug Vintage Brut (1.5 Liter Magnum) 1996,"Champagne, France",Sparkling & Champagne,99.0,"Krug 1996 is extraordinary indeed – an extreme, eccentric champagne that first caresses the senses with its rich aromas, firm texture and full, ripe flavours, then dramatically explodes into jubilant freshness. Rich, radiant gold illuminated by slender streams of bubbles, Krug 1996 already promises a masterful combination of maturity and acidity. Notes of fresh pear, candied lemon, ripe fruit, honey, gingerbread, and mocha can be detected." +Krug Vintage Brut 1988,"Champagne, France",Sparkling & Champagne,96.0,"Established in 1843, Krug has specialized solely in prestige and exceptional champagne. Dedication to quality takes precedence over quantity of production. Krug is the only Champagne House still fermenting all of its champagnes the age-old way, in small oak casks." +Krug Vintage Brut 1990,"Champagne, France",Sparkling & Champagne,98.0," Krug only produces a Vintage when a crop has exceptional characteristics and sufficiently interesting features. To create exceptional vintages, the Krug family selects those wines that best express the ""voice"" of the chosen year. Krug Vintage is like a concerto, a joint venture between the Krug style and the personality of a certain year. The year is the soloist but the orchestra remains Krug." +Krug Vintage Brut 1990,"Champagne, France",Sparkling & Champagne,96.0,"Established in 1843, Krug has specialized solely in prestige and exceptional champagne. Dedication to quality takes precedence over quantity of production. Krug is the only Champagne House still fermenting all of its champagnes the age-old way, in small oak casks." +Krug Vintage Brut 1990,"Champagne, France",Sparkling & Champagne,96.0,"""A profound wine of great depth and complexity. Its detailed flavors range from citrus and ginger to whole grain bread and woodsy richness, with accents of honey and nuts. Retains its focus thanks to a vibrant structure, all the time carrying its weight with authority and grace. Fine, smoky finish. Drink now through 2020. 1,500 cases imported."" - Wine Spectator " +Krug Vintage Brut 2002,"Champagne, France",Sparkling & Champagne,96.0,"Fruit, freshness, balance, expressiveness, vivacity and finesse, all at the same time. Krug 2002 is only possible thanks to the unique, detailed approach of the House of Krug to creating Champagnes. " +Krug Vintage Brut (scuffed label) 1996,"Champagne, France",Sparkling & Champagne,98.0,"Krug 1996 is extraordinary indeed – an extreme, eccentric champagne that first caresses the senses with its rich aromas, firm texture and full, ripe flavours, then dramatically explodes into jubilant freshness. Rich, radiant gold illuminated by slender streams of bubbles, Krug 1996 already promises a masterful combination of maturity and acidity as its aromas tease the nose with the tartness of fresh pear and candied lemon, the roundness of ripe fruit and nougatine. Then, even as the taste buds are revelling in the smooth, mellow flavors of honey, gingerbread and mocha, this astounding champagne unleashes its exuberant crescendo of freshness that is at once totally unexpected and utterly Krug. " +Krug Vintage Brut with Gift Box 1988,"Champagne, France",Sparkling & Champagne,96.0,"Established in 1843, Krug has specialized solely in prestige and exceptional champagne. Dedication to quality takes precedence over quantity of production. Krug is the only Champagne House still fermenting all of its champagnes the age-old way, in small oak casks." +Krug Vintage Brut with Gift Box 2002,"Champagne, France",Sparkling & Champagne,96.0,"Fruit, freshness, balance, expressiveness, vivacity and finesse, all at the same time. Krug 2002 is only possible thanks to the unique, detailed approach of the House of Krug to creating Champagnes. " +Krupp Brothers Estates Stagecoach Vineyard M5 Cabernet Sauvignon 2014,"Napa Valley, California",Red Wine,96.0,"Dark garnet in color with opulent aromas of blackberry, lush dark plum, violets and a hint of orange marmalade. Velvety and plush upon entry, with sumptuous flavors of cassis, anise and bittersweet chocolate that carry through to a lingering finish. The 2014 vintage saw early bud break and a consistently warm spring and summer leading to an early harvest characterized by even ripening and rounded, mature tannins." +Krutz Family Cellars Stagecoach Vineyard Cabernet Sauvignon 2006,"Napa Valley, California",Red Wine,97.0,"From it's dense, saturated ruby hue to its earthy, cigar box nose, this Cab commands attention. Pure, focused flavors of black cherry, currant and tobacco while a mid palate of cedar spice vanilla and mocha linger in layers. All while framed with velvet like dusty tannins. " +Kumeu River Hunting Hill Chardonnay 2006,New Zealand,White Wine,96.0,"The Chardonnay from Hunting Hill shares some of the characters with the neighbouring Mate's Vineyard with its distinctive floral notes and restrained elegance. This site has a particularly pure character that, in its youth, displays a tight and crisp palate which needs some bottle age to reveal the power and concentration that lies beneath the surface. As with Mate's Vineyard, this wine will improve with bottle age for 4 to 6 years." +La Jota Howell Mountain Cabernet Franc 2014,"Howell Mountain, Napa Valley, California",Red Wine,96.0,"On the palate, the 2014 La Jota Cabernet Franc has dragon fruit, ripe pomegranate and dark raspberry with herbal aromatics. Espresso bean and vanilla are carried by an impressive mouthfeel and long drawn out finish." +La Jota W.S. Keyes Merlot 2012,"Napa Valley, California",Red Wine,96.0,"Rich tannins coat the mouth with ripe boysenberry, black cherry, mocha, espresso and cardamom characters. Keyes. Because of the intrinsic power in the Merlot itself, you'll also recognize that the percentage of Cabernet Sauvignon this year went down while still maintaining that weight and burst of flavor. This is a Merlot for the ages and something that winemaker Chris Carpenter is hopeful you will feel comfortable carrying in your cellar for 15 to 20 years. " +La Peira en Damaisela La Peira Terrasses du Larzac 2007,"Coteaux du Languedoc, Languedoc, South of France, France",Red Wine,98.0,"The La Peira has this enormity to it, and it has a great density to it. It feels quite monumental, but at the same time it has a contradiction to it; it’s a very elegant, ethereal. So that’s the La Pèira for me." +La Poderina Brunello 1999,"Tuscany, Italy",Red Wine,96.0,"Incredible richness to this red, with layers of blackberry, licorice and treacle tart on the nose and palate. Full-bodied, with loads of silky tannins and a long, long finish." +La Spinetta Barbera d'Alba Gallina 1999,"Alba, Piedmont, Italy",Red Wine,96.0,"Dense red color. Aromas of black fruits with an exotic Asian fragrance, ripe fruit aromas and flavors of blueberry and boysenberry are accented by flowers and Asian spices. Good tannin sturcture, that will soften and thrive for perfection in a few years to come." +La Vizcaina La Vitoriana Tinto 2018,"Bierzo, Spain",Red Wine,97.0,"La Vizcaina La Vitoriana offers aromas of reinette apple, ripe blackberries, light touches of pilonga chestnut, and a background of autumn earth, with points of black licorice and a balsamic finish. On the palate it is a very penetrating wine, structured, with subtle nuances of wood and a sweet and appetising finish. It is a wine with a long finish." +Ladeiras do Xil As Caborcas 2017,"Valdeorras, Spain",Red Wine,96.0,"Spectacularly complex and aromatic, this medium-framed red wine has deep and expressive red currant and boysenberry fruits on the palate. The body is vibrant and profound, accented by minerals, savory herbs, and dusty tannins. " +Ladeiras do Xil O Diviso 2017,"Valdeorras, Spain",Red Wine,96.0,"This seriously structured, ultra-ethereal, graceful red wine has flavors of wild raspberry fruits. An incredibly nuanced wine that defines elegance with its silky, mineral-driven tannins and everlasting finish." +Lail Georgia Sauvignon Blanc 2015,"Yountville, Napa Valley, California",White Wine,97.0,"The Georgia Sauvignon Blanc is fermented and aged in all new French oak for 18 months before being bottled. Offering unprecedented depth and complexity, amazing texture and a long finish." +Lail Georgia Sauvignon Blanc 2014,"Yountville, Napa Valley, California",White Wine,96.0,"The 2014 Georgia is gorgeous! Intense, precise, powerful and complex, it has that classic textural richness of the best Georgia vintages. Aromas of vanilla and stone fruits mingle with tropical flavors and bright citrus tones. Vibrant and taut, the wine lingers and dances across the palate." +Lail J. Daniel Cuvee Cabernet Sauvignon (1.5 Liter Magnum) 2013,"Napa Valley, California",Red Wine,99.0,"The 2013 growing season could be the equal of (or even superior to) the 2012, considered by many as a perfect season. This J. Daniel Cuvée is 100% Cabernet Sauvignon, showing off the power and purity of the vintage. Dense, extracted and intense, it has aromas and flavors of blackberry, boysenberry, crème de cassis, and dark chocolate. This may be the greatest J. Daniel Cuvée ever made, truly one for the ages." +Lail J. Daniel Cuvee Cabernet Sauvignon 2007,"Napa Valley, California",Red Wine,96.0,"If I had to use one word to describe this wine, it would be 'seamless.' Complex notes of cocoa,charcoal, black fruits, and pencil lead give a sense of amazing complexity. Powerful and seductive, this wine lingers on the palate for more than 20seconds. As the 2006 reminded us of Chateau Latour from Pauillac in Bordeaux, the 2007 would be more reminiscent of the great wines fromChateau Margaux." +Lail J. Daniel Cuvee Cabernet Sauvignon 2013,"Napa Valley, California",Red Wine,99.0,"The 2013 growing season could be the equal of (or even superior to) the 2012, considered by many as a perfect season. This J. Daniel Cuvée is 100% Cabernet Sauvignon, showing off the power and purity of the vintage. Dense, extracted and intense, it has aromas and flavors of blackberry, boysenberry, crème de cassis, and dark chocolate. This may be the greatest J. Daniel Cuvée ever made, truly one for the ages." +Lail J. Daniel Cuvee Cabernet Sauvignon 2015,"Napa Valley, California",Red Wine,98.0,"The 2015 vintage yielded a small crop of exceptional quality fruit. The 2015 J. Daniel Cuvée reflects this, with its modern Napa Valley ripeness coupled with classic varietal characteristics and structure. Black fruits are on full display in the aromas and flavors, including blackberry, black raspberry, black cherry, boysenberry, and black currant berry (cassis). The texture is creamy, elegant, regal and rich, with fine tannins lingering on a fabulously long finish. This is a wonderful vintage for J. Daniel Cuvée —Philippe Melka, Winemaker" +Lamborghini Campoleone 1999,"Campania, Italy",Red Wine,96.0,"Long-term aging, elegant and complex red wine of solid structure. Deep ruby red, the bouquet is very large with notes of cassis and plum, violet, tobacco, leather with a balsamic and slightly spicy background. Tannins are ripe and cozy and the finish is long and persistent. " +Lancaster Cabernet Sauvignon (375ML half-bottle) 2004,"Sonoma County, California",Red Wine,97.0,"""Its a gorgeous Cab, softly complex, rich in cassis, cherry, spice and oak flavors anchored with warm, earthy tannins. In fact, the earthiness stands it in good contrast to the Napa Valley, making it wholesome and complete.""" +Lancaster Estate Cabernet Sauvignon 2004,"Sonoma County, California",Red Wine,97.0,"""Its a gorgeous Cab, softly complex, rich in cassis, cherry, spice and oak flavors anchored with warm, earthy tannins. In fact, the earthiness stands it in good contrast to the Napa Valley, making it wholesome and complete.""" +Langmeil The Freedom 1843 Shiraz 2016,"Barossa Valley, Barossa, South Australia, Australia",Red Wine,97.0,"Deep crimson with purple hues. An intense aroma of ripe Satsuma plum, mocha, vanilla and savory notes combine with hints of cedar and sweet spices. Rich, sweet fruit is balanced wonderfully with briary and sweet spices and lovely, silky tannins. A full-bodied, textured wine, showing great complexity with hints of cedar and allspice flowing through to the lengthy, brambly fruit finish." +Larkmead Cabernet Sauvignon 2004,"Napa Valley, California",Red Wine,96.0,"Our favorite estate Cabernet to date, the new vintage comes from a growing season that featured a cool summer which increased aromatic complexity, followed by intense heat at harvest to fully mature and sweeten the Cabernet's abundant tannins. The 2004 blend features the fruit intensity and textural elements of the hugely popular 2002 with the structure of the 1999. " +Larkmead Firebelle (scuffed label) 2012,"Napa Valley, California",Red Wine,96.0,"Upon first breath, the wine casts a demure and reticent aroma profile that is so polished that when it does reveal its secondary notes of petit fleur and red fruit, it does so in an extremely elegant fashion. The aromas of thick, ripe plum skin and blackcurrants never tip the scale towards hedonism; instead, the wine begins to reveal an almost Syrah like wisp of violets and a Pinot Noir like hint of rose petals." +Larkmead LMV Salon 2004,"Napa Valley, California",Red Wine,98.0,Bright ruby-purple. Explosively aromatic high notes of wild berries and violet with a smoky-mocha edge. The palate is powerfully rich yet supple and lively and features saturated cassis and blackberry fruit with the classic gravel-mineral-graphite character of the vineyard. The broad voluptuous tannins are completely integrated with the fruit and allow the wine to progress gracefully along the palate and finish with a hint of developing truffle complexity and sweet tobacco. Decant for an hour in its youth to experience the wine’s full range of flavors. +Larkmead LMV Salon 2005,"Napa Valley, California",Red Wine,96.0,"The 2005 LMV Salon Proprietary Red has a deep ruby/purple color and a sweet nose of spring flowers intermixed with black cherry, black currant, licorice, and pain grille. The wine is medium to full-bodied, has some chocolatey notes in the mouth, a good underpinning of acidity and tannin, and a long, dense, rich finish. This wine should be at its best between 2011 and 2025. " +Larkmead LMV Salon 2007,"Napa Valley, California",Red Wine,97.0,"Deep ruby red/purple color. Beautifully fragrant nose of redcurrant and black cherry with fresh mint, violet and light balsamic background notes. Opens to blackcurrant, cocoa powder and graphite with a hint of bay leaf. Initially tight and youthful palate, with aeration pure cassis and kirsch flavors emerge with forest floor, wood smoke and tobacco side notes. Maintains great mineral freshness despite its natural concentration and power. Firm tannic backbone provides great aging potential." +Larkmead Solari Cabernet Sauvignon (1.5 Liter Magnum) 2005,"Napa Valley, California",Red Wine,99.0,"Deep ruby/purple color. Powerfully intense aromas of blackberry,sweet mint and sage rounded out by dusty cocoa and the vineyard’s signature profile of wet rocks/gravel. Rich black fruits dominate the palate with cassis and blackberry leading to a textured, voluptuous mid palate and then rich, broad envelopingtannins. The wine finishes long with a burst of dark cherry sweetness." +Larkmead Solari Cabernet Sauvignon (1.5 Liter Magnum) 2007,"Napa Valley, California",Red Wine,96.0,"Deep ruby red/purple color. Quintessential Larkmead aromas of floral violet, blackcurrant, subtle herb and stony minerals that are initially tight and primary then deepen to kirsch and a suggestion of clove. Supple palate entry with creme de cassis, blackberry, gravel and a complex note of licorice. The wine’s dark brooding density becomes apparent with aeration as it broadens and coats the entire palate. Maintains great inner-mouth perfume and liveliness despite its inherent power. Tannins are rich, layeredand broad and really drive the wine to a flavor-packed lingering finish with a shot of intense dark cocoa powder and freshening acidity. Decant for an hour in its first couple of years and drink between 2011 & 2025." +Larkmead Solari Cabernet Sauvignon 2005,"Napa Valley, California",Red Wine,99.0,"Deep ruby/purple color. Powerfully intense aromas of blackberry,sweet mint and sage rounded out by dusty cocoa and the vineyard’s signature profile of wet rocks/gravel. Rich black fruits dominate the palate with cassis and blackberry leading to a textured, voluptuous mid palate and then rich, broad envelopingtannins. The wine finishes long with a burst of dark cherry sweetness." +Larkmead Solari Cabernet Sauvignon 2007,"Napa Valley, California",Red Wine,97.0,Bright ruby/purple. Explosively aromatic high notes of wild berries and violet with a smoky-mocha edge. The palate is powerfully rich yet supple and lively and features saturated cassis and blackberry fruit with the classic gravel-mineral-graphite character of the vineyard. The broad voluptuous tannins are completely integrated with the fruit and allow the wine to progress gracefully along the palate and finish with a hint of developing truffle complexity and sweet tobacco. +Larkmead Solari Cabernet Sauvignon 2014,"Napa Valley, California",Red Wine,99.0,"There is uniqueness to Solari that cannot be found anywhere else on the Larkmead estate. The bouquet is almost dense,and builds with each swirl of the glass. From blackberry jamto purple flowers, the aromas swell slowly, drawing you inwith their momentum." +Larkmead Solari Cabernet Sauvignon (bin soiled label) 2006,"Napa Valley, California",Red Wine,96.0,Bright ruby/purple. Explosively aromatic high notes of wild berries and violet with a smoky-mocha edge. The palate is powerfully rich yet supple and lively and features saturated cassis and blackberry fruit with the classic gravel-mineral-graphite character of the vineyard. The broad voluptuous tannins are completely integrated with the fruit and allow the wine to progress gracefully along the palate and finish with a hint of developing truffle complexity and sweet tobacco. +Larkmead Solari Reserve Cabernet Sauvignon (1.5 Liter Magnum) 2003,"Napa Valley, California",Red Wine,96.0,"Bright ruby/purple. Intensely aromatic nose of black cherry, creme de cassis and black raspberry liqueur framed by mocha notes and typical Larkmead stony minerality. The palate is explosively fruit driven featuring a deep core of pure succulent black fruit of great intensity but also elegance. Flavors of sweet dark chocolate and coffee precede a lengthy finish that highlights vineyard-driven graphite and mineral power." +Laurel Glen Sonoma Mountain Estate Cabernet Sauvignon 1993,"Sonoma Mountain, Sonoma Valley, Sonoma County, California",Red Wine,96.0,"A cooler year with some green tones in the fruit that have taken many years to resolve… good maturity at a lower scale, fine balance, vineyard in good shape, no rot or shrivel; brix may have exceeded maturity; excellent darkness and balance, but without the zing of a great vintage." +L'Aventure Chloe 2014,"Paso Robles, Central Coast, California",Red Wine,97.0,"Blend: 67% Syrah, 33% Old Vine Grenache " +L'Aventure Cote A Cote 2006,"Paso Robles, Central Coast, California",Red Wine,96.0,"Blend: 40% Mourvedre, 30% Grenache, 30% Syrah" +L'Aventure Cote A Cote 2011,"Central Coast, California",Red Wine,96.0,"Ruby in color. Intensely floral nose of violets, jasmine, and soft red fruit. A firm attack of vinous, mineral, citrus and soft, round, red fruit. Brilliant Syrah flavors. Smoky, peppery, toasty finish with cardamom notes. This is an excellent Cote a Cote that will be enjoyed immensely at table." +L'Aventure Cote A Cote 2014,"Paso Robles, Central Coast, California",Red Wine,96.0,"Blend: 50% Grenache, 28% Mourvedre, 22% Syrah" +L'Aventure Cote A Cote (slightly stained labels) 2012,"Paso Robles, Central Coast, California",Red Wine,96.0,"Blend: 60% Grenache, 30% Mourvedre, 10% Syrah" +L'Aventure Estate Cuvee 2004,"Paso Robles, Central Coast, California",Red Wine,98.0,"This wonderfully ""juicy"" 2004 Estate Cuvee is unique in that a percentage of the blend was ""co–fermented,"" due to the fact that all three of the varieties that comprise Estate Cuvee - Cabernet Sauvignon, Syrah, and Petit Verdot - arrived at maturity simultaneously. For the first time in his 24 years as a wine maker, Stephan saw these grapes fermenting in the same tank. The result is a seamless, complex work of art. Fresh aromas of plums, macerated blackberries, and blueberries in the nose, and dark, intense fruit on the palate. The mouth and lengthy finish are made more complex by hints of leather, tar, and tobacco leaf. An augmentation of Petit Verdot puts the 2004 on the classic track of the 2001 vintage." +L'Aventure Estate Cuvee 2005,"Paso Robles, Central Coast, California",Red Wine,96.0,"Blend: 52% Syrah, 40% Cabernet Sauvignon, 8% Petit Verdot" +L'Aventure Estate Cuvee 2006,"Paso Robles, Central Coast, California",Red Wine,97.0,"""A thrilling, nearly perfect efforts is the 2006 Estate Cuvee. A blend of 49% Syrah, 37% Cabernet Sauvignon, and 4% Petit Verdot, the 2006 Estate Cuvee may be even better. Tasting like a superb example of a premier grand cru St.-Emilion made from California-s limestone soils, it exhibits a dense purple color as well as a perfume of sweet creme de cassis, fruitcake, licorice, incense, tobacco leaf, and spice box. A voluptuous texture, fabulous opulence, and thrilling concentration as well as purity make for a prodigious example of blended red wine that will provide enormous pleasure and complexity for 12-15+ years." +L'Aventure Estate Cuvee 2013,"Central Coast, California",Red Wine,97.0,"The most densely colored of all wines in a vintage of great extraction; Estate Cuvee exhibits a powerful perfume of anise, lavender candies, and dark fruit, with smoky accents in the background. The attack isimpressive, with a velvety mouth feel from start to finish. Rich, robust blue and black fruit, with hints of cocoa,big, but with soft resolved tannins, give a ""total"" palate experience in the finish." +L'Aventure Estate Cuvee 2012,"Paso Robles, Central Coast, California",Red Wine,98.0,"The most densely colored of all wines in a vintage of great extraction; Estate Cuvée 2012 exhibits a powerful perfume of anise, lavender candies, and dark fruit, with smoky accents in the background. The attack is impressive, with a velvety mouth feel from start to finish. Rich, robust blue and black fruit, with hints of cocoa, big, but with soft resolved tannins, give a ""total"" palate experience in the finish. " +L'Aventure Estate Cuvee 2014,"Central Coast, California",Red Wine,98.0,"Blend: 50% Cabernet Sauvignon, 35% Syrah, 15% Petit Verdot" +L'Aventure Estate Cuvee 2016,"Paso Robles, Central Coast, California",Red Wine,99.0,"Blend: 52% Syrah, 32% Cabernet Sauvignon, 16% Petit Verdot" +Le Chiuse Brunello di Montalcino 2013,"Montalcino, Tuscany, Italy",Red Wine,96.0,"Ruby red in color with light granite hues. The nose is clean, elegant, and prevalent of fruity notes such as ripe plum and wild cherry mainly; with agreeable scents of flint, balsamic notes, violet and spices. All these fragrances make the bouquet complex and harmonic. Greatly structured, sapid and agreeably fresh. Its great acidity makes this wine very charming and elegant. The sunny vintage makes high density tannins but never too aggressive. The result is an important and elegant wine with a long and persistent finish. " +Le Chiuse Brunello di Montalcino (375ML half-bottle) 2013,"Montalcino, Tuscany, Italy",Red Wine,96.0,"Ruby red in color with light granite hues. The nose is clean, elegant, and prevalent of fruity notes such as ripe plum and wild cherry mainly; with agreeable scents of flint, balsamic notes, violet and spices. All these fragrances make the bouquet complex and harmonic. Greatly structured, sapid and agreeably fresh. Its great acidity makes this wine very charming and elegant. The sunny vintage makes high density tannins but never too aggressive. The result is an important and elegant wine with a long and persistent finish. " +Le Dome 2016,"St. Emilion, Bordeaux, France",Red Wine,98.0,"Blend: 80% Cabernet Franc, 20% Merlot" +Le Potazzine Gorelli Brunello di Montalcino 2012,"Montalcino, Tuscany, Italy",Red Wine,96.0,"Bright red garnet color and shiny. Strong olfactory elegance, dominated by a dense undergrowth but with wrap around reflection of sweet spices, hints of tobacco and coffee. A harmonious taste; well integrated alcohol. Tannins are rightly persistent, fine and round with a long, balanced finish." +Le Vieux Donjon Chateauneuf-du-Pape 2007,"Chateauneuf-du-Pape, Rhone, France",Red Wine,96.0,70% Grenache; 20% Syrah; 10% Cinsault and Mourvedre. +Leeuwin Estate Art Series Chardonnay 2002,"Margaret River, Western Australia, Australia",White Wine,96.0, +Leeuwin Estate Art Series Chardonnay 2001,"Margaret River, Western Australia, Australia",White Wine,98.0,Number 24 on +Leonetti Reserve 2005,"Walla Walla Valley, Columbia Valley, Washington",Red Wine,97.0,"Having a beautiful saturated color, the wine's nose is enchanting ith a complex potpourri of rich, ripe sweet black fruits, plum, and spicebox with hints of beautiful herbs de Provence. The palate of the wine is structured with fine-grained smooth tannins and notes of mineral, creme cassis, and finishes very long with monumental purity. " +Leonetti Reserve (torn label) 2007,"Walla Walla Valley, Columbia Valley, Washington",Red Wine,96.0,"A blend of the best lots from Mill Creek Upland, Seven Hills and Loess vineyards, this Cab-dominated blend also includes 12% Petit Verdot, 11% Malbec and 2% Merlot. It's quite slick on the palate, with good texture from well-integrated tannins. The fruit is dark and brooding - black cherry and wild blackberry - with a hint of rose, smoke and cedar. " +Lewelling Wight Vineyard Cabernet Sauvignon 2008,"Napa Valley, California",Red Wine,98.0,"Sumptuous aromas of blackberry, cassis, Bing cherry and spice mixed with highlights of tobacco, cedar, vanilla and anise. Concentrated black plum, black cherry, and cassis flavors; allspice, dark cocoa, juniper and sweet smoke; exceptional depth and complexity; multi-layered richness; mouthfilling, velvety tannins and a lingering finish." +Lewelling Wight Vineyard Cabernet Sauvignon 2007,"St. Helena, Napa Valley, California",Red Wine,98.0,"An enticing mix of black fruit, tobacco and toasty oak aromas mingled with highlights of vanilla, cedar and licorice. Concentrated black cherry, cassis, blueberry pie and espresso flavors; sweet smoke, anise and cedar; mouth-filling complexity and layered richness; dense but polished tannins and a very long finish." +Lewis Cellars Alec's Blend Red 2002,"Napa Valley, California",Red Wine,96.0,Number 12 on +Lewis Cellars Cabernet Sauvignon 2002,"Napa Valley, California",Red Wine,96.0,"Showcasing the unique personalities of small hillside vineyards from Pritchard Hill, Oakville and Rutherford, the 2002 Napa Valley Cabernet delivers compelling aromas of mocha, ripe berries, tobacco and sweet oak spice. The wine is 100% Cabernet Sauvignon, complex, rich and focused. With a deep core of black fruit and traces of briar and vanilla, it turns chocolaty and long on the palate with serious, integrated tannins." +Lewis Cellars Cuvee L Cabernet Sauvignon 2015,"Napa Valley, California",Red Wine,96.0,"Straight from James Fenimore Cooper’s novel, Last of the Mohicans, comes our 2015 Cuvee L – a noble savage from an outstanding vintage with great depth of character. 100% Cabernet Sauvignon with the strength of a grizzly and the soul of a chief this onyx and indigo wine is cloaked in tiers of blackberry with a quiver of clove and cedary oak spices. Broad paths of richly rendered fruit trail into hand-hewn tannins reflecting nature’s winding ways." +Lewis Cellars Reserve Cabernet Sauvignon 2010,"Napa Valley, California",Red Wine,96.0, +Lewis Cellars Reserve Cabernet Sauvignon (scuffed labels) 2012,"Napa Valley, California",Red Wine,96.0,"The headline reads: ""2012 Reserve Cabernet - Return of the Big Block"". Running on high octane aromas and built on an iron block with deep reserves of black fruit this 100% Cabernet blend delivers 700 horsepower at the wheels. Coming off idle the nose slowly explodes with sappy dark and rustic berries, clove, cedar and sweet oak spices. Forged, ripe fruit pistons pump out the power for miles until finally finishing with an impressive band of ported and polished tannins. Motor must be warmed-up before driving!" diff --git a/migrations/sql/00000007_add_ranking.down.sql b/migrations/sql/00000008_add_ranking.down.sql similarity index 100% rename from migrations/sql/00000007_add_ranking.down.sql rename to migrations/sql/00000008_add_ranking.down.sql diff --git a/migrations/sql/00000007_add_ranking.up.sql b/migrations/sql/00000008_add_ranking.up.sql similarity index 100% rename from migrations/sql/00000007_add_ranking.up.sql rename to migrations/sql/00000008_add_ranking.up.sql