rectanglepy 1.3.0__tar.gz → 1.4.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/.bumpversion.cfg +1 -1
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/.github/PULL_REQUEST_TEMPLATE.md +1 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/CHANGELOG.md +16 -0
- rectanglepy-1.4.1/LICENCE_COM +203 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/PKG-INFO +16 -2
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/README.md +14 -1
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/docs/contributing.md +4 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/pyproject.toml +1 -1
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/src/rectanglepy/tl/deconvolution.py +8 -8
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/tests/test_tl.py +3 -3
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/.cruft.json +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/.editorconfig +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/.github/workflows/build.yaml +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/.github/workflows/release.yaml +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/.github/workflows/release_testpypi.yaml +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/.github/workflows/test.yaml +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/.gitignore +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/.pre-commit-config.yaml +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/.readthedocs.yaml +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/LICENSE +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/docs/Makefile +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/docs/_static/.gitkeep +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/docs/_static/rec_logo.001.png +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/docs/_templates/.gitkeep +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/docs/_templates/autosummary/class.rst +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/docs/api.md +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/docs/changelog.md +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/docs/conf.py +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/docs/extensions/typed_returns.py +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/docs/index.md +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/docs/installation.md +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/docs/make.bat +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/docs/notebooks/example.ipynb +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/docs/references.bib +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/docs/references.md +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/docs/tutorials.md +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/src/rectanglepy/__init__.py +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/src/rectanglepy/data/hao1_annotations_small.zip +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/src/rectanglepy/data/hao1_counts_small.zip +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/src/rectanglepy/data/small_fino_bulks.zip +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/src/rectanglepy/pp/__init__.py +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/src/rectanglepy/pp/create_signature.py +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/src/rectanglepy/pp/rectangle_signature.py +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/src/rectanglepy/rectangle.py +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/src/rectanglepy/tl/__init__.py +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/tests/data/TIL10_signature.txt +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/tests/data/bulk_small.csv +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/tests/data/cell_annotations_small.txt +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/tests/data/quanTIseq_SimRNAseq_mixture_smaller.csv +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/tests/data/quanTIseq_SimRNAseq_read_fractions_small.txt +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/tests/data/sc_object_small.csv +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/tests/data/signature_hao1.csv +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/tests/test_pp.py +0 -0
- {rectanglepy-1.3.0 → rectanglepy-1.4.1}/tests/test_rectangle.py +0 -0
|
@@ -8,6 +8,7 @@ Please list closed, fixed, or resolved issues here with a # and the number.
|
|
|
8
8
|
|
|
9
9
|
### Checklist
|
|
10
10
|
|
|
11
|
+
- [ ] I have read and agree to the [Contributor License Agreement (CLA)](https://github.com/ComputationalBiomedicineGroup/Rectangle/blob/main/CLA.md)
|
|
11
12
|
- [ ] Code builds correctly
|
|
12
13
|
- [ ] Added tests that fail without the change (if possible)
|
|
13
14
|
- [ ] All tests passing
|
|
@@ -10,6 +10,22 @@ and this project adheres to [Semantic Versioning][].
|
|
|
10
10
|
|
|
11
11
|
## [Unreleased]
|
|
12
12
|
|
|
13
|
+
## [1.4.1] - 2026-04-23
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
|
|
17
|
+
- Wider QP tolerances
|
|
18
|
+
|
|
19
|
+
## [1.4.0] - 2026-03-10
|
|
20
|
+
|
|
21
|
+
### Changed
|
|
22
|
+
|
|
23
|
+
- **Licensing: Rectangle is now available under a dual licence.**
|
|
24
|
+
- Non-commercial use: GNU General Public Licence v3 (GPLv3).
|
|
25
|
+
- Commercial use: A proprietary licence is available for companies wishing to use Rectangle in closed-source or proprietary applications. For enquiries, contact innovation-psb@uibk.ac.at.
|
|
26
|
+
- See [LICENCE_COM](LICENCE_COM) for full commercial licence terms.
|
|
27
|
+
- Added Contributor License Agreement (CLA) for external contributions.
|
|
28
|
+
|
|
13
29
|
## [1.2.0] - 2026-01-31
|
|
14
30
|
|
|
15
31
|
### Changed
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
Rectangle - Open Source Version
|
|
2
|
+
|
|
3
|
+
Copyright (C) 2026 Francesca Finotello, Bernhard Eder
|
|
4
|
+
|
|
5
|
+
This programme is released under proprietary licence for commercial use
|
|
6
|
+
(for proprietary licences, contact: innovation-psb@uibk.ac.at), but can
|
|
7
|
+
be used for non commercial use under the following conditions:
|
|
8
|
+
|
|
9
|
+
For non commercial use open source licence GNU General Public Licence v3 (GPLv3)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
Rectangle
|
|
13
|
+
|
|
14
|
+
Rectangle is an open-source Python package for single-cell-informed cell-type
|
|
15
|
+
deconvolution of bulk and spatial transcriptomic data.
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
## Licence
|
|
19
|
+
|
|
20
|
+
Rectangle is available under a **dual licence**:
|
|
21
|
+
|
|
22
|
+
- **Open source licence:** GNU General Public Licence v3 (GPLv3)
|
|
23
|
+
→ Free to use as long as modifications and redistributions are also under GPLv3.
|
|
24
|
+
|
|
25
|
+
- **Commercial licence:** For companies that want to use Rectangle in proprietary
|
|
26
|
+
or closed applications the following applies:
|
|
27
|
+
|
|
28
|
+
Rectangle - Commercial Licence Terms
|
|
29
|
+
|
|
30
|
+
Copyright (C) 2026 Francesca Finotello, Bernhard Eder
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
For all users who use Rectangle under GPL v3 the following shall apply:
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
Contributor License Agreement (CLA)
|
|
37
|
+
|
|
38
|
+
Purpose of this Agreement
|
|
39
|
+
|
|
40
|
+
The project is distributed under a dual-licensing model, consisting of:
|
|
41
|
+
an open source license (GNU General Public License, GPL), and
|
|
42
|
+
a proprietary license offered by the project owner.
|
|
43
|
+
The purpose of this Agreement is to ensure that contributions initially
|
|
44
|
+
submitted under the GPL can be lawfully reused, integrated, and distributed
|
|
45
|
+
under the proprietary license.
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
Definitions
|
|
49
|
+
|
|
50
|
+
"Contribution" means any source code, documentation, bug fix, enhancement,
|
|
51
|
+
or other work intentionally submitted by the Contributor for inclusion in
|
|
52
|
+
the project.
|
|
53
|
+
"Contributor" means the individual or legal entity submitting a Contribution.
|
|
54
|
+
"Project Owner" means Francesca Finotello and Bernhard Eder, who maintain
|
|
55
|
+
and license the project.
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
Authorship and Authority
|
|
59
|
+
|
|
60
|
+
The Contributor represents and warrants that:
|
|
61
|
+
they are the sole author of the Contribution or have all necessary rights
|
|
62
|
+
to submit it;
|
|
63
|
+
the Contribution does not infringe any third-party rights;
|
|
64
|
+
the Contribution is free of patents, licenses, or other restrictions that
|
|
65
|
+
would conflict with the rights granted under this Agreement.
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
Grant of Rights (Dual Licensing Grant)
|
|
69
|
+
|
|
70
|
+
The Contributor hereby grants the Project Owner a perpetual, worldwide,
|
|
71
|
+
irrevocable, non-exclusive, transferable license to:
|
|
72
|
+
use,
|
|
73
|
+
reproduce,
|
|
74
|
+
modify,
|
|
75
|
+
combine with other works,
|
|
76
|
+
publish,
|
|
77
|
+
sublicense,
|
|
78
|
+
and distribute
|
|
79
|
+
the Contribution, including but not limited to the right to license and
|
|
80
|
+
distribute the Contribution:
|
|
81
|
+
under the GNU General Public License (GPL), and
|
|
82
|
+
under one or more proprietary licenses, as determined at the sole discretion
|
|
83
|
+
of the Project Owner.
|
|
84
|
+
This grant explicitly includes the right to incorporate Contributions
|
|
85
|
+
originally submitted under the GPL version of the project into proprietary
|
|
86
|
+
versions of the project.
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
No Obligation to Disclose Proprietary Versions
|
|
90
|
+
|
|
91
|
+
The Contributor acknowledges that Contributions submitted under this
|
|
92
|
+
Agreement are not required to be disclosed, published, or distributed
|
|
93
|
+
under an open source license in the proprietary version of the project.
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
Retention of Copyright
|
|
97
|
+
|
|
98
|
+
The Contributor retains all copyrights in their Contribution. This Agreement
|
|
99
|
+
does not constitute a transfer of ownership, but rather a comprehensive
|
|
100
|
+
grant of rights.
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
Attribution
|
|
104
|
+
|
|
105
|
+
Unless otherwise agreed, the Project Owner may list the Contributor's name
|
|
106
|
+
in a list of contributors. There is no obligation to provide attribution.
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
No Compensation
|
|
110
|
+
|
|
111
|
+
Contributions are made voluntarily and without compensation. The Contributor
|
|
112
|
+
is not entitled to fees, royalties, or other remuneration.
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
Disclaimer of Warranty
|
|
116
|
+
|
|
117
|
+
The Contribution is provided "AS IS", without warranty of any kind, express
|
|
118
|
+
or implied, including but not limited to warranties of merchantability or
|
|
119
|
+
fitness for a particular purpose.
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
Governing Law
|
|
123
|
+
|
|
124
|
+
This Agreement shall be governed by the laws of Austria, excluding its
|
|
125
|
+
conflict of law provisions.
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
Entire Agreement
|
|
129
|
+
|
|
130
|
+
This Agreement constitutes the entire agreement between the Contributor
|
|
131
|
+
and the Project Owner regarding Contributions and supersedes all prior
|
|
132
|
+
agreements or understandings.
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
Acceptance
|
|
136
|
+
|
|
137
|
+
By submitting a Contribution, the Contributor confirms that they have read,
|
|
138
|
+
understood, and agreed to the terms of this Agreement.
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
This licence permits the use of Rectangle in proprietary or non-open projects
|
|
143
|
+
under the following conditions:
|
|
144
|
+
|
|
145
|
+
1. The licensee may use and distribute Rectangle in closed applications
|
|
146
|
+
without publishing the source code.
|
|
147
|
+
2. The licence is non-transferable and applies only to the licensed company.
|
|
148
|
+
3. Use is unlimited in time, provided that the licence fee has been paid in full.
|
|
149
|
+
4. Support and updates are optional and must be agreed separately.
|
|
150
|
+
5. Any use without a valid commercial licence is automatically subject to GPLv3.
|
|
151
|
+
|
|
152
|
+
For offers and pricing models: innovation-psb@uibk.ac.at
|
|
153
|
+
→ Please contact us at innovation-psb@uibk.ac.at to obtain a commercial licence.
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
For all users of rectangle the following applies:
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
Updates & Support
|
|
160
|
+
|
|
161
|
+
1. The copyright holder offers optional paid updates, maintenance and
|
|
162
|
+
technical support.
|
|
163
|
+
2. Without a support contract, there is no entitlement to future versions
|
|
164
|
+
or bug fixes.
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
Liability & Warranty
|
|
168
|
+
|
|
169
|
+
1. Rectangle is provided 'as is' without any express or implied warranty.
|
|
170
|
+
2. The rights holder is not liable for any damage, loss of data or
|
|
171
|
+
consequential damage resulting from use.
|
|
172
|
+
3. Liability is limited to a maximum of the licence fee paid.
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
Copyright & Ownership
|
|
176
|
+
|
|
177
|
+
1. Rectangle remains the intellectual property of the rights holder at
|
|
178
|
+
all times.
|
|
179
|
+
2. This licence does not transfer ownership, only rights of use.
|
|
180
|
+
3. Modifications or derivative works by the licensee remain the property
|
|
181
|
+
of the licensee, unless they are derived directly from Rectangle code.
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
Termination
|
|
185
|
+
|
|
186
|
+
1. This licence shall automatically expire if the licensee violates any
|
|
187
|
+
material terms of the agreement.
|
|
188
|
+
2. Upon termination, the licensee must delete all copies of the Rectangle
|
|
189
|
+
software and may no longer use it.
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
Miscellaneous
|
|
193
|
+
|
|
194
|
+
1. This licence is subject to the laws of Austria.
|
|
195
|
+
2. The place of jurisdiction is the registered office of the rights holder.
|
|
196
|
+
3. Amendments or additions must be made in writing.
|
|
197
|
+
4. Should any provision be invalid, the remaining provisions shall remain valid.
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
## Contact
|
|
201
|
+
|
|
202
|
+
**Authors:** Francesca Finotello, Bernhard Eder
|
|
203
|
+
**Email:** innovation-psb@uibk.ac.at
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rectanglepy
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.4.1
|
|
4
4
|
Summary: Hierarchical deconvolution of bulk transcriptomics
|
|
5
5
|
Project-URL: Documentation, https://rectanglepy.readthedocs.io/
|
|
6
6
|
Project-URL: Source, https://github.com/ComputationalBiomedicineGroup/Rectangle
|
|
@@ -681,6 +681,7 @@ License: GNU GENERAL PUBLIC LICENSE
|
|
|
681
681
|
the library. If this is what you want to do, use the GNU Lesser General
|
|
682
682
|
Public License instead of this License. But first, please read
|
|
683
683
|
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
|
684
|
+
License-File: LICENCE_COM
|
|
684
685
|
License-File: LICENSE
|
|
685
686
|
Requires-Python: >=3.10
|
|
686
687
|
Requires-Dist: anndata<0.10.9,>=0.8.0
|
|
@@ -734,7 +735,7 @@ Please refer to the [documentation][link-docs]. In particular, the
|
|
|
734
735
|
|
|
735
736
|
## Installation
|
|
736
737
|
|
|
737
|
-
You need
|
|
738
|
+
You need Python 3.10–3.12 installed on your system.
|
|
738
739
|
|
|
739
740
|
How to install Rectangle:
|
|
740
741
|
|
|
@@ -744,6 +745,17 @@ Install the latest release of `Rectangle` from `PyPI` <https://pypi.org/project/
|
|
|
744
745
|
pip install rectanglepy
|
|
745
746
|
```
|
|
746
747
|
|
|
748
|
+
## Licence
|
|
749
|
+
|
|
750
|
+
Rectangle is available under a **dual licence**:
|
|
751
|
+
|
|
752
|
+
- **Open-source licence:** [GNU General Public License v3.0 (GPLv3)](LICENSE)
|
|
753
|
+
→ Free to use, modify, and redistribute as long as modifications and redistributions are also under GPLv3.
|
|
754
|
+
|
|
755
|
+
- **Commercial licence:** For companies and individuals who wish to use Rectangle in proprietary or closed-source applications, a separate commercial licence is available. See [LICENCE_COM](LICENCE_COM) for details.
|
|
756
|
+
|
|
757
|
+
For commercial licensing enquiries, please contact: **innovation-psb@uibk.ac.at**
|
|
758
|
+
|
|
747
759
|
## Release notes
|
|
748
760
|
|
|
749
761
|
See the [changelog][changelog].
|
|
@@ -752,6 +764,8 @@ See the [changelog][changelog].
|
|
|
752
764
|
|
|
753
765
|
If you found a bug, please use the [issue tracker][issue-tracker].
|
|
754
766
|
|
|
767
|
+
For commercial licensing: **innovation-psb@uibk.ac.at**
|
|
768
|
+
|
|
755
769
|
## Citation
|
|
756
770
|
|
|
757
771
|
> If you use Rectangle in your project, please cite: (TBA)
|
|
@@ -23,7 +23,7 @@ Please refer to the [documentation][link-docs]. In particular, the
|
|
|
23
23
|
|
|
24
24
|
## Installation
|
|
25
25
|
|
|
26
|
-
You need
|
|
26
|
+
You need Python 3.10–3.12 installed on your system.
|
|
27
27
|
|
|
28
28
|
How to install Rectangle:
|
|
29
29
|
|
|
@@ -33,6 +33,17 @@ Install the latest release of `Rectangle` from `PyPI` <https://pypi.org/project/
|
|
|
33
33
|
pip install rectanglepy
|
|
34
34
|
```
|
|
35
35
|
|
|
36
|
+
## Licence
|
|
37
|
+
|
|
38
|
+
Rectangle is available under a **dual licence**:
|
|
39
|
+
|
|
40
|
+
- **Open-source licence:** [GNU General Public License v3.0 (GPLv3)](LICENSE)
|
|
41
|
+
→ Free to use, modify, and redistribute as long as modifications and redistributions are also under GPLv3.
|
|
42
|
+
|
|
43
|
+
- **Commercial licence:** For companies and individuals who wish to use Rectangle in proprietary or closed-source applications, a separate commercial licence is available. See [LICENCE_COM](LICENCE_COM) for details.
|
|
44
|
+
|
|
45
|
+
For commercial licensing enquiries, please contact: **innovation-psb@uibk.ac.at**
|
|
46
|
+
|
|
36
47
|
## Release notes
|
|
37
48
|
|
|
38
49
|
See the [changelog][changelog].
|
|
@@ -41,6 +52,8 @@ See the [changelog][changelog].
|
|
|
41
52
|
|
|
42
53
|
If you found a bug, please use the [issue tracker][issue-tracker].
|
|
43
54
|
|
|
55
|
+
For commercial licensing: **innovation-psb@uibk.ac.at**
|
|
56
|
+
|
|
44
57
|
## Citation
|
|
45
58
|
|
|
46
59
|
> If you use Rectangle in your project, please cite: (TBA)
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
We welcome contributions! The best way to contribute is by opening a pull request on GitHub.
|
|
4
4
|
|
|
5
|
+
## Contributor License Agreement (CLA)
|
|
6
|
+
|
|
7
|
+
Rectangle uses a dual-licensing model (GPLv3 + commercial). By submitting a contribution (e.g., via pull request), you agree to the terms of our [Contributor License Agreement (CLA)](https://github.com/ComputationalBiomedicineGroup/Rectangle/blob/main/CLA.md). This ensures that contributions can be included in both the open-source and commercial versions of Rectangle.
|
|
8
|
+
|
|
5
9
|
## How to Contribute
|
|
6
10
|
|
|
7
11
|
1. Fork the repository and create a new branch for your changes.
|
|
@@ -143,8 +143,8 @@ def solve_qp(
|
|
|
143
143
|
l=l,
|
|
144
144
|
u=u,
|
|
145
145
|
verbose=False,
|
|
146
|
-
eps_abs=1e-
|
|
147
|
-
eps_rel=1e-
|
|
146
|
+
eps_abs=1e-7,
|
|
147
|
+
eps_rel=1e-7,
|
|
148
148
|
max_iter=50000,
|
|
149
149
|
polish=True,
|
|
150
150
|
warm_start=False,
|
|
@@ -159,7 +159,7 @@ def solve_qp(
|
|
|
159
159
|
return res.x
|
|
160
160
|
|
|
161
161
|
|
|
162
|
-
def
|
|
162
|
+
def _calculate_dampening_constant(signature: pd.DataFrame, bulk: pd.Series, qp_gld: np.ndarray) -> int:
|
|
163
163
|
solutions_std = []
|
|
164
164
|
np.random.seed(1)
|
|
165
165
|
weights = np.square(1 / (np.dot(signature, qp_gld)))
|
|
@@ -190,7 +190,7 @@ def _find_dampening_constant(signature: pd.DataFrame, bulk: pd.Series, qp_gld: n
|
|
|
190
190
|
return best_dampening_constant
|
|
191
191
|
|
|
192
192
|
|
|
193
|
-
def
|
|
193
|
+
def _calculate_ls(
|
|
194
194
|
signature: pd.DataFrame,
|
|
195
195
|
bulk: pd.Series,
|
|
196
196
|
prev_assignments: list[int or str] = None,
|
|
@@ -201,7 +201,7 @@ def _calculate_dwls(
|
|
|
201
201
|
bulk = bulk.loc[genes].sort_index().astype("double")
|
|
202
202
|
|
|
203
203
|
approximate_solution = solve_qp(signature, bulk, prev_assignments, prev_weights)
|
|
204
|
-
dampening_constant =
|
|
204
|
+
dampening_constant = _calculate_dampening_constant(signature, bulk, approximate_solution)
|
|
205
205
|
multiplier = 2**dampening_constant
|
|
206
206
|
|
|
207
207
|
max_iterations = 1000
|
|
@@ -304,7 +304,7 @@ def _deconvolute(
|
|
|
304
304
|
bias_factors = bias_factors * 0 + 1 # set all bias factors to 1
|
|
305
305
|
|
|
306
306
|
signature = pseudobulk_sig_cpm.loc[signature_genes_direct_reduced] * bias_factors
|
|
307
|
-
start_fractions =
|
|
307
|
+
start_fractions = _calculate_ls(signature, bulk)
|
|
308
308
|
|
|
309
309
|
if clustered_pseudobulk_sig_cpm is None:
|
|
310
310
|
start_fractions, bulk_err = correct_for_unknown_cell_content(
|
|
@@ -323,8 +323,8 @@ def _deconvolute(
|
|
|
323
323
|
clustered_signature = clustered_pseudobulk_sig_cpm.loc[clustered_signature_genes] * cluster_bias_factors
|
|
324
324
|
|
|
325
325
|
try:
|
|
326
|
-
clustered_fractions =
|
|
327
|
-
recursive_fractions =
|
|
326
|
+
clustered_fractions = _calculate_ls(clustered_signature, bulk)
|
|
327
|
+
recursive_fractions = _calculate_ls(signature, bulk, signatures.assignments, clustered_fractions)
|
|
328
328
|
except Exception as e:
|
|
329
329
|
logger.warning(f"Recursive deconvolution failed with error: {e}")
|
|
330
330
|
start_fractions, bulk_err = correct_for_unknown_cell_content(
|
|
@@ -9,7 +9,7 @@ from rectanglepy.pp.create_signature import (
|
|
|
9
9
|
build_rectangle_signatures,
|
|
10
10
|
)
|
|
11
11
|
from rectanglepy.tl.deconvolution import (
|
|
12
|
-
|
|
12
|
+
_calculate_ls,
|
|
13
13
|
_scale_weights,
|
|
14
14
|
correct_for_unknown_cell_content,
|
|
15
15
|
deconvolution,
|
|
@@ -58,7 +58,7 @@ def test_simple_weighted_dampened_deconvolution(quantiseq_data):
|
|
|
58
58
|
bulk = bulk.iloc[:, j]
|
|
59
59
|
expected = real_fractions.T.iloc[:, j]
|
|
60
60
|
|
|
61
|
-
result =
|
|
61
|
+
result = _calculate_ls(signature, bulk)
|
|
62
62
|
corr = np.corrcoef(result, expected)[0, 1]
|
|
63
63
|
rsme = np.sqrt(np.mean((result - expected) ** 2))
|
|
64
64
|
|
|
@@ -74,7 +74,7 @@ def test_correct_for_unknown_cell_content(small_data, quantiseq_data):
|
|
|
74
74
|
bulk = bulk.iloc[:, 5]
|
|
75
75
|
pseudo_signature = signature.pseudobulk_sig_cpm
|
|
76
76
|
sig = pseudo_signature.loc[signature.signature_genes]
|
|
77
|
-
fractions =
|
|
77
|
+
fractions = _calculate_ls(sig, bulk)
|
|
78
78
|
biasfact = (pseudo_signature > 0).sum(axis=0)
|
|
79
79
|
biasfact = biasfact / biasfact.min()
|
|
80
80
|
result, bulk_err = correct_for_unknown_cell_content(bulk, pseudo_signature, fractions, biasfact)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rectanglepy-1.3.0 → rectanglepy-1.4.1}/tests/data/quanTIseq_SimRNAseq_read_fractions_small.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|