geney 1.3.73__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 +181 -9
- geney/spliceai_utils.py +19 -15
- geney/splicing_utils.py +16 -11
- geney/tcga_utils.py +0 -1
- {geney-1.3.73.dist-info → geney-1.3.75.dist-info}/METADATA +1 -1
- {geney-1.3.73.dist-info → geney-1.3.75.dist-info}/RECORD +9 -9
- {geney-1.3.73.dist-info → geney-1.3.75.dist-info}/WHEEL +0 -0
- {geney-1.3.73.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,10 +329,13 @@ 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}...'):
|
|
336
|
+
if target_transcripts is not None and reference_transcript.transcript_id not in target_transcripts:
|
|
337
|
+
continue
|
|
338
|
+
|
|
322
339
|
# if (cons_required and not reference_transcript.cons_available) or (
|
|
323
340
|
# protein_coding and not reference_transcript.transcript_biotype == 'protein_coding'):
|
|
324
341
|
if protein_coding and not reference_transcript.transcript_biotype == 'protein_coding':
|
|
@@ -338,9 +355,6 @@ def oncosplice(mut_id, splicing_threshold=0.5, protein_coding=True, cons_require
|
|
|
338
355
|
mutated_transcript.mutate(mutation, inplace=True)
|
|
339
356
|
|
|
340
357
|
reference_transcript.generate_mature_mrna().generate_protein()
|
|
341
|
-
# if ('*' in reference_transcript.protein[:-1]):
|
|
342
|
-
# print(f"> Errors in reference transcript {reference_transcript.transcript_id}")
|
|
343
|
-
# continue
|
|
344
358
|
|
|
345
359
|
if len(reference_transcript.protein) < window_length:
|
|
346
360
|
print(f"> Window length issue {reference_transcript.transcript_id}")
|
|
@@ -415,15 +429,173 @@ def oncosplice(mut_id, splicing_threshold=0.5, protein_coding=True, cons_require
|
|
|
415
429
|
results.append(report)
|
|
416
430
|
|
|
417
431
|
if len(results) == 0:
|
|
418
|
-
print("Nothing...")
|
|
419
|
-
return
|
|
432
|
+
# print("Nothing...")
|
|
433
|
+
return pd.DataFrame()
|
|
420
434
|
|
|
421
435
|
return pd.DataFrame(results)[
|
|
422
436
|
['mut_id', 'transcript_id', 'isoform_id', 'primary_transcript', 'missplicing', 'full_missplicing',
|
|
423
437
|
'exon_changes', 'splicing_codes', 'affected_exon', 'affected_intron', 'mutation_distance_from_5',
|
|
424
|
-
'mutation_distance_from_3', 'reference_resemblance', 'oncosplice_score', 'percentile',
|
|
438
|
+
'mutation_distance_from_3', 'missense_effect', 'codon_change', 'reference_resemblance', 'oncosplice_score', 'percentile',
|
|
425
439
|
'isoform_prevalence', 'reference_protein', 'variant_protein', 'splicing_engine']]
|
|
426
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
|
+
|
|
427
599
|
#
|
|
428
600
|
# import asyncio
|
|
429
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,29 +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
|
|
224
|
+
def missplicing_df(mut_id, **kwargs):
|
|
225
|
+
return find_transcript_missplicing(mut_id, **kwargs).max_delta
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
def find_transcript_missplicing(mut_id, transcript=None, threshold=0.5, engine='spliceai', organism='hg38'):
|
|
225
229
|
gene = Gene.from_file(mut_id.split(':')[0], organism=organism)
|
|
226
230
|
reference_transcript = gene.transcript(transcript) if transcript is not None else gene.transcript()
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
231
|
+
if reference_transcript is None:
|
|
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)
|
|
232
238
|
|
|
233
239
|
variant_transcript = reference_transcript.clone()
|
|
234
240
|
mutations = [MutSeqMat.from_mutid(m) for m in mut_id.split('|')]
|
|
235
241
|
mutations = [m for m in mutations if m in reference_transcript]
|
|
236
242
|
if len(mutations) == 0:
|
|
237
|
-
return Missplicing(
|
|
243
|
+
return Missplicing()
|
|
238
244
|
|
|
239
245
|
center = int(np.mean([m.indices[0] for m in mutations]))
|
|
240
246
|
for mutation in mutations:
|
|
241
247
|
variant_transcript.mutate(mutation, inplace=True)
|
|
242
248
|
|
|
243
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)
|
|
244
|
-
if db is not None:
|
|
245
|
-
|
|
246
|
-
|
|
250
|
+
# if db is not None:
|
|
251
|
+
# db.store_mutation_data(engine, gene.gene_name, mut_id, reference_transcript.transcript_id, missplicing.missplicing)
|
|
247
252
|
return missplicing
|
|
248
253
|
|
|
249
254
|
# from functools import reduce
|
|
@@ -650,7 +655,7 @@ def process_pairwise_epistasis_explicit(mid, engine='spliceai'):
|
|
|
650
655
|
|
|
651
656
|
|
|
652
657
|
class Missplicing:
|
|
653
|
-
def __init__(self, splicing_dict=
|
|
658
|
+
def __init__(self, splicing_dict={'missed_acceptors': {}, 'missed_donors': {}, 'discovered_acceptors': {}, 'discovered_donors': {}}, threshold=0.5):
|
|
654
659
|
"""
|
|
655
660
|
Initialize a Missplicing object.
|
|
656
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
|