Releases: NoahHenrikKleinschmidt/qpcr
qpcr (v.4.1.3)
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 theCt
anddCt
attributes (before only reading was allowed). Thus, an assay now supportssome_assay.Ct = some_values
for easier external data manipulation. The same goes for thedCt
attribute.
qpcr (v.4.1.2)
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)
Fixed some package imports.
qpcr (v.4.1.0)
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)
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 standardqpcr.DataReader
and itsread
methodqpcr.analyse(...)
to wrap a standardqpcr.Analyser
and itspipe
methodqpcr.normalise(...)
to wrap a standardqpcr.Normalaliser
and its `pipe method.qpcr.plot(...)
to allow quick visualisation from severalqpcr
classes such asqpcr.Results
orqpcr.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)
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)
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)
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)
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)
The first stable release of the new qpcr
module.