Skip to content

Releases: NoahHenrikKleinschmidt/qpcr

qpcr (v.4.1.3)

31 Oct 13:24
Compare
Choose a tag to compare

New features in this version

  • This release includes a new copy method available for all "id"-ed classes (Assay, Results, etc.), yielding a deepcopy with a new UUID for the respective object.

  • The Assay class now supports reading and writing for the Ct and dCt attributes (before only reading was allowed). Thus, an assay now supports some_assay.Ct = some_values for easier external data manipulation. The same goes for the dCt attribute.

qpcr (v.4.1.2)

27 Apr 18:09
Compare
Choose a tag to compare

Refactored the imports of the main func_api which were causing issues on python 3.10.9 and MacOS 1.11 (Big Sur)

qpcr (v.4.1.1)

13 Feb 11:20
Compare
Choose a tag to compare

Fixed some package imports.

qpcr (v.4.1.0)

12 Feb 17:34
Compare
Choose a tag to compare

New features in this version

New qpcr.stats module

qpcr now offers T-tests and ANOVA analyses on qpcr.Results objects. Tests are offered to compare the groups within assays or assays across groups. P-values from multiple T-tests are automatically integrated into the results preview figures. At the core of the module is the new Evaluator class that performs statistical evaluations on results and produces Comparison objects that store the related p-values.

For convenience, stand-alone functions are directly available to perform statistical tests:

  • assaywise_ttests
  • groupwise_ttests
  • assaywise_anova
  • groupwise_anova

Note: This does not affect the properties of the qpcr.Results.stats() data frame.

qpcr.Results.setup_cols automated

It is not necessary anymore to call setup_cols manually before adding data using add_Ct, add_dCt, and add_ddCt. They will do so if necessary.

Bugfixes...

The main functionality has not been altered.

qpcr (v.4.0.0)

22 Jul 22:40
Compare
Choose a tag to compare

New Features in this Version

pipe method comprehension

The pipe methods of qpcr.Analyser, qpcr.Normaliser, and the qpcr.Filters, as well as the read method of the qpcr.DataReader can now directly be fed with a list.

Extended interface for qpcr.Assay and qpcr.Results

qpcr.Assay and qpcr.Results objects now allow direct item setting, getting and deleting on their dataframes. qpcr.Results can now be merged together using the + operator.

Function API

