Skip to main content

A collection of functions that simplify the process of creating calibration curves.

Project description

ChemCal

This file will become your README and also the index of your documentation.

Install

pip install ChemCal

How to use

First we generate some data to work with.

# generate training data and sample data
test_data = pd.DataFrame({'concentration': [0.2, 0.05, 0.1, 0.8, 0.6, 0.4], "abs": [0.221, 0.057, 0.119, 0.73, 0.599, 0.383]})
sample_data = pd.DataFrame({'unknown': [0.490, 0.471, 0.484, 0.473, 0.479, 0.492]})

Now, we create a CalibrationModel object and pass the predictor and response variables from our dataset as the x and y values respectively. Additionally we specific the amount of replicates for our unknown.

cal = CalibrationModel(x=test_data['concentration'], y=test_data['abs'], test_replicates=6)

When we call .fit_ols(), a least squares regression is fit to the data and the slope, intercept and values are stored in the object and can be retrieved by calling object.slope, object.intercept and object.r_squared respectively.

cal.fit_ols()

# print(f"Slope: {cal.slope: .3f}" )
# print(f"Intercept: {cal.intercept: .3f}" )
# print(f"R2: {cal.r_squared: .3f}" )
NameError: name 'sp' is not defined

Finally, we can calculate an inverse prediction from unknown data and retrieve the uncertainty but calling .inverse_prediction() and .calculate_uncertainty() respectively.

The uncertainty is calculated according to the following expression:

$$ U = {S_{\hat{x}}}_0 * T $$

Where:

$${S_{\hat{x}}}0 = \frac{S{y/x}}{b} \sqrt{\frac{1}{m} + \frac{1}{n}} $$

# pred = cal.inverse_prediction(sample_data['unknown'])
# print(f"Predicted concentration: {pred: .3f} +- {cal.calculate_uncertainty(): .3f}")
Unexpected exception formatting exception. Falling back to standard exception

Traceback (most recent call last):
  File "/home/rhysmcalister/miniconda3/envs/loll/lib/python3.11/site-packages/IPython/core/interactiveshell.py", line 3505, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "/tmp/ipykernel_2063/1656670649.py", line 1, in <module>
    pred = cal.inverse_prediction(sample_data['unknown'])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/rhysmcalister/projects/ChemCal/ChemCal/core.py", line 64, in inverse_prediction
NameError: name 'np' is not defined

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/rhysmcalister/miniconda3/envs/loll/lib/python3.11/site-packages/IPython/core/interactiveshell.py", line 2102, in showtraceback
    stb = self.InteractiveTB.structured_traceback(
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/rhysmcalister/miniconda3/envs/loll/lib/python3.11/site-packages/IPython/core/ultratb.py", line 1310, in structured_traceback
    return FormattedTB.structured_traceback(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/rhysmcalister/miniconda3/envs/loll/lib/python3.11/site-packages/IPython/core/ultratb.py", line 1199, in structured_traceback
    return VerboseTB.structured_traceback(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/rhysmcalister/miniconda3/envs/loll/lib/python3.11/site-packages/IPython/core/ultratb.py", line 1052, in structured_traceback
    formatted_exception = self.format_exception_as_a_whole(etype, evalue, etb, number_of_lines_of_context,
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/rhysmcalister/miniconda3/envs/loll/lib/python3.11/site-packages/IPython/core/ultratb.py", line 978, in format_exception_as_a_whole
    frames.append(self.format_record(record))
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/rhysmcalister/miniconda3/envs/loll/lib/python3.11/site-packages/IPython/core/ultratb.py", line 878, in format_record
    frame_info.lines, Colors, self.has_colors, lvals
    ^^^^^^^^^^^^^^^^
  File "/home/rhysmcalister/miniconda3/envs/loll/lib/python3.11/site-packages/IPython/core/ultratb.py", line 712, in lines
    return self._sd.lines
           ^^^^^^^^^^^^^^
  File "/home/rhysmcalister/miniconda3/envs/loll/lib/python3.11/site-packages/stack_data/utils.py", line 145, in cached_property_wrapper
    value = obj.__dict__[self.func.__name__] = self.func(obj)
                                               ^^^^^^^^^^^^^^
  File "/home/rhysmcalister/miniconda3/envs/loll/lib/python3.11/site-packages/stack_data/core.py", line 698, in lines
    pieces = self.included_pieces
             ^^^^^^^^^^^^^^^^^^^^
  File "/home/rhysmcalister/miniconda3/envs/loll/lib/python3.11/site-packages/stack_data/utils.py", line 145, in cached_property_wrapper
    value = obj.__dict__[self.func.__name__] = self.func(obj)
                                               ^^^^^^^^^^^^^^
  File "/home/rhysmcalister/miniconda3/envs/loll/lib/python3.11/site-packages/stack_data/core.py", line 649, in included_pieces
    pos = scope_pieces.index(self.executing_piece)
                             ^^^^^^^^^^^^^^^^^^^^
  File "/home/rhysmcalister/miniconda3/envs/loll/lib/python3.11/site-packages/stack_data/utils.py", line 145, in cached_property_wrapper
    value = obj.__dict__[self.func.__name__] = self.func(obj)
                                               ^^^^^^^^^^^^^^
  File "/home/rhysmcalister/miniconda3/envs/loll/lib/python3.11/site-packages/stack_data/core.py", line 628, in executing_piece
    return only(
           ^^^^^
  File "/home/rhysmcalister/miniconda3/envs/loll/lib/python3.11/site-packages/executing/executing.py", line 164, in only
    raise NotOneValueFound('Expected one value, found 0')
executing.executing.NotOneValueFound: Expected one value, found 0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ChemCal-0.0.2.tar.gz (11.7 kB view hashes)

Uploaded Source

Built Distribution

ChemCal-0.0.2-py3-none-any.whl (9.2 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page