Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/source/FAQ/predictor_evaluation_migration.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Migrating to Predictor Evaluations
Summary
=======

In version 4.0, :py:class:`Predictor Evaluation Workflows <citrine.resources.predictor_evaluation_workflow.PredictorEvaluationWorkflowCollection>` and :py:class:`Predictor Evaluation Executions <citrine.resources.predictor_evaluation_execution.PredictorEvaluationExecutionCollection>` (collectively, PEWs) will be merged into a single entity called :py:class:`Predictor Evaluations <citrine.resources.predictor_evaluation.PredictorEvaluationCollection>`. The new entity will retain the functionality of its predecessors, while simplyfing interactions with it. And it will support the continuing evolution of the platform.
`Predictor Evaluation Workflows` and `Predictor Evaluation Executions` (collectively, PEWs) have been merged into a single entity called :py:class:`Predictor Evaluations <citrine.resources.predictor_evaluation.PredictorEvaluationCollection>`. The new entity retains the functionality of its predecessors, while simplyfing interactions with it. And it will support the continuing evolution of the platform.

Basic Usage
===========
Expand Down
2 changes: 1 addition & 1 deletion docs/source/data_extraction.rst
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ Assume that the process template is accessible from a known Project, ``project``

table_config = table_config.add_all_ingredients(
process_template=LinkByUID('id', '3a308f78-e341-f39c-8076-35a2c88292ad'),
project=project,
team=team,
quantity_dimension=IngredientQuantityDimension.MASS
)

Expand Down
2 changes: 1 addition & 1 deletion docs/source/getting_started/ai_modules.rst
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,4 @@ They also include a :doc:`Score <../workflows/scores>` which codifies goals of t
Predictor Evaluation
^^^^^^^^^^^^^^^^^^^^

:doc:`Predictor Evaluations <../workflows/predictor_evaluation_workflows>` analyze the quality of a Predictor.
:doc:`Predictor Evaluations <../workflows/predictor_evaluations>` analyze the quality of a Predictor.
6 changes: 3 additions & 3 deletions docs/source/getting_started/basic_functionality.rst
Original file line number Diff line number Diff line change
Expand Up @@ -59,18 +59,18 @@ Similarly, the ``wait_while_executing`` function will wait for a design or predi
Checking Status
---------------

After registering an asset, the ``status`` command can be used to obtain a static readout of the state of the asset on the platform (e.g., VALID, INVALID, VALIDATING, SUCCEEDED, FAILED, INPROGRESS).
After registering an asset, the ``status`` command can be used to obtain a static readout of the state of the asset on the platform (e.g., READY, INVALID, VALIDATING, SUCCEEDED, FAILED, INPROGRESS).

.. code-block:: python

sintering_model = sintering_project.predictors.register(sintering_model)
sintering_model.status

The ``status_info`` command returns additional details about an asset's status that can be very useful for debugging.
The ``status_detail`` command returns additional details about an asset's status that can be very useful for debugging.

.. code-block:: python

sintering_model.status_info
sintering_model.status_detail

Reading
-------
Expand Down
12 changes: 6 additions & 6 deletions docs/source/getting_started/code_examples.rst
Original file line number Diff line number Diff line change
Expand Up @@ -38,17 +38,17 @@ Note that all resources are given descriptive names and summaries.
print("My new team has name {} and id {}".format(
band_gaps_team.name, band_gaps_team.uid))

Strehlow_Cook_description = "Band gaps for elemental and binary " \
strehlow_cook_description = "Band gaps for elemental and binary " \
"semiconductors with phase and temperature of measurement. DOI 10.1063/1.3253115"
Strehlow_Cook_dataset = Dataset(name="Strehlow and Cook",
summary="Strehlow and Cook band gaps", description=Strehlow_Cook_description)
Strehlow_Cook_dataset = band_gaps_team.datasets.register(Strehlow_Cook_dataset)
strehlow_cook_dataset = Dataset(name="Strehlow and Cook",
summary="Strehlow and Cook band gaps", description=strehlow_cook_description)
strehlow_cook_dataset = band_gaps_team.datasets.register(strehlow_cook_dataset)

Find an existing Team and Dataset
------------------------------------

Often you will work with existing resources.
The code below retrieves a Team with the name "Copper oxides team" and a dataset with a known unique id that is stored as ``dataset_A_uid``.
The code below retrieves a Team with the name "Copper oxides team" and a dataset with a known unique id that is stored as ``dataset_a_uid``.
For more information on retrieving resources, see :ref:`Reading Resources <functionality_reading_label>`.

