geney 1.3.74__py2.py3-none-any.whl → 1.3.75__py2.py3-none-any.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 geney might be problematic. Click here for more details.
- geney/Gene.py +5 -2
- geney/oncosplice.py +178 -9
- geney/spliceai_utils.py +19 -15
- geney/splicing_utils.py +15 -16
- geney/tcga_utils.py +0 -1
- {geney-1.3.74.dist-info → geney-1.3.75.dist-info}/METADATA +1 -1
- {geney-1.3.74.dist-info → geney-1.3.75.dist-info}/RECORD +9 -9
- {geney-1.3.74.dist-info → geney-1.3.75.dist-info}/WHEEL +0 -0
- {geney-1.3.74.dist-info → geney-1.3.75.dist-info}/top_level.txt +0 -0
geney/Gene.py
CHANGED
|
@@ -90,7 +90,9 @@ class Gene:
|
|
|
90
90
|
# Find gene data files in the configured organism MRNA path
|
|
91
91
|
gene_files = list((config[organism]['MRNA_PATH'] / 'protein_coding').glob(f'*_{gene_name}.pkl'))
|
|
92
92
|
if not gene_files:
|
|
93
|
-
|
|
93
|
+
print(f"No files available for gene '{gene_name}'.")
|
|
94
|
+
return None
|
|
95
|
+
# raise FileNotFoundError(f"No files available for gene '{gene_name}'.")
|
|
94
96
|
|
|
95
97
|
# Load gene data from the first matching file
|
|
96
98
|
data = unload_pickle(gene_files[0])
|
|
@@ -148,7 +150,8 @@ class Gene:
|
|
|
148
150
|
return None #Transcript()
|
|
149
151
|
|
|
150
152
|
if tid not in self.transcripts:
|
|
151
|
-
|
|
153
|
+
return None
|
|
154
|
+
# raise AttributeError(f"Transcript '{tid}' not found in gene '{self.gene_name}'.")
|
|
152
155
|
|
|
153
156
|
return Transcript(self.transcripts[tid], organism=self.organism)
|
|
154
157
|
|
geney/oncosplice.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from Bio import pairwise2
|
|
2
2
|
import re
|
|
3
3
|
import hashlib
|
|
4
|
+
from datetime import datetime
|
|
4
5
|
from tqdm import tqdm
|
|
5
6
|
import pandas as pd
|
|
6
7
|
import numpy as np
|
|
@@ -282,6 +283,16 @@ def summarize_missplicing_event(pes, pir, es, ne, ir):
|
|
|
282
283
|
else:
|
|
283
284
|
return '-'
|
|
284
285
|
|
|
286
|
+
def missense_effect(r, v):
|
|
287
|
+
if len(r.protein) != len(v.protein):
|
|
288
|
+
return '', ''
|
|
289
|
+
|
|
290
|
+
for i, (x, y) in enumerate(zip(r.protein, v.protein)):
|
|
291
|
+
if x != y:
|
|
292
|
+
aa_change = f'{x}>{y}'
|
|
293
|
+
codon_change = f'{r.orf[i*3:i*3+3]}>{v.orf[i*3:i*3+3]}'
|
|
294
|
+
return aa_change, codon_change
|
|
295
|
+
return '', ''
|
|
285
296
|
|
|
286
297
|
# Annotating
|
|
287
298
|
def OncospliceAnnotator(reference_transcript, variant_transcript, mut, ref_attributes=[], var_attributes=[]):
|
|
@@ -301,12 +312,15 @@ def OncospliceAnnotator(reference_transcript, variant_transcript, mut, ref_attri
|
|
|
301
312
|
report['affected_intron'] = affected_intron
|
|
302
313
|
report['mutation_distance_from_5'] = distance_from_5
|
|
303
314
|
report['mutation_distance_from_3'] = distance_from_3
|
|
315
|
+
aa_c, c_c = missense_effect(reference_transcript, variant_transcript)
|
|
316
|
+
report['missense_effect'] = aa_c
|
|
317
|
+
report['codon_change'] = c_c
|
|
304
318
|
return report
|
|
305
319
|
|
|
306
320
|
|
|
307
|
-
def oncosplice(mut_id, splicing_threshold=0.5, protein_coding=True,
|
|
321
|
+
def oncosplice(mut_id, splicing_threshold=0.5, protein_coding=True, primary_transcript=False,
|
|
308
322
|
window_length=13, organism='hg38', splicing_engine=None, splicing_db=None, verbose=False,
|
|
309
|
-
tis_engine=None,
|
|
323
|
+
tis_engine=None, target_transcripts=None):
|
|
310
324
|
|
|
311
325
|
gene = Gene.from_file(mut_id.split(':')[0], organism=organism)
|
|
312
326
|
reference_gene_proteins = {
|
|
@@ -315,7 +329,7 @@ def oncosplice(mut_id, splicing_threshold=0.5, protein_coding=True, cons_require
|
|
|
315
329
|
|
|
316
330
|
mutations = [MutSeqMat.from_mutid(m) for m in mut_id.split('|')]
|
|
317
331
|
if gene.rev:
|
|
318
|
-
mutations = [m.reverse_complement(
|
|
332
|
+
mutations = [m.reverse_complement() for m in mutations[::-1]]
|
|
319
333
|
|
|
320
334
|
results = []
|
|
321
335
|
for reference_transcript in tqdm(gene, desc=f'Processing {mut_id}...'):
|
|
@@ -341,9 +355,6 @@ def oncosplice(mut_id, splicing_threshold=0.5, protein_coding=True, cons_require
|
|
|
341
355
|
mutated_transcript.mutate(mutation, inplace=True)
|
|
342
356
|
|
|
343
357
|
reference_transcript.generate_mature_mrna().generate_protein()
|
|
344
|
-
# if ('*' in reference_transcript.protein[:-1]):
|
|
345
|
-
# print(f"> Errors in reference transcript {reference_transcript.transcript_id}")
|
|
346
|
-
# continue
|
|
347
358
|
|
|
348
359
|
if len(reference_transcript.protein) < window_length:
|
|
349
360
|
print(f"> Window length issue {reference_transcript.transcript_id}")
|
|
@@ -418,15 +429,173 @@ def oncosplice(mut_id, splicing_threshold=0.5, protein_coding=True, cons_require
|
|
|
418
429
|
results.append(report)
|
|
419
430
|
|
|
420
431
|
if len(results) == 0:
|
|
421
|
-
print("Nothing...")
|
|
422
|
-
return
|
|
432
|
+
# print("Nothing...")
|
|
433
|
+
return pd.DataFrame()
|
|
423
434
|
|
|
424
435
|
return pd.DataFrame(results)[
|
|
425
436
|
['mut_id', 'transcript_id', 'isoform_id', 'primary_transcript', 'missplicing', 'full_missplicing',
|
|
426
437
|
'exon_changes', 'splicing_codes', 'affected_exon', 'affected_intron', 'mutation_distance_from_5',
|
|
427
|
-
'mutation_distance_from_3', 'reference_resemblance', 'oncosplice_score', 'percentile',
|
|
438
|
+
'mutation_distance_from_3', 'missense_effect', 'codon_change', 'reference_resemblance', 'oncosplice_score', 'percentile',
|
|
428
439
|
'isoform_prevalence', 'reference_protein', 'variant_protein', 'splicing_engine']]
|
|
429
440
|
|
|
441
|
+
|
|
442
|
+
def process_splicing_path(new_boundaries, reference_transcript, mutated_transcript,
|
|
443
|
+
current_mutations, missplicing, mut_id, transcript_id,
|
|
444
|
+
splicing_engine, window_length, start_time):
|
|
445
|
+
"""
|
|
446
|
+
Processes a single alternative splicing path and returns an annotation report.
|
|
447
|
+
"""
|
|
448
|
+
# Update acceptors and donors
|
|
449
|
+
mutated_transcript.acceptors = new_boundaries['acceptors']
|
|
450
|
+
mutated_transcript.donors = new_boundaries['donors']
|
|
451
|
+
mutated_transcript.generate_mature_mrna().generate_protein()
|
|
452
|
+
|
|
453
|
+
# Align reference and mutated proteins
|
|
454
|
+
alignment = get_logical_alignment(reference_transcript.protein, mutated_transcript.protein)
|
|
455
|
+
deleted, inserted = find_indels_with_mismatches_as_deletions(alignment.seqA, alignment.seqB)
|
|
456
|
+
modified_positions = find_modified_positions(len(reference_transcript.protein), deleted, inserted)
|
|
457
|
+
|
|
458
|
+
# Compute conservation impact
|
|
459
|
+
temp_cons = np.convolve(reference_transcript.cons_vector * modified_positions,
|
|
460
|
+
np.ones(window_length)) / window_length
|
|
461
|
+
affected_cons_scores = max(temp_cons)
|
|
462
|
+
|
|
463
|
+
# Compute percentile of conservation change
|
|
464
|
+
sorted_cons = sorted(reference_transcript.cons_vector)
|
|
465
|
+
percentile = (
|
|
466
|
+
sorted_cons.index(next(x for x in sorted_cons if x >= affected_cons_scores)) / len(sorted_cons)
|
|
467
|
+
)
|
|
468
|
+
|
|
469
|
+
# Generate annotation report
|
|
470
|
+
report = OncospliceAnnotator(reference_transcript, mutated_transcript, current_mutations[0])
|
|
471
|
+
report.update({
|
|
472
|
+
'mut_id': mut_id,
|
|
473
|
+
'transcript_id': transcript_id,
|
|
474
|
+
'splicing_engine': splicing_engine if splicing_engine is not None else 'None',
|
|
475
|
+
'oncosplice_score': affected_cons_scores,
|
|
476
|
+
'percentile': percentile,
|
|
477
|
+
'isoform_id': short_hash_of_list(mutated_transcript.exons),
|
|
478
|
+
'isoform_prevalence': new_boundaries['path_weight'],
|
|
479
|
+
'full_missplicing': missplicing.aberrant_splicing,
|
|
480
|
+
'missplicing': missplicing.max_delta,
|
|
481
|
+
'execution_time': start_time,
|
|
482
|
+
'status': 'Success'
|
|
483
|
+
})
|
|
484
|
+
return report
|
|
485
|
+
|
|
486
|
+
|
|
487
|
+
def oncosplice_df(row, splicing_threshold=0.5, window_length=13,
|
|
488
|
+
organism='hg38', splicing_engine='spliceai'):
|
|
489
|
+
"""
|
|
490
|
+
Process a given mutation-transcript pair to analyze alternative splicing events
|
|
491
|
+
and their oncogenic potential.
|
|
492
|
+
|
|
493
|
+
Ensures that every `mut_id` and `transcript_id` is included in the output,
|
|
494
|
+
even if processing fails, with an appropriate failure status.
|
|
495
|
+
|
|
496
|
+
Parameters:
|
|
497
|
+
- row (pd.Series): A row from a DataFrame containing `mut_id` and `transcript_id`
|
|
498
|
+
- splicing_threshold (float): The threshold for splicing disruption detection
|
|
499
|
+
- window_length (int): The window size for conservation analysis
|
|
500
|
+
- organism (str): Genome assembly version
|
|
501
|
+
- splicing_engine (str or None): The splicing prediction engine to use
|
|
502
|
+
|
|
503
|
+
Returns:
|
|
504
|
+
- pd.DataFrame: Processed results of the oncosplice analysis
|
|
505
|
+
- Run "pd.concat(applied_function_output.to_list(), ignore_index=True)" to build result dataframe
|
|
506
|
+
"""
|
|
507
|
+
|
|
508
|
+
start_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S") # Log function start time
|
|
509
|
+
mut_id, transcript_id = row.mut_id, row.transcript_id
|
|
510
|
+
|
|
511
|
+
# Default response template (to ensure all IDs are included)
|
|
512
|
+
base_result = {
|
|
513
|
+
'mut_id': mut_id,
|
|
514
|
+
'transcript_id': transcript_id,
|
|
515
|
+
'status': 'Success', # Will be updated if an issue occurs
|
|
516
|
+
'execution_time': start_time
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
# Load gene and transcript
|
|
520
|
+
gene = Gene.from_file(mut_id.split(':')[0], organism=organism)
|
|
521
|
+
if gene is None:
|
|
522
|
+
base_result['status'] = 'Gene not found'
|
|
523
|
+
return pd.DataFrame([base_result])
|
|
524
|
+
|
|
525
|
+
mutations = [MutSeqMat.from_mutid(m) for m in mut_id.split('|')]
|
|
526
|
+
reference_transcript = gene.transcript(transcript_id)
|
|
527
|
+
|
|
528
|
+
if reference_transcript is None:
|
|
529
|
+
base_result['status'] = 'Transcript not found'
|
|
530
|
+
return pd.DataFrame([base_result])
|
|
531
|
+
|
|
532
|
+
# Generate the reference transcript
|
|
533
|
+
reference_transcript = (
|
|
534
|
+
reference_transcript.generate_pre_mrna()
|
|
535
|
+
.generate_mature_mrna()
|
|
536
|
+
.generate_protein()
|
|
537
|
+
)
|
|
538
|
+
|
|
539
|
+
# Skip non-protein-coding transcripts
|
|
540
|
+
if reference_transcript.transcript_biotype != 'protein_coding':
|
|
541
|
+
base_result['status'] = 'Non-protein-coding transcript'
|
|
542
|
+
return pd.DataFrame([base_result])
|
|
543
|
+
|
|
544
|
+
# Filter mutations relevant to this transcript
|
|
545
|
+
current_mutations = [m for m in mutations if m in reference_transcript]
|
|
546
|
+
if not current_mutations:
|
|
547
|
+
base_result['status'] = 'No relevant mutations'
|
|
548
|
+
return pd.DataFrame([base_result])
|
|
549
|
+
|
|
550
|
+
# Define mutation center
|
|
551
|
+
center = np.mean([m.indices[0] for m in current_mutations]) // 1
|
|
552
|
+
|
|
553
|
+
# Clone and apply mutations
|
|
554
|
+
mutated_transcript = reference_transcript.clone()
|
|
555
|
+
for mutation in current_mutations:
|
|
556
|
+
mutated_transcript.mutate(mutation, inplace=True)
|
|
557
|
+
|
|
558
|
+
# Adjust window length if necessary
|
|
559
|
+
window_length = min(window_length, len(reference_transcript.protein))
|
|
560
|
+
|
|
561
|
+
# Transform conservation vector
|
|
562
|
+
reference_transcript.cons_vector = transform_conservation_vector(
|
|
563
|
+
reference_transcript.cons_vector, window=window_length
|
|
564
|
+
)
|
|
565
|
+
|
|
566
|
+
# Identify missplicing events
|
|
567
|
+
if splicing_engine is None:
|
|
568
|
+
missplicing = Missplicing()
|
|
569
|
+
else:
|
|
570
|
+
missplicing = find_transcript_missplicing_seqs(
|
|
571
|
+
reference_transcript.pre_mrna.get_context(center, context=7500, padding='N'),
|
|
572
|
+
mutated_transcript.pre_mrna.get_context(center, context=7500, padding='N'),
|
|
573
|
+
reference_transcript.donors, reference_transcript.acceptors,
|
|
574
|
+
threshold=splicing_threshold, engine=splicing_engine
|
|
575
|
+
)
|
|
576
|
+
|
|
577
|
+
# Generate alternative splicing paths
|
|
578
|
+
alternative_splicing_paths = develop_aberrant_splicing(reference_transcript, missplicing)
|
|
579
|
+
results = [
|
|
580
|
+
process_splicing_path(new_boundaries, reference_transcript, mutated_transcript,
|
|
581
|
+
current_mutations, missplicing, mut_id, transcript_id,
|
|
582
|
+
splicing_engine, window_length, start_time)
|
|
583
|
+
for new_boundaries in alternative_splicing_paths
|
|
584
|
+
]
|
|
585
|
+
|
|
586
|
+
# Return results as DataFrame
|
|
587
|
+
if not results:
|
|
588
|
+
base_result['status'] = 'No alternative splicing detected'
|
|
589
|
+
return pd.DataFrame([base_result])
|
|
590
|
+
|
|
591
|
+
return pd.DataFrame(results)[
|
|
592
|
+
['mut_id', 'transcript_id', 'isoform_id', 'primary_transcript', 'missplicing', 'full_missplicing',
|
|
593
|
+
'exon_changes', 'splicing_codes', 'affected_exon', 'affected_intron', 'mutation_distance_from_5',
|
|
594
|
+
'mutation_distance_from_3', 'missense_effect', 'codon_change', 'oncosplice_score', 'percentile',
|
|
595
|
+
'isoform_prevalence', 'reference_protein', 'variant_protein', 'splicing_engine', 'execution_time', 'status']
|
|
596
|
+
]
|
|
597
|
+
|
|
598
|
+
|
|
430
599
|
#
|
|
431
600
|
# import asyncio
|
|
432
601
|
# async def oncosplice_prototype(mut_id, splicing_threshold=0.5, protein_coding=True, primary_transcript=False,
|
geney/spliceai_utils.py
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
|
|
2
1
|
#### SpliceAI Modules
|
|
3
2
|
from keras.models import load_model
|
|
4
|
-
# from pkg_resources import resource_filename
|
|
5
3
|
from importlib import resources
|
|
6
|
-
# from spliceai.utils import one_hot_encode
|
|
7
4
|
import numpy as np
|
|
8
5
|
import tensorflow as tf
|
|
9
6
|
import sys
|
|
@@ -17,18 +14,25 @@ else:
|
|
|
17
14
|
# tf.config.threading.set_intra_op_parallelism_threads(1)
|
|
18
15
|
# tf.config.threading.set_inter_op_parallelism_threads(1)
|
|
19
16
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
17
|
+
# List the model filenames relative to the spliceai package.
|
|
18
|
+
model_filenames = [f"models/spliceai{i}.h5" for i in range(1, 6)]
|
|
19
|
+
|
|
20
|
+
# Load each model using the package resources.
|
|
21
|
+
sai_models = [load_model(resources.files("spliceai").joinpath(filename))
|
|
22
|
+
for filename in model_filenames]
|
|
23
|
+
|
|
24
|
+
# if sys.platform == 'darwin':
|
|
25
|
+
# sai_paths = ('models/spliceai{}.h5'.format(x) for x in range(1, 6))
|
|
26
|
+
# # sai_models = [load_model(resource_filename('spliceai', x)) for x in sai_paths]
|
|
27
|
+
# sai_models = [load_model(resources.files('spliceai').joinpath(f)) for f in sai_paths]
|
|
28
|
+
# else:
|
|
29
|
+
# sai_paths = ['/tamir2/nicolaslynn/home/miniconda3/lib/python3.10/site-packages/spliceai/models/spliceai1.h5',
|
|
30
|
+
# '/tamir2/nicolaslynn/home/miniconda3/lib/python3.10/site-packages/spliceai/models/spliceai2.h5',
|
|
31
|
+
# '/tamir2/nicolaslynn/home/miniconda3/lib/python3.10/site-packages/spliceai/models/spliceai3.h5',
|
|
32
|
+
# '/tamir2/nicolaslynn/home/miniconda3/lib/python3.10/site-packages/spliceai/models/spliceai4.h5',
|
|
33
|
+
# '/tamir2/nicolaslynn/home/miniconda3/lib/python3.10/site-packages/spliceai/models/spliceai5.h5']
|
|
34
|
+
|
|
35
|
+
# sai_models = [load_model(f) for f in sai_paths]
|
|
32
36
|
|
|
33
37
|
|
|
34
38
|
def one_hot_encode(seq):
|
geney/splicing_utils.py
CHANGED
|
@@ -221,35 +221,34 @@ def find_transcript_splicing(transcript, engine: str = 'spliceai') -> Tuple[Dict
|
|
|
221
221
|
return donor_probs, acceptor_probs
|
|
222
222
|
|
|
223
223
|
|
|
224
|
-
def
|
|
225
|
-
|
|
226
|
-
if transcript not in gene.transcripts:
|
|
227
|
-
return np.nan
|
|
228
|
-
|
|
229
|
-
reference_transcript = gene.transcript(transcript) if transcript is not None else gene.transcript()
|
|
224
|
+
def missplicing_df(mut_id, **kwargs):
|
|
225
|
+
return find_transcript_missplicing(mut_id, **kwargs).max_delta
|
|
230
226
|
|
|
231
|
-
if db is not None:
|
|
232
|
-
cached_data = db.get_mutation_data(engine, gene.gene_name, mut_id, reference_transcript.transcript_id)
|
|
233
|
-
if cached_data and not force_recompute:
|
|
234
|
-
return Missplicing(cached_data)
|
|
235
227
|
|
|
228
|
+
def find_transcript_missplicing(mut_id, transcript=None, threshold=0.5, engine='spliceai', organism='hg38'):
|
|
229
|
+
gene = Gene.from_file(mut_id.split(':')[0], organism=organism)
|
|
230
|
+
reference_transcript = gene.transcript(transcript) if transcript is not None else gene.transcript()
|
|
236
231
|
if reference_transcript is None:
|
|
237
|
-
return Missplicing(
|
|
232
|
+
return Missplicing()
|
|
233
|
+
#
|
|
234
|
+
# if db is not None:
|
|
235
|
+
# cached_data = db.get_mutation_data(engine, gene.gene_name, mut_id, reference_transcript.transcript_id)
|
|
236
|
+
# if cached_data and not force_recompute:
|
|
237
|
+
# return Missplicing(cached_data)
|
|
238
238
|
|
|
239
239
|
variant_transcript = reference_transcript.clone()
|
|
240
240
|
mutations = [MutSeqMat.from_mutid(m) for m in mut_id.split('|')]
|
|
241
241
|
mutations = [m for m in mutations if m in reference_transcript]
|
|
242
242
|
if len(mutations) == 0:
|
|
243
|
-
return Missplicing(
|
|
243
|
+
return Missplicing()
|
|
244
244
|
|
|
245
245
|
center = int(np.mean([m.indices[0] for m in mutations]))
|
|
246
246
|
for mutation in mutations:
|
|
247
247
|
variant_transcript.mutate(mutation, inplace=True)
|
|
248
248
|
|
|
249
249
|
missplicing = find_transcript_missplicing_seqs(reference_transcript.pre_mrna.get_context(center, 7500, padding='N'), variant_transcript.pre_mrna.get_context(center, 7500, padding='N'), reference_transcript.donors, reference_transcript.acceptors, threshold=threshold, engine=engine)
|
|
250
|
-
if db is not None:
|
|
251
|
-
|
|
252
|
-
|
|
250
|
+
# if db is not None:
|
|
251
|
+
# db.store_mutation_data(engine, gene.gene_name, mut_id, reference_transcript.transcript_id, missplicing.missplicing)
|
|
253
252
|
return missplicing
|
|
254
253
|
|
|
255
254
|
# from functools import reduce
|
|
@@ -656,7 +655,7 @@ def process_pairwise_epistasis_explicit(mid, engine='spliceai'):
|
|
|
656
655
|
|
|
657
656
|
|
|
658
657
|
class Missplicing:
|
|
659
|
-
def __init__(self, splicing_dict=
|
|
658
|
+
def __init__(self, splicing_dict={'missed_acceptors': {}, 'missed_donors': {}, 'discovered_acceptors': {}, 'discovered_donors': {}}, threshold=0.5):
|
|
660
659
|
"""
|
|
661
660
|
Initialize a Missplicing object.
|
|
662
661
|
|
geney/tcga_utils.py
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
geney/Fasta_segment.py,sha256=99HxNGNh_MfdVW6hhtlb1vOn7eSmT7oFoEfHDFMxG8w,11275
|
|
2
|
-
geney/Gene.py,sha256=
|
|
2
|
+
geney/Gene.py,sha256=2eznhavDoO4rktisy3U0uz480OsktppEwH5pxC2qoog,7083
|
|
3
3
|
geney/SeqMats.py,sha256=9-eJnfU2w3LGc0XvVvFEO_QrBneTkC6xkZKDfTcEw5o,19282
|
|
4
4
|
geney/Transcript.py,sha256=CpfxYkuCwFILozrtLuiWnlr1mRnMKn4o84HVJislgYs,14499
|
|
5
5
|
geney/__init__.py,sha256=eBdDl42N6UhcYeZDjOnv199Z88fI5_8Y6xW8447OKXM,755
|
|
@@ -11,21 +11,21 @@ geney/graphic_utils.py,sha256=oMsBpB9YeEn96gGpKh4MmtagJffWZbk-xPrIwHvkFhA,11016
|
|
|
11
11
|
geney/gtex_utils.py,sha256=asL2lHyU5KsbWpV096vkf1Ka7hSo_RRfZqw7p5nERmE,1919
|
|
12
12
|
geney/immune_utils.py,sha256=ZRni5ttrhpYBnmNr0d0ZatIbNPYs4nmQuoUO00SpsS4,5271
|
|
13
13
|
geney/mutation_utils.py,sha256=C_kv2MB_L8LlhX3W2ooXjJ3uDoJ8zX1WeDtZKoBZJkI,1547
|
|
14
|
-
geney/oncosplice.py,sha256=
|
|
14
|
+
geney/oncosplice.py,sha256=OptwyMhTaL5ptmdPxyuC2Iwm4feQf0n1ZjN0o9hwZ1w,32051
|
|
15
15
|
geney/pangolin_utils.py,sha256=9jdBXlOcRaUdfi-UpUxHA0AkTMZkUF-Lt7HVZ1nEm3s,2973
|
|
16
16
|
geney/power_utils.py,sha256=MehZFUdkJ2EFUot709yPEDxSkXmH5XevMebX2HD768A,7330
|
|
17
17
|
geney/seqmat_utils.py,sha256=wzb3PX5it5bpIFQvcxyzlxfhoJTbHHbsjg0rzh05iVs,19753
|
|
18
|
-
geney/spliceai_utils.py,sha256=
|
|
19
|
-
geney/splicing_utils.py,sha256=
|
|
18
|
+
geney/spliceai_utils.py,sha256=V5DccGjm2GZQINSVxJYPoN8iYQzU4gE9tINy6gmHjOM,3304
|
|
19
|
+
geney/splicing_utils.py,sha256=UkG2YphjLNUYsv3o3RGUTW1ScHbEMOLL2M_7WbgDVME,47466
|
|
20
20
|
geney/survival_utils.py,sha256=KnAzEviMuXh6SnVXId9PgsFLSbgkduTvYoIthxN7FPA,6886
|
|
21
|
-
geney/tcga_utils.py,sha256=
|
|
21
|
+
geney/tcga_utils.py,sha256=uJhVnTbTysj0XrEw_YeDKRSLexsqgBLYQdhl7_hnr64,17611
|
|
22
22
|
geney/tis_utils.py,sha256=la0CZroaKe5RgAyFd4Bf_DqQncklWgAY2823xVst98o,7813
|
|
23
23
|
geney/utils.py,sha256=KBdwNIywo7INVEQEsuIXauEJobvReE9TXAi5qqXanSI,2775
|
|
24
24
|
geney/translation_initiation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
25
25
|
geney/translation_initiation/tis_utils.py,sha256=AF3siFjuQH-Rs44EV-80zHdbxRMvN4woLFSHroWIETc,4448
|
|
26
26
|
geney/translation_initiation/resources/kozak_pssm.json,sha256=pcd0Olziutq-6H3mFWDCD9cujQ_AlZO-iiOvBl82hqE,1165
|
|
27
27
|
geney/translation_initiation/resources/tis_regressor_model.joblib,sha256=IXb4DUDhJ5rBDKcqMk9zE3ECTZZcdj7Jixz3KpoZ7OA,2592025
|
|
28
|
-
geney-1.3.
|
|
29
|
-
geney-1.3.
|
|
30
|
-
geney-1.3.
|
|
31
|
-
geney-1.3.
|
|
28
|
+
geney-1.3.75.dist-info/METADATA,sha256=RJ7URjz5xQLQy1P8fISap3pWB7qdvknUp-c2Zjgtk9I,990
|
|
29
|
+
geney-1.3.75.dist-info/WHEEL,sha256=AHX6tWk3qWuce7vKLrj7lnulVHEdWoltgauo8bgCXgU,109
|
|
30
|
+
geney-1.3.75.dist-info/top_level.txt,sha256=O-FuNUMb5fn9dhZ-dYCgF0aZtfi1EslMstnzhc5IIVo,6
|
|
31
|
+
geney-1.3.75.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|