Releases: CitrineInformatics/citrine-python
Citrine v2.11.2 is released!
Today's Citrine Python release is primarily solving a bug that was stinging our users. We're also simplifying our code to make Citrine Python easy to use and easy to learn.
Deprecated
- We've simplified some of our predictor nodes by deprecating the need to designate specific formulation descriptors for the
SimpleMixturePredictorandIngredientsToSimpleMixturePredictor(#838) and the capability to designate training data sources on any predictors outside of aGraphPredictor(#839)
Fixes
- Squashed a bug in the deserialization of predictors leveraging our Chemical Formula Featurizer. #841
Full Changelog: v2.10.0...v2.11.2
Citrine v2.10.0 is released!
In this release of Citrine Python, we are excited to improve the quality of life for our users and our contributors. We make it easier to reference branches from IDs available in our web app and also include early functionality that allows users to directly ingest a pre-formatted file into GEMD objects. We've also simplified our testing strategy and included a few bug fixes, all in the effort to keep you running (and contributing) smoothly.
What's New
- You can now
getthe root of a branch, rather than the specific version, using the newBranchCollection.get_by_root_id. #835 - As alpha functionality, you can now ingest CSV and/or Excel files directly into a GEMD structure, provided the files are formatted according to
gemd-ingestguidelines. #837
Improvements
- Simplified and centralized testing for faster development. #834
Fixes
- Correction to value types for Chemical Formulae and Molecular Structures. #825
- Ensure labels are included in prediction requests. #836
Full Changelog: v2.8.0...v2.10.0
Citrine v2.8.0 is released!
With this release of Citrine Python, we are ecstatic to release two major pieces of functionality that have been on the wishlist of many of our users for quite some time. Users with valid Predictors can now submit single prediction tasks and return predictions on just one material. We also now support constraining the ratio of ingredients and labels, allowing users to tackle more complex formulation problems with our optimizer. Not to be outdone, we've also added the capability to use conditional "if" statements within Expression predictors. And if that wasn't enough, we continue to add improvements and simplifications to our python client to keep our users running smoothly.
What's New
- You can now make single prediction calls to a valid Predictor by providing it with a
SinglePredictRequest, containing candidate information in the form akin to aDesignMaterial. The returned object will contain all the values one is able to predict with the Predictor as well as uncertainty. See an example in our Predictor Documentation. #828, #833 - We now support constraints on the ratio of ingredients in FormulationDesignSpaces. By creating an
IngredientRatioConstraint, you can constrain the ratio of any combination of ingredients and/or labels to any combination of ingredients and/or labels to be between a minimum and maximum value. We also allow multipliers for each ingredient and label in the numerator or denominator to encode statements such as "constrain 1 part Additive for every 100 parts Solvent". #827
Improvements
- Updated documentation to include the usage of "if" statements inside Expression Predictors. #832
- FileLinks in citrine python have been augmented to include much more additional metadata. Whereas the
dataset.filesendpoint once returned only the filename and url, we now also return created by, created on, and version number fields, among others. #831
Deprecated
- The
FileLink.processmethod has been deprecated in favor of UI-driven async ingest methods. #829 - It is no longer needed to designate a
formulation_descriptoron aGemTableDataSource- the descriptor is automatically designated to aid future development. #830
Full Changelog: v2.2.1...v2.8.0
Citrine v2.2.1 is released!
A small follow up release for v2.0 taking care of some clean-up that escaped attention during our big release.
Improvements
- We've exposed
status_detailfor design executions, generative design executions, and PEW executions. (#822)
Deprecated
- Accordingly, we've deprecated
status_infoacross those and all assets, making it a read-only property which pulls its values fromstatus_detail.(#822)
Fixes
Full Changelog: v2.0.0...v2.2.1
Citrine version 2 is released!
We are thrilled to announce version 2.0.0 of citrine-python. This release is largely focused on streamlining the SDK, removing deprecated and unused concepts. Upgrading to version 2 will likely necessitate changes to existing scripts.
What's New
- Written documentation of the new "generative molecular design" feature: #816
- An optional random seed has been added to predict requests, to facilitate reproducibility: #819
- An optional
max_candidatesargument has been added to the design workflow executiontriggermethod. Set this value to a small number in order to run a quick design workflow execution. This can be useful for verifying that the candidates look as expected: #806
What's Gone
Processors have been removed. They can no longer be registered on the platform and are no longer specified as part of a design workflow. The platform will select the most appropriate processor for the problem.- A
DesignWorkflowcan no longer be registered without a branch. Please create aBranchon theProjectand usebranch.design_workflows.register(...)instead. - A new
Citrineinstance now requires keyword arguments forscheme,host, andport. - The deprecated
SimpleMLPredictorhas been removed. Please use aGraphPredictorinstead. - The
.outputfield ofAutoMLPredictorhas been removed. Please use.outputsfor a list of all outputs. - The deprecated
RootIdentifierhas been removed. Please useTerminalMaterialIdentifierinstead. - The deprecated
IngredientsToSimpleMixturePredictorhas been removed. Please useIngredientsToFormulationPredictorinstead. - Methods that reference GEMD objects no longer have separate
scopeandidarguments. Please use aLinkByUIDobject to specify a customer scope-id pair. - The deprecated
TableConfigCollection.get_with_version()has been deprecated in favor of.get(). - Assets can no longer be archived or restored by modifying the
archivedproperty. Instead, please use the.archive()and.restore()methods. status_infohas been removed in favor of the more detailed.status_detailproperty.- The unused
nameanddescriptionfields have been removed fromScores. Please do not specify them. - The deprecated
list_all()method has been removed for GEMD object collections. Please uselist()instead. - The deprecated
pageargument has been removed from all listing methods. - The deprecated
filter_by_attribute_bounds()method has been removed in favor oflist_by_attribute_bounds(). - When using
delete_contents()to delete the contents of a dataset, theprompt_to_confirmargument must now be specified. - The deprecated
convert_version_to_graph()andconvert_version_and_update()methods have been removed in favor ofconvert_to_graph()andconvert_and_update(). - The deprecated
ReportResource.get_version()method has been removed in favor ofReportResource.get().
Full Changelog: v1.58.1...v2.0.0
Citrine v1.58.1 is released!
We're very excited about how this release will let our SDK users play with the latest platform features. This includes our new cross-dataset query tools, generative molecular design, and editing with platform-suggested candidates. Plus, of course, the normal maintenance and quality of life updates one expects.
What's New
- We've added some new variables to our GEMTables (#805, #812) that limit attribute and ingredient queries to the immediate material node of interest. These new variables were developed to cope with the extreme diversity we see when trying to meld data from across diverse data imports. This means that grabbing results from multiple experiments and feeding them into a single sequential learning workflow is much easier!
- If you're curious about what impact changing parameter values will have on one of our proposed candidates, you're in luck! Checkout the
PredictRequestroute our platform now offers (#808) - And if you'd like to see what our platform can do to conceive of novel ingredients and what impact those might have on your material performance, we now have the ability to explore the chemical space around the ingredients you have been using to see what a little tweak in those functional groups might enable (#804)
Improvements
- We've gotten rid of obsolete routes (#809)
- We've also updated our setup.py and dependencies to resolve some basic maintenance issues (#810, #814)
Full Changelog: v1.53.1...v1.58.1
Citrine v1.53.1 is released!
In this release of Citrine Python, we've made some changes to improve your quality of life. We've improved the ability to connect candidates returned in python to those you see in your browser, and made our GEMD documentation more useful. We're also preparing for some future deprecations on our backend to improve the traceability of our candidates.
What's New
- We now include a
candidate_uidwith each candidate that can be cross-referenced with the Citrine Platform web app URL. #803
Improvements
- We'e updated our Data Model documentation to be cleaner, more readable, and more clear about how to update your GEMD Templates #802
Deprecated
- We've added a deprecation warning that will trigger when one attempts to switch the assets in a Design Workflow that has generated candidates. This will become undoable in the future to maintain traceability of candidates to predictors and training data. It is recommended to create a new Design Workflow instead. #801
Full Changelog: v1.51.1...v1.53.1
Citrine v1.51.1 is released!
In this release of Citrine Python, we are happy to introduce new methods to support exciting features coming in the web application of the Citrine Platform. With both predictor versioning and the ability to update data on an entire branch exposed in this release, you will be able to automate updating branch data and operations on specific versions of your predictors. In addition, we've added a few more improvements to make Citrine Python better documented, easier to debug, and more consistent across classes. As always, we are continuously working of fixes and improvements to keep all our users running smoothly.
What's New
- You can now see the version of a Predictor via the
versionattribute and also interact with specific versions of your Predictors by using theversionargument inPredictorCollectionmethods (e.g.project.predictors.get()). Note that updating a Predictor on platform will always overwrite any existing Draft. If validation is successful, the Predictor will be incremented to the latest version. #785, #796 - In line with upcoming UI releases, you now have the capability to update the data on you Branch to automate the process of pointing all predictors on your branch to the latest version(s) of your data source(s) with one call:
project.branches.update_data(branch=my_branch). #793, #797
Improvements
- We've enhanced our documentation to describe interactions with Experiment Data Sources and updating Branches to the latest data sources. #792, #798, #799
- The
status_detailfield for Predictors and Design Spaces now has a more detailed structure, with individual message strings separated into list elements. #791 - The method for creating a quick default predictor now includes
create_defaultto replace theauto_configuremethod. The behavior is the same, but the method is now much more consistent with other areas of our platform (e.g. Design Spaces). #794
Fixes
- Minor internal fixes. #795
Full Changelog: v1.44.1...v1.51.1
Citrine v1.44.1 is released!
This release of Citrine Python introduces a few new capabilities as well as paving the way for new features coming in the Citrine Platform. Users can now set random seeds for Predictor Evaluation Workflows to ensure repeatability, create Design Spaces that are constrained to the bounds of their training data, and stream the contents of files on our platform directly. Additionally, we've introduced the first methods around the Experiment Data Source, which will be introduced in more detail in upcoming releases.
What's New
- We now allow Predictor Evaluation Workflows to be triggered with an optional
random_stateargument to pass a random seed to the evaluation method. This will allow users to set the random seed and ensure evaluation results are deterministic and reproducible. #788 - We have added the capability in the
design_spaces.create_default()method to constrain parameters based on the predictor's training data. By passinginclude_parameter_constraints=Trueto thecreate_defaultmethod, process parameters will be constrained to the range of the training data in the resulting design space. #789 - We now have the ability to directly access the byte stream of a
file_linkvia thereadmethod. #790 - In preparation for upcoming platform features, we have added the ability to
readExperiment Data Sources to a CSV format. An Experiment Data Source can be identified as an attribute of a specific Branch, or as part of thetraining_dataof a Predictor. By calling the.read()method on theExperimentDataSourceCollectionresource and passing a UID orExperimentDatasourceobject. The resulting information will allow you to inspect what is in the Data Source so you can verify, ingest, or perform additional analysis on your training data. We will include more documentation around how to interact with Experiment Data Sources in future releases. #787
Full Changelog: v1.41.1...v1.44.1
Citrine v1.41.1 is released!
In this release of Citrine Python, we've made a minor, but critical update to our dependencies to keep you all running smoothly as the Python ecosystem continue to develop.
Fixes
- Updated default install of pint for gemd-python to account for an upstream interface change #786
Full Changelog: v1.41.0...v1.41.1