.. code-block:: python
Expand All @@ -58,7 +58,7 @@ For more information on retrieving resources, see :ref:`Reading Resources <funct
copper_oxides_team = next((team for team in all_teams
if team.name == team_name), None)
assert copper_oxides_team is not None
dataset_A = copper_oxides_team.datasets.get(uid=dataset_A_uid)
dataset_a = copper_oxides_team.datasets.get(uid=dataset_a_uid)

Find a template
---------------
Expand Down
7 changes: 3 additions & 4 deletions docs/source/getting_started/datasets.rst
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ Datasets can be listed and gotten from Teams just as Teams are from the client i

team = citrine.teams.get("baaa467e-1758-43a8-97c7-76e569d0dcab")
datasets_in_team = team.datasets.list()
a_dataset = project.datasets.get("6ed8bf3b-876b-40f0-9d50-982e686e5cd3")

Datasets can only be deleted if they are empty.
If you need to delete a non-empty Dataset, see this discussion on :ref:`deleting data objects <deleting_data_objects_label>`.
Expand All @@ -47,11 +46,11 @@ Assume you have a "band gaps team" with known id, ``band_gaps_team_id``, and are
band_gaps_team = citrine.teams.get(band_gaps_team_id)

# create the Dataset object
Strehlow_Cook_description = "Band gaps for elemental and binary semiconductors with phase and temperature of measurement. DOI 10.1063/1.3253115"
Strehlow_Cook_dataset = Dataset(name="Strehlow and Cook", summary="Strehlow and Cook band gaps", description=Strehlow_Cook_description)
strehlow_cook_description = "Band gaps for elemental and binary semiconductors with phase and temperature of measurement. DOI 10.1063/1.3253115"
strehlow_cook_dataset = Dataset(name="Strehlow and Cook", summary="Strehlow and Cook band gaps", description=strehlow_cook_description)

# pass the Dataset object to the registration endpoint
Strehlow_Cook_dataset = band_gaps_team.datasets.register(Strehlow_Cook_dataset)
strehlow_cook_dataset = band_gaps_team.datasets.register(strehlow_cook_dataset)


Deleting a Dataset
Expand Down
13 changes: 10 additions & 3 deletions docs/source/getting_started/projects.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Projects
A Project is the basic container for AI Assets on the Citrine Platform, such as GEM Tables, Predictors, Design Spaces, and Design Workflows.
Access rights on resources inside a Project are managed, granted, and revoked at the Team level.

Users are individuals using the Citrine Platform, and they are made members of Team.
Users are individuals using the Citrine Platform, and they are made members of a Team.
A user who is a member of a Team has access to all of the Projects that the Team has access to.

Every interaction with every other type of resource is scoped to a single Team.
Expand Down Expand Up @@ -33,8 +33,15 @@ To retrieve a Project in the team, either find the Project in the list:

project_name = "Copper oxides project"
all_projects = team.projects.list()
copper_oxides_project = next((project for project in all_projects
if project.name == project_name), None)
project = next((project for project in all_projects if project.name == project_name), None)

or use the :func:`~citrine.seeding.find_or_create.find_or_create_project` convenience method:

.. code-block:: python

from citrine.seeding.find_or_create import find_or_create_project
project_name = "Copper oxides project"
project = find_or_create_project(project_collection=team.projects, project_name=project_name)

or get it by unique identifier:

Expand Down
6 changes: 3 additions & 3 deletions docs/source/workflows/code_examples.rst
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,7 @@ This pattern is also extremely useful for performing optimization over complex o
outputs = [
final_ph,
final_loaf_hydration,
],
training_data=[training_table]
]
)

shelf_life_calculator = ExpressionPredictor(
Expand All @@ -104,7 +103,8 @@ This pattern is also extremely useful for performing optimization over complex o
dough_hydration_calculator,
physical_properties_predictor,
shelf_life_calculator
]
],
training_data=[training_table]
)

.. |Bread Predictor Graph Visualization| image:: bread_predictor_graph_viz.jpg
Expand Down
12 changes: 9 additions & 3 deletions docs/source/workflows/data_sources.rst
Original file line number Diff line number Diff line change
Expand Up @@ -19,25 +19,31 @@ The example below assumes that the uuid and the version of the desired GEM Table
.. code:: python

from citrine.informatics.data_sources import GemTableDataSource
from citrine.informatics.predictors import AutoMLPredictor
from citrine.informatics.predictors import AutoMLPredictor, GraphPredictor
from citrine.informatics.descriptors import RealDescriptor, CategoricalDescriptor, ChemicalFormulaDescriptor

data_source = GemTableDataSource(
table_id = "842434fd-11fe-4324-815c-7db93c7ed81e",
table_version = "2"
)

predictor = AutoMLPredictor(
auto_ml_predictor = AutoMLPredictor(
name = "Band gap predictor",
description = "Predict the band gap from the chemical formula and crystallinity",
inputs = [
ChemicalFormulaDescriptor("terminal~formula"),
CategoricalDescriptor("terminal~crystallinity", categories=[
"Single crystalline", "Amorphous", "Polycrystalline"])
],
outputs = [RealDescriptor("terminal~band gap", lower_bound=0, upper_bound=20, units="eV")],
outputs = [RealDescriptor("terminal~band gap", lower_bound=0, upper_bound=20, units="eV")]
)

predictor = GraphPredictor(
name = "Root predictor",
predictors = [auto_ml_predictor],
training_data = [data_source]
)


Note that the descriptor keys above are the headers of the *variable* not the column in the table.
The last term in the column header is a suffix associated with the specific column definition rather than the variable.
Expand Down
2 changes: 1 addition & 1 deletion docs/source/workflows/descriptors.rst
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Descriptors allow users to define a controlled vocabulary with which to describe
Each descriptor defines a term in that vocabulary, which is comprised of a name, a datatype, and bounds on that data type.
If you are familiar with the GEMD data model, descriptors are roughly equivalent to :class:`AttributeTemplates <citrine.resources.attribute_templates.AttributeTemplate>`.

The AI Engine currently supports 5 kinds of descriptors:
The AI Engine currently supports 6 kinds of descriptors:

- `Real Descriptors <#real-descriptor>`__
- `Integer Descriptor <#integer-descriptor>`__
Expand Down
Loading
Loading