There are now a number of functions that wrap the qpcr classes to allow even easier
data handling. Among them are:

  • qpcr.read(...) to wrap a standard qpcr.DataReader and its read method
  • qpcr.analyse(...) to wrap a standard qpcr.Analyser and its pipe method
  • qpcr.normalise(...) to wrap a standard qpcr.Normalaliser and its `pipe method.
  • qpcr.plot(...) to allow quick visualisation from several qpcr classes such as qpcr.Results or qpcr.Assay.

New stats

The qpcr.Results.stats() dataframe now also includes IQR (by default, but adjustable to any two quantiles), and CI (assuming a normal distribution, default at 95% but also adjustable).

New extended documentation

There is a new documentation now available with extended explanations on class usage.
It is available on qpcr.readthedocs.io.

New __str__ representations

The main qpcr classes now all have a __str__ method to allow easier user-interaction, where they display their dataframes as well as other information.

SampleReader drop

The qpcr.SampleReader was dropped from qpcr.

qpcr.Results.split drop

The split method that previously generated a number of qpcr.Results objects from a single one based on its _rel_ columns has been dropped.

Attribute changes

Some attributes such as the qpcr.Assay.dCt or qpcr.Results.is_empty are now properties and now longer callable methods. Also, the qpcr.Results.adopt_names method is now called setup_cols.

Bugfixes and Code Refactorizations

The huge __init__ method was refactored into a proper main submodule. Also the defaults were refactored into their own submodule instead of being part of _auxiliary. Also the id policy has been changed to allow repetitive .id(...) calling without requiring the use of .id_reset().

qpcr (v3.1.5)

14 Apr 13:54
Compare
Choose a tag to compare

New Features in this Version

Assays and Efficiency

Efficiency is now directly handled by the qpcr.Assay objects (qpcr.Analyser can still receive .efficiency() as before, but this will be dropped at some point...)

New qpcr.Calibrator class

The new qpcr.Calibrator allows calculation of qPCR primer efficiencies based
a dilution series. It is able to work either with an entire assay as input or with
just a subset of specially labeled replicates and can compute, store, save, and load and later assign pre-computed efficiencies from and to qpcr.Assay objects.

New EfficiencyLines Plotter

Accompanying the Calibrator is a new plotter that can visualise the linear regression performed during efficiency computation, similar to how the FilterSummary plotter can summarise the workings of the qpcr.Filters.

New Plotting shortcuts

A Plotters.PreviewResults can now directly be called from qpcr.Results without having to import and setting up manually. The new qpcr.Results.preview() method calls on PreviewResults object to plot the stored data and returns the produced figure.

The same goes for a Plotters.ReplicateBoxplot which can be called from a qpcr.Assay directly via qpcr.Assay.boxplot().

Also, the qpcr.Calibrator is equipped with a qpcr.Calibrator.plot() method to
call Plotters.EfficiencyLines.

qpcr (v3.1.2)

12 Mar 11:26
b994077
Compare
Choose a tag to compare

This update introduces support for new pre-implemented normalisation methods as well as new Plotters.

Normalisation mode

Up to now the Normaliser by default strictly paired replicates by their order (1st - 1st, 2nd - 2nd, etc.). In addition to this pair-wise normalisation, two new normalisation modes are now available to account for equivalence between replicates in cases where they were pipetted separately and there is no strict reason to link replicates in such a fashion. These modes are combinatoric, which computes combinations of 1st-1st, 1st-2nd etc., and permutative, which approximates combinatoric computation through iterative permutations in cases where datasets may be large and combinatoric computation is therefore undesired.

Dot Plots

New Plotters are introduced that show the individual normalised fold changes in dot plots rather than as mean + stdev. Optionally, violins can be added to aid visualising the distribution. New Plotters implemented for this are AssayDots and GroupDots.

Group-Plotters and Assay-Plotters

Up to now, by default separate assays were displayed in separate subplots, with the replicate groups plotted on the x-axis. Now, another option is introduced wherein the separate groups are displayed in subplots and assays on the x-axis. The two grouped-kind Plotters are GroupBars and GroupDots, which visualise the results either in bar charts or as dot plots. Their equivalents are AssayBars (which is the same as the default PreviewResults) and AssayDots.

More versatile PreviewResults

To allow more easy interaction with the new plotters, PreviewResults is now a wrapper that can call on any Plotter that displays a preview of the results: AssayBars, AssayDots, GroupBars, GroupDots. AssayBars has now taken over the core role that was previously held directly by PreviewResults and this is now the default mode, so the main behaviour of PreviewResults remains unchanged.

Filter-NaN

A bug was fixed that caused Filters to crash when encountering all-NaN groups. Also, Filters now by default set outliers to NaN instead of completely removing the entries (this behaviour can be changed, however).

FilterSummary Class

A new Plotter dedicated to visualising Filtering is now available and replaces the previous setup of two consecutive ReplicateBoxPlots. The new FilterSummary figure displays separate assays in separate subplots and offers two boxes for each replicate group next to each other, one showing the data pre-filtered and one post-filtered. �

Bugfixes

Some other small bugs were fixed as they were discovered.

qpcr (v3.1.1)

19 Feb 22:53
Compare
Choose a tag to compare

This update introduces support for a new type of Big Table, as well as a filetype independent Parser. Furthermore, Plotter default settings were slightly adjusted, which only affects the Figure's default labelling, however.

New "hybrid" Big Table support

"Hybrid" Big Tables store their replicate identifiers in a dedicated column, while storing Ct values for separate assays in side-by-side columns. Hence, they combine aspects from horizontal and vertical big tables. Support for this data arrangement was added as a feature of the BigTableReader.

Extended "regular" file support

Regular files may now also store additional data columns apart from replicate identifier and Ct values. However, in this case column names must be supplied while reading. Furthermore, users may now force reading a file as "regular" using is_regular = True (this only works for the SingleReader) to prevent the Reader from calling Parsers. This was primarily implemented to avoid the Parser-generated assay_pattern related error messages from regular files when the true reason for failure were wrong specified column names.

The ArrayParser

The ArrayParser, contrary to the already existing CsvParser and ExcelParser, does does not rely on a specific filetype but adopts an existing numpy.ndarray using its read method.

New id_label and altered id handling.

Objects are identified by qpcr through their id attribute. The id attribute is now supported by a secondary id named the id_label, which can be arbitrarily set or automatically generated by splitting the actual id using simple string operations or regex matching. To that end new methods id_label , split_id , and merge_id are introduced and are available for all qpcr classes that inherit from the auxiliary _ID. �id_label and id can be repeatedly switched using id_to_label. Also, a merged id can be generated without the object adopting it using get_merged_id. Finally, id_reset (which must be called before a new object id can be set) is now a public method.
This was done in an effort to allow more facilitated comparison of transcript isoform assays, which is a planned feature of a future release.

Second Release (v.3.1.0)

16 Feb 16:05
Compare
Choose a tag to compare

This is the second release of qpcr and a major update.

The code has been extensively refactored, while the general end-user usability has remained virtually unchanged.
The qpcr.Assay object takes up a much more prominent role within the code, and receiving new functionalities to
allow easier use. Additionaly, a number of completely new features have been introduced that greatly expand qpcr's capacities.

New features

1. Support for multi-assay datafiles

The new qpcr.Readers submodule now specifies dedicated Reader classes that are able to read and extract data from csv and excel files that contain a single or multiple qPCR assays. To read such "irregular" datafiles, these Readers make use of the also newly added qpcr.Parsers that parse and extract data using numpy.

A new central hub for data reading has been introduced in the form of the qpcr.DataReader which replaces the old SampleReader.

2. Replicate inference

Information about the groups of replicates can now be automatically inferred by a qpcr.Assay object provided that all replicates of a group share the same replicate identifier. If this is the case, also the group names are automatically inferred. Nevertheless, replicates can still be manually provided. To further ease manual replicate settings for large numbers of irregular group sizes a new "formula" method was added to avoid having to specify a long tuple manually.

3. New Pipelines

Two new pipelines have been introduced, called Blueprint and ddCt. The Blueprint pipeline allows access to the same workflow as the BasicPlus pipeline but also allows customisation of the Analyser, Reader, and Normaliser that is used. The ddCt pipeline on the other hand does not work directly with datafiles but requires qpcr.Assay objects directly. This is especially powerful when reading data from a mulit-assay file, which are currently not supported by Basic-style pipelines (including Blueprint).

4. New predefined anchors

The qpcr.Analyser now natively supports using the mean of the reference group and will not require an externally computed value to achieve this. Furthermore, a user-defined function can now also be set as anchor to compute a custom anchor.
Also a bug that rendered the "grouped" anchor non-functional was fixed.

5. Filter nan policy

qpcr.Filters used to crash when encountering an all-nan group of replicates. This can now be suppressed.

6. Plotters

Interactive PreviewResults figures now support padding between subplots. Also, the default style of static PreviewResults figures was changed.

7. Big Fixes

Some more bugs were fixed as they noticed.

First release (v.2.1.0)

03 Feb 17:55
Compare
Choose a tag to compare

The first stable release of the new qpcr module.