====== Equation Module ====== //Equation//, as the name implies, are to be used where calculations are to be performed on a number of input variables in order to obtain the value of an output one. ---- ===== Endpoint ===== The //Equation// endpoint provides a RESTful interface to interact with //Equation// objects in the database. It allows authenticated users to create, update, and delete their own //Equations// objects. The base URL for the //Equation// endpoint is [[https://datamanagerapi.solver-ai.com/api/data/equations/]]. ---- ===== HTTP Methods ===== * **GET** //equations//: Retrieves a list of all Equation objects associated with the authenticated user. * **POST** //equations//: Creates a new Equation object associated with the authenticated user. * **GET** //equations/{id}//: Retrieves the Equation object with the specified //id//. * **PUT** //equations/{id}//: Updates the Equation object with the specified //id//. * **PATCH** //equations/{id}//: Updates part of an Equation object with the specified //id//. * **DELETE** //equations/{id}//: Deletes the Equation object with the specified //id//. ---- ===== Data ===== An //Equation// can be set up via the [[https://www.solver-ai.com/api|Browsable API]] (2 - Module Management) or programmatically (more on this [[:api_clients|here]]). The parameters required for creating an Equation module are: * **Name**: Unique name identifying the Equation. * **EquationString**: Is the equation. * **VariablesString**: Is the list of the input variables (the output variable is deducted from the //EquationString//). * **VectorizationIndices (optional)**: Indices used for vectorizing the equation. Following is an example of the data when setup through the Browsable API: Name: Example Equation EquationString: z = x + y VariablesString: x, y VectorizationIndices: 3-5 **More on VectorizationIndices** The //VectorizationIndices// can be left: * empty * be specified as a range (e.g., 3-5) * or be specified as a list of comma separated indices (e.g., 7, 8, 10) For the example above, //VariablesString// represents the inputs to the equation, which are 'x' and 'y'. The //VectorizationIndices// field is set to '3-5', indicating that this equation should be vectorized over the indices 3, 4, and 5. This is equivalent to defining three separate equations: * z_3 = x_3 + y_3 * z_4 = x_4 + y_4 * z_5 = x_5 + y_5' If //VectorizationIndices// is left empty, then the code will not be vectorized and the naming of the variables will remain as defined by the //VariablesStringIn// and //VariablesStringOut//. **More on the EquationString** The //EquationString// is python 3.9 compatible. Together with the equation string most **numpy** operations are supported, except those involving file operations. **numpy** can be used within the equation as for example: ;#; z = x + np.cos(y) ;#; The supported functions are: * np.abs * np.sqrt * np.log * np.log2 * np.log10 * np.exp * np.sin * np.cos * np.tan * np.arcsin * np.arccos * np.arctan * np.sinh * np.cosh * np.tanh * np.arcsinh * np.arccosh * np.arctanh * np.ceil * np.floor * np.round ---- ===== Permissions ===== Only authenticated users can interact with this endpoint, this can be done via the [[https://www.solver-ai.com/api|API]] page or pragrammatically via a token, which can be obtained from the [[https://www.solver-ai.com/accountmanagement|Account]] page. All //Equation// created will be associated with the authenticated user, and and will not be accessible by other users. ---- ===== Notes ===== * If you attempt to delete an //Equation// that is used in a problem, the request will be denied with a 403 Forbidden status code. * For information on doing the same programmatically follow the documentation relative to the [[:api_clients|API Clients]].