consenrich 0.6.3b1__cp311-cp311-macosx_11_0_arm64.whl → 0.7.0b1__cp311-cp311-macosx_11_0_arm64.whl
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.
Potentially problematic release.
This version of consenrich might be problematic. Click here for more details.
- consenrich/cconsenrich.c +404 -404
- consenrich/cconsenrich.cpython-311-darwin.so +0 -0
- consenrich/consenrich.py +28 -10
- consenrich/core.py +25 -12
- consenrich/detrorm.py +12 -3
- consenrich/matching.py +5 -5
- consenrich/misc_util.py +29 -0
- {consenrich-0.6.3b1.dist-info → consenrich-0.7.0b1.dist-info}/METADATA +3 -3
- {consenrich-0.6.3b1.dist-info → consenrich-0.7.0b1.dist-info}/RECORD +13 -13
- {consenrich-0.6.3b1.dist-info → consenrich-0.7.0b1.dist-info}/WHEEL +0 -0
- {consenrich-0.6.3b1.dist-info → consenrich-0.7.0b1.dist-info}/entry_points.txt +0 -0
- {consenrich-0.6.3b1.dist-info → consenrich-0.7.0b1.dist-info}/licenses/LICENSE +0 -0
- {consenrich-0.6.3b1.dist-info → consenrich-0.7.0b1.dist-info}/top_level.txt +0 -0
|
Binary file
|
consenrich/consenrich.py
CHANGED
|
@@ -39,11 +39,11 @@ def _listOrEmpty(list_):
|
|
|
39
39
|
|
|
40
40
|
|
|
41
41
|
def _getMinR(cfg, numBams: int) -> float:
|
|
42
|
+
fallBackMinR: float = 1.0
|
|
42
43
|
try:
|
|
43
44
|
raw = cfg.get("observationParams.minR", None)
|
|
44
|
-
return float(raw) if raw is not None else
|
|
45
|
+
return float(raw) if raw is not None else fallBackMinR
|
|
45
46
|
except (TypeError, ValueError, KeyError):
|
|
46
|
-
fallBackMinR: float = 1.0e-2
|
|
47
47
|
logger.warning(
|
|
48
48
|
f"Invalid or missing 'observationParams.minR' in config. Using `{fallBackMinR}`."
|
|
49
49
|
)
|
|
@@ -174,7 +174,21 @@ def getInputArgs(config_path: str) -> core.inputParams:
|
|
|
174
174
|
for i, bamFile in enumerate(bamFilesControl):
|
|
175
175
|
misc_util.checkBamFile(bamFile)
|
|
176
176
|
|
|
177
|
-
|
|
177
|
+
# if we've made it here, we can check pairedEnd
|
|
178
|
+
pairedEndList = misc_util.bamsArePairedEnd(bamFiles)
|
|
179
|
+
_isPairedEnd: Optional[bool] = config.get("inputParams.pairedEnd", None)
|
|
180
|
+
if _isPairedEnd is None:
|
|
181
|
+
# only set auto if not provided in config
|
|
182
|
+
_isPairedEnd = all(pairedEndList)
|
|
183
|
+
if _isPairedEnd:
|
|
184
|
+
logger.info(
|
|
185
|
+
"Paired-end BAM files detected"
|
|
186
|
+
)
|
|
187
|
+
else:
|
|
188
|
+
logger.info(
|
|
189
|
+
"One or more single-end BAM files detected"
|
|
190
|
+
)
|
|
191
|
+
return core.inputParams(bamFiles=bamFiles, bamFilesControl=bamFilesControl, pairedEnd=_isPairedEnd)
|
|
178
192
|
|
|
179
193
|
|
|
180
194
|
def getGenomeArgs(config_path: str) -> core.genomeParams:
|
|
@@ -294,6 +308,7 @@ def readConfig(config_path: str) -> Dict[str, Any]:
|
|
|
294
308
|
genomeParams = getGenomeArgs(config_path)
|
|
295
309
|
countingParams = getCountingArgs(config_path)
|
|
296
310
|
minR_default = _getMinR(config, len(inputParams.bamFiles))
|
|
311
|
+
minQ_default = (minR_default / (len(inputParams.bamFiles))) + 0.10 # protect condition number
|
|
297
312
|
matchingExcludeRegionsBedFile_default: Optional[str] = (
|
|
298
313
|
genomeParams.blacklistFile
|
|
299
314
|
)
|
|
@@ -304,12 +319,12 @@ def readConfig(config_path: str) -> Dict[str, Any]:
|
|
|
304
319
|
"countingArgs": countingParams,
|
|
305
320
|
"processArgs": core.processParams(
|
|
306
321
|
deltaF=config.get("processParams.deltaF", 0.5),
|
|
307
|
-
minQ=config.get("processParams.minQ",
|
|
322
|
+
minQ=config.get("processParams.minQ", minQ_default),
|
|
308
323
|
maxQ=config.get("processParams.maxQ", 500.0),
|
|
309
324
|
offDiagQ=config.get("processParams.offDiagQ", 0.0),
|
|
310
325
|
dStatAlpha=config.get("processParams.dStatAlpha", 3.0),
|
|
311
326
|
dStatd=config.get("processParams.dStatd", 10.0),
|
|
312
|
-
dStatPC=config.get("processParams.dStatPC",
|
|
327
|
+
dStatPC=config.get("processParams.dStatPC", 1.0),
|
|
313
328
|
scaleResidualsByP11=config.get(
|
|
314
329
|
"processParams.scaleResidualsByP11", False
|
|
315
330
|
),
|
|
@@ -351,8 +366,9 @@ def readConfig(config_path: str) -> Dict[str, Any]:
|
|
|
351
366
|
offsetStr=config.get("samParams.offsetStr", "0,0"),
|
|
352
367
|
extendBP=config.get("samParams.extendBP", []),
|
|
353
368
|
maxInsertSize=config.get("samParams.maxInsertSize", 1000),
|
|
354
|
-
pairedEndMode=config.get("samParams.pairedEndMode", 0),
|
|
355
|
-
inferFragmentLength=config.get("samParams.inferFragmentLength", 0),
|
|
369
|
+
pairedEndMode=config.get("samParams.pairedEndMode", 1 if inputParams.pairedEnd is not None and int(inputParams.pairedEnd) > 0 else 0),
|
|
370
|
+
inferFragmentLength=config.get("samParams.inferFragmentLength", 1 if inputParams.pairedEnd is not None and int(inputParams.pairedEnd) == 0 else 0),
|
|
371
|
+
countEndsOnly=config.get("samParams.countEndsOnly", False),
|
|
356
372
|
),
|
|
357
373
|
"detrendArgs": core.detrendParams(
|
|
358
374
|
detrendWindowLengthBP=config.get(
|
|
@@ -380,7 +396,7 @@ def readConfig(config_path: str) -> Dict[str, Any]:
|
|
|
380
396
|
"matchingParams.minSignalAtMaxima", "q:0.75"
|
|
381
397
|
),
|
|
382
398
|
merge=config.get("matchingParams.merge", True),
|
|
383
|
-
mergeGapBP=config.get("matchingParams.mergeGapBP",
|
|
399
|
+
mergeGapBP=config.get("matchingParams.mergeGapBP", None),
|
|
384
400
|
useScalingFunction=config.get(
|
|
385
401
|
"matchingParams.useScalingFunction", True
|
|
386
402
|
),
|
|
@@ -492,7 +508,7 @@ def main():
|
|
|
492
508
|
"--match-no-merge", action="store_true", dest="matchNoMerge"
|
|
493
509
|
)
|
|
494
510
|
parser.add_argument(
|
|
495
|
-
"--match-merge-gap", type=int, default=
|
|
511
|
+
"--match-merge-gap", type=int, default=None, dest="matchMergeGapBP"
|
|
496
512
|
)
|
|
497
513
|
parser.add_argument(
|
|
498
514
|
"--match-use-wavelet", action="store_true", dest="matchUseWavelet"
|
|
@@ -748,6 +764,7 @@ def main():
|
|
|
748
764
|
inferFragmentLength=samArgs.inferFragmentLength,
|
|
749
765
|
applyAsinh=countingArgs.applyAsinh,
|
|
750
766
|
applyLog=countingArgs.applyLog,
|
|
767
|
+
countEndsOnly=samArgs.countEndsOnly
|
|
751
768
|
)
|
|
752
769
|
if countingArgs.rescaleToTreatmentCoverage:
|
|
753
770
|
finalSF = max(1.0, initialTreatmentScaleFactors[j_])
|
|
@@ -768,12 +785,13 @@ def main():
|
|
|
768
785
|
samArgs.samThreads,
|
|
769
786
|
samArgs.samFlagExclude,
|
|
770
787
|
offsetStr=samArgs.offsetStr,
|
|
771
|
-
extendBP=
|
|
788
|
+
extendBP=extendBP_,
|
|
772
789
|
maxInsertSize=samArgs.maxInsertSize,
|
|
773
790
|
pairedEndMode=samArgs.pairedEndMode,
|
|
774
791
|
inferFragmentLength=samArgs.inferFragmentLength,
|
|
775
792
|
applyAsinh=countingArgs.applyAsinh,
|
|
776
793
|
applyLog=countingArgs.applyLog,
|
|
794
|
+
countEndsOnly=samArgs.countEndsOnly
|
|
777
795
|
)
|
|
778
796
|
sparseMap = None
|
|
779
797
|
if genomeArgs.sparseBedFile and not observationArgs.useALV:
|
consenrich/core.py
CHANGED
|
@@ -194,6 +194,8 @@ class samParams(NamedTuple):
|
|
|
194
194
|
extend reads from 5'. Ignored if `pairedEndMode > 0` or `extendBP` set. This parameter is particularly
|
|
195
195
|
important when targeting broader marks (e.g., ChIP-seq H3K27me3).
|
|
196
196
|
:type inferFragmentLength: int
|
|
197
|
+
:param countEndsOnly: If True, only the 5' ends of reads are counted. Overrides `inferFragmentLength` and `pairedEndMode`.
|
|
198
|
+
:type countEndsOnly: Optional[bool]
|
|
197
199
|
|
|
198
200
|
.. tip::
|
|
199
201
|
|
|
@@ -210,6 +212,7 @@ class samParams(NamedTuple):
|
|
|
210
212
|
maxInsertSize: Optional[int] = 1000
|
|
211
213
|
pairedEndMode: Optional[int] = 0
|
|
212
214
|
inferFragmentLength: Optional[int] = 0
|
|
215
|
+
countEndsOnly: Optional[bool] = False
|
|
213
216
|
|
|
214
217
|
|
|
215
218
|
class detrendParams(NamedTuple):
|
|
@@ -251,6 +254,7 @@ class inputParams(NamedTuple):
|
|
|
251
254
|
|
|
252
255
|
bamFiles: List[str]
|
|
253
256
|
bamFilesControl: Optional[List[str]]
|
|
257
|
+
pairedEnd: Optional[bool]
|
|
254
258
|
|
|
255
259
|
|
|
256
260
|
class genomeParams(NamedTuple):
|
|
@@ -309,9 +313,9 @@ class countingParams(NamedTuple):
|
|
|
309
313
|
|
|
310
314
|
|
|
311
315
|
class matchingParams(NamedTuple):
|
|
312
|
-
r"""Parameters related to the matching algorithm
|
|
316
|
+
r"""Parameters related to the matching algorithm.
|
|
313
317
|
|
|
314
|
-
See :ref:`matching` for
|
|
318
|
+
See :ref:`matching` for an overview of the approach.
|
|
315
319
|
|
|
316
320
|
:param templateNames: A list of str values -- wavelet bases used for matching, e.g., `[haar, db2, sym4]`
|
|
317
321
|
:type templateNames: List[str]
|
|
@@ -327,15 +331,13 @@ class matchingParams(NamedTuple):
|
|
|
327
331
|
:type alpha: float
|
|
328
332
|
:param minMatchLengthBP: Within a window of `minMatchLengthBP` length (bp), relative maxima in
|
|
329
333
|
the signal-template convolution must be greater in value than others to qualify as matches.
|
|
330
|
-
*Set to a negative value to disable this filter*.
|
|
331
334
|
:type minMatchLengthBP: int
|
|
332
|
-
:param minSignalAtMaxima: Secondary significance threshold coupled with `alpha`.
|
|
335
|
+
:param minSignalAtMaxima: Secondary significance threshold coupled with `alpha`. Requires the *signal value*
|
|
333
336
|
at relative maxima in the response sequence to be greater than this threshold. Comparisons are made in log-scale.
|
|
334
337
|
If a `float` value is provided, the minimum signal value must be greater than this (absolute) value. *Set to a
|
|
335
338
|
negative value to disable the threshold*.
|
|
336
|
-
If a `str` value is provided, looks for 'q:quantileValue', e.g., 'q:0.
|
|
339
|
+
If a `str` value is provided, looks for 'q:quantileValue', e.g., 'q:0.90'. The
|
|
337
340
|
threshold is then set to the corresponding quantile of the non-zero signal estimates.
|
|
338
|
-
Defaults to str value 'q:0.75' --- the 75th percentile of signal values.
|
|
339
341
|
:type minSignalAtMaxima: Optional[str | float]
|
|
340
342
|
:param useScalingFunction: If True, use (only) the scaling function to build the matching template.
|
|
341
343
|
If False, use (only) the wavelet function.
|
|
@@ -343,20 +345,21 @@ class matchingParams(NamedTuple):
|
|
|
343
345
|
:param excludeRegionsBedFile: A BED file with regions to exclude from matching
|
|
344
346
|
:type excludeRegionsBedFile: Optional[str]
|
|
345
347
|
|
|
346
|
-
:seealso: :
|
|
348
|
+
:seealso: :func:`cconsenrich.csampleBlockStats`, :ref:`matching`
|
|
349
|
+
|
|
347
350
|
"""
|
|
348
351
|
|
|
349
352
|
templateNames: List[str]
|
|
350
353
|
cascadeLevels: List[int]
|
|
351
354
|
iters: int
|
|
352
355
|
alpha: float
|
|
356
|
+
useScalingFunction: Optional[bool]
|
|
353
357
|
minMatchLengthBP: Optional[int]
|
|
354
358
|
maxNumMatches: Optional[int]
|
|
355
|
-
minSignalAtMaxima: Optional[str | float]
|
|
356
|
-
merge: bool
|
|
357
|
-
mergeGapBP: int
|
|
358
|
-
|
|
359
|
-
excludeRegionsBedFile: Optional[str] = None
|
|
359
|
+
minSignalAtMaxima: Optional[str | float]
|
|
360
|
+
merge: Optional[bool]
|
|
361
|
+
mergeGapBP: Optional[int]
|
|
362
|
+
excludeRegionsBedFile: Optional[str]
|
|
360
363
|
|
|
361
364
|
|
|
362
365
|
def _numIntervals(start: int, end: int, step: int) -> int:
|
|
@@ -518,6 +521,7 @@ def readBamSegments(
|
|
|
518
521
|
maxInsertSize: Optional[int] = 1000,
|
|
519
522
|
pairedEndMode: Optional[int] = 0,
|
|
520
523
|
inferFragmentLength: Optional[int] = 0,
|
|
524
|
+
countEndsOnly: Optional[bool] = False,
|
|
521
525
|
) -> npt.NDArray[np.float32]:
|
|
522
526
|
r"""Calculate tracks of read counts (or a function thereof) for each BAM file.
|
|
523
527
|
|
|
@@ -553,6 +557,9 @@ def readBamSegments(
|
|
|
553
557
|
:type pairedEndMode: int
|
|
554
558
|
:param inferFragmentLength: See :class:`samParams`.
|
|
555
559
|
:type inferFragmentLength: int
|
|
560
|
+
:param countEndsOnly: If True, only the 5' ends of reads are counted. This overrides `inferFragmentLength` and `pairedEndMode`.
|
|
561
|
+
:type countEndsOnly: Optional[bool]
|
|
562
|
+
|
|
556
563
|
"""
|
|
557
564
|
|
|
558
565
|
if len(bamFiles) == 0:
|
|
@@ -567,6 +574,12 @@ def readBamSegments(
|
|
|
567
574
|
offsetStr = ((str(offsetStr) or "0,0").replace(" ", "")).split(",")
|
|
568
575
|
numIntervals = ((end - start) + stepSize - 1) // stepSize
|
|
569
576
|
counts = np.empty((len(bamFiles), numIntervals), dtype=np.float32)
|
|
577
|
+
|
|
578
|
+
if isinstance(countEndsOnly, bool) and countEndsOnly:
|
|
579
|
+
# note: setting this option ignores inferFragmentLength, pairedEndMode
|
|
580
|
+
inferFragmentLength = 0
|
|
581
|
+
pairedEndMode = 0
|
|
582
|
+
|
|
570
583
|
for j, bam in enumerate(bamFiles):
|
|
571
584
|
logger.info(f"Reading {chromosome}: {bam}")
|
|
572
585
|
arr = cconsenrich.creadBamSegment(
|
consenrich/detrorm.py
CHANGED
|
@@ -39,7 +39,7 @@ def getScaleFactor1x(
|
|
|
39
39
|
:type bamFile: str
|
|
40
40
|
:param effectiveGenomeSize: Effective genome size in base pairs. See :func:`consenrich.constants.getEffectiveGenomeSize`.
|
|
41
41
|
:type effectiveGenomeSize: int
|
|
42
|
-
:param readLength:
|
|
42
|
+
:param readLength: read length or fragment length
|
|
43
43
|
:type readLength: int
|
|
44
44
|
:param excludeChroms: List of chromosomes to exclude from the analysis.
|
|
45
45
|
:type excludeChroms: List[str]
|
|
@@ -125,9 +125,9 @@ def getPairScaleFactors(
|
|
|
125
125
|
:type effectiveGenomeSizeA: int
|
|
126
126
|
:param effectiveGenomeSizeB: Effective genome size for the second BAM file.
|
|
127
127
|
:type effectiveGenomeSizeB: int
|
|
128
|
-
:param readLengthA:
|
|
128
|
+
:param readLengthA: read length or fragment length for the first BAM file.
|
|
129
129
|
:type readLengthA: int
|
|
130
|
-
:param readLengthB:
|
|
130
|
+
:param readLengthB: read length or fragment length for the second BAM file.
|
|
131
131
|
:type readLengthB: int
|
|
132
132
|
:param excludeChroms: List of chromosomes to exclude from the analysis.
|
|
133
133
|
:type excludeChroms: List[str]
|
|
@@ -167,9 +167,18 @@ def getPairScaleFactors(
|
|
|
167
167
|
else:
|
|
168
168
|
scaleFactorA *= coverageB / coverageA
|
|
169
169
|
scaleFactorB = 1.0
|
|
170
|
+
|
|
170
171
|
logger.info(
|
|
171
172
|
f"Final scale factors: {bamFileA}: {scaleFactorA}, {bamFileB}: {scaleFactorB}"
|
|
172
173
|
)
|
|
174
|
+
|
|
175
|
+
ratio = max(scaleFactorA, scaleFactorB) / min(scaleFactorA, scaleFactorB)
|
|
176
|
+
if ratio > 5.0:
|
|
177
|
+
logger.warning(
|
|
178
|
+
f"Scale factors differ > 5x....\n"
|
|
179
|
+
f"\n\tAre effective genome sizes {effectiveGenomeSizeA} and {effectiveGenomeSizeB} correct?"
|
|
180
|
+
f"\n\tAre read/fragment lengths {readLengthA},{readLengthB} correct?"
|
|
181
|
+
)
|
|
173
182
|
return scaleFactorA, scaleFactorB
|
|
174
183
|
|
|
175
184
|
|
consenrich/matching.py
CHANGED
|
@@ -53,7 +53,7 @@ def matchExistingBedGraph(
|
|
|
53
53
|
recenterAtPointSource: bool = True,
|
|
54
54
|
useScalingFunction: bool = True,
|
|
55
55
|
excludeRegionsBedFile: Optional[str] = None,
|
|
56
|
-
mergeGapBP: int =
|
|
56
|
+
mergeGapBP: Optional[int] = None,
|
|
57
57
|
merge: bool = True,
|
|
58
58
|
weights: Optional[npt.NDArray[np.float64]] = None,
|
|
59
59
|
randSeed: int = 42,
|
|
@@ -74,6 +74,9 @@ def matchExistingBedGraph(
|
|
|
74
74
|
f"Please use a suffix '.bedGraph' for `bedGraphFile`, got: {bedGraphFile}"
|
|
75
75
|
)
|
|
76
76
|
|
|
77
|
+
if mergeGapBP is None:
|
|
78
|
+
mergeGapBP = (minMatchLengthBP // 2) + 1 if minMatchLengthBP is not None else 75
|
|
79
|
+
|
|
77
80
|
allowedTemplates = [
|
|
78
81
|
x for x in pw.wavelist(kind="discrete") if "bio" not in x
|
|
79
82
|
]
|
|
@@ -210,8 +213,6 @@ def matchWavelet(
|
|
|
210
213
|
) -> pd.DataFrame:
|
|
211
214
|
r"""Detect structured peaks by cross-correlating Consenrich tracks with wavelet- or scaling-function templates.
|
|
212
215
|
|
|
213
|
-
See :ref:`matching` for an overview of the approach.
|
|
214
|
-
|
|
215
216
|
:param chromosome: Chromosome name for the input intervals and values.
|
|
216
217
|
:type chromosome: str
|
|
217
218
|
:param values: 'Consensus' signal estimates derived from multiple samples, e.g., from Consenrich.
|
|
@@ -230,7 +231,6 @@ def matchWavelet(
|
|
|
230
231
|
:type alpha: float
|
|
231
232
|
:param minMatchLengthBP: Within a window of `minMatchLengthBP` length (bp), relative maxima in
|
|
232
233
|
the signal-template convolution must be greater in value than others to qualify as matches.
|
|
233
|
-
*Set to a negative value to disable this filter*.
|
|
234
234
|
:type minMatchLengthBP: int
|
|
235
235
|
:param minSignalAtMaxima: Secondary significance threshold coupled with `alpha`. Require the *signal value*
|
|
236
236
|
at relative maxima in the response sequence to be greater than this threshold. Comparisons are made in log-scale.
|
|
@@ -238,7 +238,7 @@ def matchWavelet(
|
|
|
238
238
|
negative value to disable the threshold*.
|
|
239
239
|
If a `str` value is provided, looks for 'q:quantileValue', e.g., 'q:0.75'. The
|
|
240
240
|
threshold is then set to the corresponding quantile of the non-zero signal estimates.
|
|
241
|
-
Defaults to str value 'q:0.75' --- the
|
|
241
|
+
Defaults to str value 'q:0.75' --- the 90th percentile of signal values.
|
|
242
242
|
:type minSignalAtMaxima: Optional[str | float]
|
|
243
243
|
:param useScalingFunction: If True, use (only) the scaling function to build the matching template.
|
|
244
244
|
If False, use (only) the wavelet function.
|
consenrich/misc_util.py
CHANGED
|
@@ -62,6 +62,35 @@ def checkBamFile(bamFile: str) -> bool:
|
|
|
62
62
|
return has_index
|
|
63
63
|
|
|
64
64
|
|
|
65
|
+
def bamsArePairedEnd(bamFiles: List[str], maxReads: int = 1_000) -> List[bool]:
|
|
66
|
+
"""
|
|
67
|
+
Take a list of BAM files, return a list (bool) indicating whether
|
|
68
|
+
each BAM contains paired-end reads (True) or only single-end reads (False).
|
|
69
|
+
|
|
70
|
+
:param bamFiles: List of paths to BAM files
|
|
71
|
+
:type bamFiles: List[str]
|
|
72
|
+
:param maxReads: Maximum number of reads to check in each BAM file
|
|
73
|
+
:type maxReads: int
|
|
74
|
+
:return: List of booleans corresponding to each BAM file
|
|
75
|
+
:rtype: List[bool]
|
|
76
|
+
"""
|
|
77
|
+
|
|
78
|
+
results = []
|
|
79
|
+
for path in bamFiles:
|
|
80
|
+
paired = False
|
|
81
|
+
seen = 0
|
|
82
|
+
with sam.AlignmentFile(path, "rb") as bam:
|
|
83
|
+
for rec in bam.fetch(until_eof=True):
|
|
84
|
+
if rec.is_paired:
|
|
85
|
+
paired = True
|
|
86
|
+
break
|
|
87
|
+
seen += 1
|
|
88
|
+
if maxReads is not None and seen >= maxReads:
|
|
89
|
+
break
|
|
90
|
+
results.append(paired)
|
|
91
|
+
return results
|
|
92
|
+
|
|
93
|
+
|
|
65
94
|
def getChromSizesDict(
|
|
66
95
|
sizes_file: str,
|
|
67
96
|
excludeRegex: str = r"^chr[A-Za-z0-9]+$",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: consenrich
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.7.0b1
|
|
4
4
|
Summary: Genome-wide estimation of signals hidden in noisy multi-sample HTS datasets
|
|
5
5
|
Author-email: "Nolan H. Hamilton" <nolan.hamilton@unc.edu>
|
|
6
6
|
Requires-Python: >=3.11
|
|
@@ -43,8 +43,8 @@ Consenrich is an adaptive linear state estimator that yields genome-wide, uncert
|
|
|
43
43
|
|
|
44
44
|
Special emphasis is placed on computational efficiency, model interpretability, and practical utility for downstream tasks that require well-resolved genome-wide signal estimates and uncertainty quantification across samples, such as:
|
|
45
45
|
|
|
46
|
-
* Consensus detection of open chromatin regions, TF
|
|
47
|
-
* Candidate
|
|
46
|
+
* Consensus detection of open chromatin regions, TF binding, histone modification, etc.
|
|
47
|
+
* Candidate prioritization for differential analyses, functional validation, integrative modeling, etc.
|
|
48
48
|
|
|
49
49
|
[**See the Documentation**](https://nolan-h-hamilton.github.io/Consenrich/) for usage examples, installation details, configuration options, and an API reference.
|
|
50
50
|
|
|
@@ -1,19 +1,13 @@
|
|
|
1
|
-
consenrich
|
|
2
|
-
consenrich
|
|
3
|
-
consenrich-0.6.3b1.dist-info/entry_points.txt,sha256=EXIGcSTyc16vtPkfHJNs-aaSVoq6Pn5Ev5GeW1JCYn0,58
|
|
4
|
-
consenrich-0.6.3b1.dist-info/top_level.txt,sha256=jsWw8GC11dOKPcdULXk-ggW357CO-vTNW6ssryqa21Q,11
|
|
5
|
-
consenrich-0.6.3b1.dist-info/METADATA,sha256=MAf49unrS7M1GZ0pU2s5TJAk2ZYJ3pJ6nfxlUXiMFm8,2563
|
|
6
|
-
consenrich-0.6.3b1.dist-info/licenses/LICENSE,sha256=w09-aT0LFrH_cL3ShJWz-xusRpbThwTpdmBD08tc8EI,1074
|
|
7
|
-
consenrich/detrorm.py,sha256=aJf4uZy2qgDIFfkOpTPJw2akVZ6H8-K64UZ63C6aZBw,8508
|
|
8
|
-
consenrich/misc_util.py,sha256=SoUCgiON_9dbRbrZQoN2NlitDn6fhOgxe4hBYmWvZaI,2726
|
|
1
|
+
consenrich/detrorm.py,sha256=KeAgkPkcvFa1-DW0PKlyf64qy7m19KMnGHe6xE60SDw,8876
|
|
2
|
+
consenrich/misc_util.py,sha256=OIjYvwbkW2SbTNhqFO1LnVFuHJK3syU2M1Vzo2SeLc4,3675
|
|
9
3
|
consenrich/constants.py,sha256=5YdNjeyeR1iGbYJXACpxLFS2xVBoyN9bqC7InXPdqKw,5063
|
|
10
4
|
consenrich/__init__.py,sha256=lg02bx0LdXDIQ7Q-tky01xo0tOXYTcJeXqaCXNSFFyA,320
|
|
11
|
-
consenrich/core.py,sha256=
|
|
12
|
-
consenrich/matching.py,sha256
|
|
13
|
-
consenrich/consenrich.py,sha256=
|
|
14
|
-
consenrich/cconsenrich.cpython-311-darwin.so,sha256=
|
|
5
|
+
consenrich/core.py,sha256=jm7g_qfdL5dktPluIKUcdYrxXGzbjPMjYEkL9md43J0,52760
|
|
6
|
+
consenrich/matching.py,sha256=-r88HoXN-1r_PXK98nvf2KYox7goHRHFrqYdWXGPhms,27738
|
|
7
|
+
consenrich/consenrich.py,sha256=E2OoBbw7qTRYkikwogbZNecihuZvzlZFaHVWfxu55E8,36469
|
|
8
|
+
consenrich/cconsenrich.cpython-311-darwin.so,sha256=XmIiLr60cY_D5bWRS4vmn_Cqwj93vR1UEyiTWmsIGGw,392816
|
|
15
9
|
consenrich/cconsenrich.pyx,sha256=Wht-d6sUJ-zma0rNHx4DcAIsooFaSR_BdftjJxCLRv8,32604
|
|
16
|
-
consenrich/cconsenrich.c,sha256=
|
|
10
|
+
consenrich/cconsenrich.c,sha256=MnuLySBFOhWr5b0ZrrcZYES2qmuj0bgG_AzsnC4uGVI,2052512
|
|
17
11
|
consenrich/data/hg19.sizes,sha256=ewnSktA_Ps1BoiU3yeLNaJxJO-taq3uKE4-6JUnly1o,365
|
|
18
12
|
consenrich/data/mm10.sizes,sha256=sgHMQGBr6yEm4hKqeN3auQJdlMX4ZdqDQ23EdDmWedU,320
|
|
19
13
|
consenrich/data/hg38_blacklist.bed,sha256=zbamE4bP5JJT-ivyDp61LjvaI00Wo-vd0oKtFxy_u4E,14940
|
|
@@ -35,3 +29,9 @@ consenrich/data/mm10_sparse.bed,sha256=ukvVuheKf4gxzAzXUbKZ1sewsmP-WOsUz60ySENkm
|
|
|
35
29
|
consenrich/data/ce10.sizes,sha256=1crlJDro3lhUpECU_2g9eVIUFM27mw0uMzWqtdmThgA,88
|
|
36
30
|
consenrich/data/dm6.sizes,sha256=0MNGeHSdAwu-Ym_ApUlHoDybDZDNyqYhbVbR_srZiEY,100
|
|
37
31
|
consenrich/data/dm6_sparse.bed,sha256=H9wvrZs2ACdtUbDZhLXEEJ4xL5OpKOxhU_Pqf2EyDOM,445849
|
|
32
|
+
consenrich-0.7.0b1.dist-info/RECORD,,
|
|
33
|
+
consenrich-0.7.0b1.dist-info/WHEEL,sha256=sunMa2yiYbrNLGeMVDqEA0ayyJbHlex7SCn1TZrEq60,136
|
|
34
|
+
consenrich-0.7.0b1.dist-info/entry_points.txt,sha256=EXIGcSTyc16vtPkfHJNs-aaSVoq6Pn5Ev5GeW1JCYn0,58
|
|
35
|
+
consenrich-0.7.0b1.dist-info/top_level.txt,sha256=jsWw8GC11dOKPcdULXk-ggW357CO-vTNW6ssryqa21Q,11
|
|
36
|
+
consenrich-0.7.0b1.dist-info/METADATA,sha256=AxzGS0IcXuR8QTnyRdIzCsR3xp5ivWfVhDtA9ZtctO0,2539
|
|
37
|
+
consenrich-0.7.0b1.dist-info/licenses/LICENSE,sha256=w09-aT0LFrH_cL3ShJWz-xusRpbThwTpdmBD08tc8EI,1074
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|