py2ls 0.2.4.3__py3-none-any.whl → 0.2.4.4__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.
- py2ls/.DS_Store +0 -0
- py2ls/.git/index +0 -0
- py2ls/bio.py +955 -18
- py2ls/data/mygenes_fields_241022.txt +355 -0
- py2ls/ips.py +219 -55
- py2ls/ml2ls.py +1094 -0
- py2ls/netfinder.py +12 -1
- py2ls/plot.py +266 -71
- {py2ls-0.2.4.3.dist-info → py2ls-0.2.4.4.dist-info}/METADATA +1 -1
- {py2ls-0.2.4.3.dist-info → py2ls-0.2.4.4.dist-info}/RECORD +11 -9
- {py2ls-0.2.4.3.dist-info → py2ls-0.2.4.4.dist-info}/WHEEL +0 -0
py2ls/netfinder.py
CHANGED
@@ -742,7 +742,18 @@ def downloader(
|
|
742
742
|
counter_ = str(counter)
|
743
743
|
new_filename = f"{base}_{counter_}{ext}"
|
744
744
|
counter += 1
|
745
|
-
return new_filename
|
745
|
+
return new_filename
|
746
|
+
|
747
|
+
if url.startswith("ftp"):
|
748
|
+
import urllib.request
|
749
|
+
|
750
|
+
if dir_save is None:
|
751
|
+
dir_save = "./"
|
752
|
+
dir_save+= os.path.basename(url)
|
753
|
+
print(dir_save)
|
754
|
+
urllib.request.urlretrieve(url, dir_save)
|
755
|
+
print(f"Downloaded file to: {dir_save}")
|
756
|
+
return None
|
746
757
|
|
747
758
|
fpath_tmp, corrected_fname = None, None
|
748
759
|
if not isinstance(kind, list):
|
py2ls/plot.py
CHANGED
@@ -11,7 +11,7 @@ import logging
|
|
11
11
|
import os
|
12
12
|
import re
|
13
13
|
from typing import Union
|
14
|
-
from .ips import fsave, fload, mkdir, listdir, figsave, strcmp, unique, get_os, ssplit,plt_font
|
14
|
+
from .ips import fsave, fload, mkdir, listdir, figsave, strcmp, unique, get_os, ssplit,plt_font,flatten
|
15
15
|
from .stats import *
|
16
16
|
from .netfinder import get_soup, fetch
|
17
17
|
|
@@ -1897,6 +1897,16 @@ def figsets(*args, **kwargs):
|
|
1897
1897
|
if ("fo" in key) and (("size" in key) or ("sz" in key)):
|
1898
1898
|
fontsize = value
|
1899
1899
|
plt.rcParams.update({"font.size": fontsize})
|
1900
|
+
# Customize tick labels
|
1901
|
+
ax.tick_params(axis='both', which='major', labelsize=fontsize)
|
1902
|
+
for label in ax.get_xticklabels() + ax.get_yticklabels():
|
1903
|
+
label.set_fontname(fontname)
|
1904
|
+
|
1905
|
+
# Optionally adjust legend font properties if a legend is included
|
1906
|
+
if ax.get_legend():
|
1907
|
+
for text in ax.get_legend().get_texts():
|
1908
|
+
text.set_fontsize(fontsize)
|
1909
|
+
text.set_fontname(fontname)
|
1900
1910
|
# style
|
1901
1911
|
if "st" in key.lower() or "th" in key.lower():
|
1902
1912
|
if isinstance(value, str):
|
@@ -3145,15 +3155,20 @@ def plotxy(
|
|
3145
3155
|
return g, ax
|
3146
3156
|
return ax
|
3147
3157
|
|
3158
|
+
def norm_cmap(data, cmap="coolwarm", min_max=[0, 1]):
|
3159
|
+
norm_ = plt.Normalize(min_max[0], min_max[1])
|
3160
|
+
colormap = plt.get_cmap(cmap)
|
3161
|
+
return colormap(norm_(data))
|
3148
3162
|
|
3149
3163
|
def volcano(
|
3150
3164
|
data:pd.DataFrame,
|
3151
3165
|
x:str,
|
3152
3166
|
y:str,
|
3153
|
-
gene_col=None,
|
3167
|
+
gene_col:str=None,
|
3154
3168
|
top_genes=[5, 5], # [down-regulated, up-regulated]
|
3155
|
-
thr_x=np.log2(1.5),
|
3169
|
+
thr_x=np.log2(1.5), # default: 0.585
|
3156
3170
|
thr_y=-np.log10(0.05),
|
3171
|
+
sort_xy="x", #'y'
|
3157
3172
|
colors=("#00BFFF", "#9d9a9a", "#FF3030"),
|
3158
3173
|
s=20,
|
3159
3174
|
fill=True, # plot filled scatter
|
@@ -3169,7 +3184,7 @@ def volcano(
|
|
3169
3184
|
alpha=0.5,
|
3170
3185
|
edgecolor='black',
|
3171
3186
|
boxstyle='round,pad=0.3'),# '{}' to hide
|
3172
|
-
kws_arrow={}
|
3187
|
+
kws_arrow=dict(color="k", lw=0.5),# '{}' to hide
|
3173
3188
|
**kwargs,
|
3174
3189
|
):
|
3175
3190
|
"""
|
@@ -3239,29 +3254,39 @@ def volcano(
|
|
3239
3254
|
kws_figsets = v_arg
|
3240
3255
|
kwargs.pop(k_arg, None)
|
3241
3256
|
break
|
3242
|
-
|
3243
|
-
data
|
3257
|
+
|
3258
|
+
data=data.copy()
|
3259
|
+
# filter nan
|
3260
|
+
data = data.dropna(subset=[x, y]) # Drop rows with NaN in x or y
|
3261
|
+
data.loc[:,"color"] = np.where(
|
3244
3262
|
(data[x] > thr_x) & (data[y] > thr_y),
|
3245
3263
|
colors[2],
|
3246
|
-
np.where((data[x] < -thr_x) & (data[y] > thr_y),
|
3264
|
+
np.where((data[x] < -thr_x) & (data[y] > thr_y),
|
3265
|
+
colors[0],
|
3266
|
+
colors[1]),
|
3247
3267
|
)
|
3248
3268
|
top_genes=[top_genes, top_genes] if isinstance(top_genes,int) else top_genes
|
3269
|
+
|
3270
|
+
# could custom how to select the top genes, x: x has priority
|
3271
|
+
sort_by_x_y=[x,y] if sort_xy=="x" else [y,x]
|
3272
|
+
ascending_up=[True, True] if sort_xy=="x" else [False, True]
|
3273
|
+
ascending_down=[False, True] if sort_xy=="x" else [False, False]
|
3249
3274
|
|
3250
3275
|
down_reg_genes = data[
|
3251
3276
|
(data["color"] == colors[0]) &
|
3252
3277
|
(data[x].abs() > thr_x) &
|
3253
3278
|
(data[y] > thr_y)
|
3254
|
-
].sort_values(by=
|
3255
|
-
|
3256
|
-
# Selecting top upregulated genes based on both p-value and fold change
|
3279
|
+
].sort_values(by=sort_by_x_y, ascending=ascending_up).head(top_genes[0])
|
3257
3280
|
up_reg_genes = data[
|
3258
3281
|
(data["color"] == colors[2]) &
|
3259
3282
|
(data[x].abs() > thr_x) &
|
3260
3283
|
(data[y] > thr_y)
|
3261
|
-
].sort_values(by=
|
3284
|
+
].sort_values(by=sort_by_x_y, ascending=ascending_down).head(top_genes[1])
|
3262
3285
|
sele_gene = pd.concat([down_reg_genes, up_reg_genes])
|
3263
|
-
|
3264
|
-
palette = {colors[0]: colors[0],
|
3286
|
+
|
3287
|
+
palette = {colors[0]: colors[0],
|
3288
|
+
colors[1]: colors[1],
|
3289
|
+
colors[2]: colors[2]}
|
3265
3290
|
# Plot setup
|
3266
3291
|
if ax is None:
|
3267
3292
|
ax = plt.gca()
|
@@ -3279,7 +3304,7 @@ def volcano(
|
|
3279
3304
|
data=data,
|
3280
3305
|
x=x,
|
3281
3306
|
y=y,
|
3282
|
-
|
3307
|
+
hue="color",
|
3283
3308
|
palette=palette,
|
3284
3309
|
s=s,
|
3285
3310
|
linewidths=edgelinewidth,
|
@@ -3298,65 +3323,57 @@ def volcano(
|
|
3298
3323
|
# Add gene labels for selected significant points
|
3299
3324
|
if gene_col:
|
3300
3325
|
texts = []
|
3301
|
-
if kws_text:
|
3302
|
-
|
3303
|
-
|
3304
|
-
|
3305
|
-
|
3306
|
-
|
3307
|
-
|
3308
|
-
|
3309
|
-
|
3310
|
-
|
3311
|
-
|
3312
|
-
|
3313
|
-
|
3314
|
-
|
3315
|
-
|
3316
|
-
|
3317
|
-
|
3318
|
-
|
3319
|
-
|
3320
|
-
|
3321
|
-
|
3322
|
-
|
3323
|
-
|
3324
|
-
|
3325
|
-
|
3326
|
-
|
3327
|
-
|
3328
|
-
|
3329
|
-
|
3330
|
-
|
3331
|
-
|
3332
|
-
|
3333
|
-
)
|
3334
|
-
)
|
3335
|
-
print(arrowstyle)
|
3336
|
-
adjust_text(
|
3337
|
-
texts,
|
3338
|
-
expand=expand,
|
3339
|
-
min_arrow_len=5,
|
3340
|
-
# force_explode=(0.1, 0.5),
|
3341
|
-
# force_text=(0.1, 0.5),
|
3342
|
-
# force_points=(0.1, 0.5),
|
3343
|
-
# explode_radius=10,
|
3344
|
-
# expand_text=(1, 1),
|
3345
|
-
# expand_points=(1, 1),
|
3346
|
-
# ha='center',
|
3347
|
-
# va='top',
|
3348
|
-
ax=ax,
|
3349
|
-
arrowprops=dict(
|
3350
|
-
arrowstyle=arrowstyle,
|
3351
|
-
fill=arrow_fill,
|
3352
|
-
color=arrowcolor,
|
3353
|
-
lw=arrowlinewidth,
|
3354
|
-
shrinkA=shrinkA,
|
3355
|
-
shrinkB=shrinkB,
|
3356
|
-
mutation_scale=mutation_scale,
|
3357
|
-
**kws_arrow,
|
3326
|
+
# if kws_text:
|
3327
|
+
fontname = kws_text.pop("fontname", "Arial")
|
3328
|
+
textcolor = kws_text.pop("color", "k")
|
3329
|
+
fontsize = kws_text.pop("fontsize", 10)
|
3330
|
+
arrowstyles = [
|
3331
|
+
"->","<-","<->","<|-","-|>","<|-|>",
|
3332
|
+
"-","-[","-[",
|
3333
|
+
"fancy","simple","wedge",
|
3334
|
+
]
|
3335
|
+
arrowstyle = kws_arrow.pop("style", "<|-")
|
3336
|
+
arrowstyle = strcmp(arrowstyle, arrowstyles,scorer='strict')[0]
|
3337
|
+
expand=kws_arrow.pop("expand",(1.05,1.1))
|
3338
|
+
arrowcolor = kws_arrow.pop("color", "0.4")
|
3339
|
+
arrowlinewidth = kws_arrow.pop("lw", 0.75)
|
3340
|
+
shrinkA = kws_arrow.pop("shrinkA", 0)
|
3341
|
+
shrinkB = kws_arrow.pop("shrinkB", 0)
|
3342
|
+
mutation_scale = kws_arrow.pop("head", 10)
|
3343
|
+
arrow_fill=kws_arrow.pop("fill", False)
|
3344
|
+
for i in range(sele_gene.shape[0]):
|
3345
|
+
if isinstance(textcolor, list): # be consistant with dots's color
|
3346
|
+
textcolor = colors[0] if sele_gene[x].iloc[i] > 0 else colors[1]
|
3347
|
+
texts.append(
|
3348
|
+
ax.text(
|
3349
|
+
x=sele_gene[x].iloc[i],
|
3350
|
+
y=sele_gene[y].iloc[i],
|
3351
|
+
s=sele_gene[gene_col].iloc[i],
|
3352
|
+
bbox=kws_bbox if kws_bbox else None,
|
3353
|
+
fontdict={
|
3354
|
+
"fontsize": fontsize,
|
3355
|
+
"color": textcolor,
|
3356
|
+
"fontname": fontname,
|
3357
|
+
},
|
3358
3358
|
)
|
3359
3359
|
)
|
3360
|
+
print(arrowstyle)
|
3361
|
+
adjust_text(
|
3362
|
+
texts,
|
3363
|
+
expand=expand,
|
3364
|
+
min_arrow_len=5,
|
3365
|
+
ax=ax,
|
3366
|
+
arrowprops=dict(
|
3367
|
+
arrowstyle=arrowstyle,
|
3368
|
+
fill=arrow_fill,
|
3369
|
+
color=arrowcolor,
|
3370
|
+
lw=arrowlinewidth,
|
3371
|
+
shrinkA=shrinkA,
|
3372
|
+
shrinkB=shrinkB,
|
3373
|
+
mutation_scale=mutation_scale,
|
3374
|
+
**kws_arrow,
|
3375
|
+
)
|
3376
|
+
)
|
3360
3377
|
|
3361
3378
|
figsets(**kws_figsets)
|
3362
3379
|
|
@@ -3446,3 +3463,181 @@ def sns_func_info(dir_save=None):
|
|
3446
3463
|
dir_save + "sns_info.json",
|
3447
3464
|
sns_info,
|
3448
3465
|
)
|
3466
|
+
|
3467
|
+
|
3468
|
+
|
3469
|
+
|
3470
|
+
|
3471
|
+
|
3472
|
+
def venn(
|
3473
|
+
lists:list,
|
3474
|
+
labels:list,
|
3475
|
+
ax=None,
|
3476
|
+
colors=None,
|
3477
|
+
edgecolor="0.25",
|
3478
|
+
alpha=0.75,
|
3479
|
+
linewidth=.75,
|
3480
|
+
linestyle="-",
|
3481
|
+
fontname='Arial',
|
3482
|
+
fontsize=11,
|
3483
|
+
fontweight="normal",
|
3484
|
+
fontstyle="normal",
|
3485
|
+
label_align="center",
|
3486
|
+
label_baseline="center",
|
3487
|
+
subset_fontsize=9,
|
3488
|
+
subset_fontweight="normal",
|
3489
|
+
subset_fontstyle="normal",
|
3490
|
+
subset_label_format="{:d}",
|
3491
|
+
shadow=False,
|
3492
|
+
custom_texts=None,
|
3493
|
+
hatches=None,
|
3494
|
+
per_circle_styles=None,
|
3495
|
+
**kwargs
|
3496
|
+
):
|
3497
|
+
"""
|
3498
|
+
Advanced Venn diagram plotting function with extensive customization options.
|
3499
|
+
|
3500
|
+
Parameters:
|
3501
|
+
lists: list of sets, 2 or 3 sets
|
3502
|
+
labels: list of strings, labels for the sets
|
3503
|
+
ax: matplotlib axis, optional
|
3504
|
+
colors: list of colors, colors for the Venn diagram patches
|
3505
|
+
edgecolor: string, color of the circle edges
|
3506
|
+
alpha: float, transparency level for the patches
|
3507
|
+
linewidth: float, width of the circle edges
|
3508
|
+
linestyle: string, line style for the circles
|
3509
|
+
fontname: string, font for set labels
|
3510
|
+
fontsize: int, font size for set labels
|
3511
|
+
fontweight: string, weight of the set label font (e.g., 'bold', 'light')
|
3512
|
+
fontstyle: string, style of the set label font (e.g., 'italic')
|
3513
|
+
label_align: string, horizontal alignment of set labels ('left', 'center', 'right')
|
3514
|
+
label_baseline: string, vertical alignment of set labels ('top', 'center', 'bottom')
|
3515
|
+
subset_fontsize: int, font size for subset labels (the numbers)
|
3516
|
+
subset_fontweight: string, weight of subset label font
|
3517
|
+
subset_fontstyle: string, style of subset label font
|
3518
|
+
subset_label_format: string, format for subset labels (e.g., "{:.2f}" for floats)
|
3519
|
+
shadow: bool, add shadow effect to the patches
|
3520
|
+
custom_texts: list of custom texts to replace the subset labels
|
3521
|
+
hatches: list of hatch patterns for the patches
|
3522
|
+
per_circle_styles: dict, custom styles for each circle (e.g., {'circle_1': {'color': 'red'}})
|
3523
|
+
**kwargs: additional keyword arguments passed to venn2 or venn3
|
3524
|
+
"""
|
3525
|
+
if ax is None:
|
3526
|
+
ax = plt.gca()
|
3527
|
+
lists=[set(flatten(i, verbose=False)) for i in lists]
|
3528
|
+
# Function to apply text styles to labels
|
3529
|
+
def apply_text_style(text, fontname, fontsize, fontweight, fontstyle):
|
3530
|
+
if text: # Ensure text exists
|
3531
|
+
if fontname:
|
3532
|
+
text.set_fontname(fontname)
|
3533
|
+
if fontsize:
|
3534
|
+
text.set_fontsize(fontsize)
|
3535
|
+
if fontweight:
|
3536
|
+
text.set_fontweight(fontweight)
|
3537
|
+
if fontstyle:
|
3538
|
+
text.set_fontstyle(fontstyle)
|
3539
|
+
# Alignment customization
|
3540
|
+
text.set_horizontalalignment(label_align)
|
3541
|
+
text.set_verticalalignment(label_baseline)
|
3542
|
+
|
3543
|
+
if len(lists) == 2:
|
3544
|
+
from matplotlib_venn import venn2, venn2_circles
|
3545
|
+
v = venn2(subsets=lists, set_labels=labels, ax=ax, **kwargs)
|
3546
|
+
venn_circles = venn2_circles(subsets=lists, ax=ax,color=edgecolor)
|
3547
|
+
if not isinstance(linewidth,list):
|
3548
|
+
linewidth=[linewidth]
|
3549
|
+
if isinstance(linestyle,str):
|
3550
|
+
linestyle=[linestyle]
|
3551
|
+
linewidth=linewidth*2 if len(linewidth)==1 else linewidth
|
3552
|
+
linestyle=linestyle*2 if len(linestyle)==1 else linestyle
|
3553
|
+
for i in range(2):
|
3554
|
+
venn_circles[i].set_lw(linewidth[i])
|
3555
|
+
venn_circles[i].set_ls(linestyle[i])
|
3556
|
+
# Apply styles to set labels
|
3557
|
+
for i, text in enumerate(v.set_labels):
|
3558
|
+
apply_text_style(text, fontname, fontsize, fontweight, fontstyle)
|
3559
|
+
|
3560
|
+
# Apply styles to subset labels
|
3561
|
+
for i, text in enumerate(v.subset_labels):
|
3562
|
+
if text: # Ensure text exists
|
3563
|
+
if custom_texts: # Custom text handling
|
3564
|
+
text.set_text(custom_texts[i])
|
3565
|
+
else: # Default subset label formatting
|
3566
|
+
subset_size = (
|
3567
|
+
len(lists[i % 2])
|
3568
|
+
if i in [0, 1]
|
3569
|
+
else len(lists[0].intersection(lists[1]))
|
3570
|
+
)
|
3571
|
+
text.set_text(subset_label_format.format(subset_size))
|
3572
|
+
apply_text_style(
|
3573
|
+
text, None, subset_fontsize, subset_fontweight, subset_fontstyle
|
3574
|
+
)
|
3575
|
+
elif len(lists) == 3:
|
3576
|
+
from matplotlib_venn import venn3, venn3_circles
|
3577
|
+
v = venn3(
|
3578
|
+
subsets=lists, set_labels=labels, set_colors=colors, ax=ax, **kwargs
|
3579
|
+
)
|
3580
|
+
venn_circles = venn3_circles(
|
3581
|
+
subsets=lists, ax=ax,color=edgecolor
|
3582
|
+
)
|
3583
|
+
if not isinstance(linewidth,list):
|
3584
|
+
linewidth=[linewidth]
|
3585
|
+
if isinstance(linestyle,str):
|
3586
|
+
linestyle=[linestyle]
|
3587
|
+
linewidth=linewidth*3 if len(linewidth)==1 else linewidth
|
3588
|
+
linestyle=linestyle*3 if len(linestyle)==1 else linestyle
|
3589
|
+
for i in range(3):
|
3590
|
+
venn_circles[i].set_lw(linewidth[i])
|
3591
|
+
venn_circles[i].set_ls(linestyle[i])
|
3592
|
+
|
3593
|
+
# Apply styles to set labels
|
3594
|
+
for i, text in enumerate(v.set_labels):
|
3595
|
+
apply_text_style(text, fontname, fontsize, fontweight, fontstyle)
|
3596
|
+
|
3597
|
+
# Apply styles to subset labels
|
3598
|
+
for i, text in enumerate(v.subset_labels):
|
3599
|
+
if text: # Ensure text exists
|
3600
|
+
if custom_texts: # Custom text handling
|
3601
|
+
text.set_text(custom_texts[i])
|
3602
|
+
else: # Default subset label formatting
|
3603
|
+
subset_size = (
|
3604
|
+
len(lists[i])
|
3605
|
+
if i < 3
|
3606
|
+
else len(lists[0].intersection(lists[1], lists[2]))
|
3607
|
+
)
|
3608
|
+
text.set_text(subset_label_format.format(subset_size))
|
3609
|
+
apply_text_style(
|
3610
|
+
text, None, subset_fontsize, subset_fontweight, subset_fontstyle
|
3611
|
+
)
|
3612
|
+
else:
|
3613
|
+
raise ValueError("只支持2或者3个list")
|
3614
|
+
# Set circle and patch customizations (edge color, transparency, hatches)
|
3615
|
+
for i, patch in enumerate(v.patches):
|
3616
|
+
if patch:
|
3617
|
+
if colors:
|
3618
|
+
patch.set_facecolor(colors[i % len(colors)])
|
3619
|
+
patch.set_edgecolor("none")
|
3620
|
+
patch.set_alpha(alpha)
|
3621
|
+
if hatches:
|
3622
|
+
patch.set_hatch(hatches[i % len(hatches)])
|
3623
|
+
if shadow:
|
3624
|
+
from matplotlib.patches import Shadow
|
3625
|
+
shadow_patch = Shadow(patch, -0.02, -0.02, alpha=0.2)
|
3626
|
+
ax.add_patch(shadow_patch)
|
3627
|
+
# # usage:
|
3628
|
+
# venn(
|
3629
|
+
# [rf_features, svm_features, lasso_features],
|
3630
|
+
# ["Random Forest", "SVM-RFE", "a"],
|
3631
|
+
# ax=axs[0], # Specify the axes
|
3632
|
+
# colors=["#BDC8E0", "#E5C0C1", "#D0E9CB"],
|
3633
|
+
# edgecolor="r",
|
3634
|
+
# alpha=1,
|
3635
|
+
# linewidth=[1, 2, 18],# 分别设置字体大小
|
3636
|
+
# linestyle=["-", "--", ":"],
|
3637
|
+
# fontsize=20,
|
3638
|
+
# label_baseline="top",
|
3639
|
+
# subset_label_format="{:.2f}%",
|
3640
|
+
# subset_fontsize=18,
|
3641
|
+
# shadow=False,
|
3642
|
+
# # custom_texts=["a", "b", "c"],
|
3643
|
+
# )
|
@@ -1,4 +1,4 @@
|
|
1
|
-
py2ls/.DS_Store,sha256=
|
1
|
+
py2ls/.DS_Store,sha256=JdpMN4cmDCbGxELP0b4LUPASIOzoxopMYybGVl8zlZ0,6148
|
2
2
|
py2ls/.git/COMMIT_EDITMSG,sha256=AdtqRHle5Ej2EBNPJY79v-SB454v5UK4wuPCPFELiFQ,11
|
3
3
|
py2ls/.git/FETCH_HEAD,sha256=VM-2Jiw6iPaGu0ftg9xwq76OyNPWV0iT1nL0VWiL1zI,100
|
4
4
|
py2ls/.git/HEAD,sha256=KNJb-Cr0wOK3L1CVmyvrhZ4-YLljCl6MYD2tTdsrboA,21
|
@@ -17,7 +17,7 @@ py2ls/.git/hooks/pre-receive.sample,sha256=pMPSuce7P9jRRBwxvU7nGlldZrRPz0ndsxAlI
|
|
17
17
|
py2ls/.git/hooks/prepare-commit-msg.sample,sha256=6d3KpBif3dJe2X_Ix4nsp7bKFjkLI5KuMnbwyOGqRhk,1492
|
18
18
|
py2ls/.git/hooks/push-to-checkout.sample,sha256=pT0HQXmLKHxt16-mSu5HPzBeZdP0lGO7nXQI7DsSv18,2783
|
19
19
|
py2ls/.git/hooks/update.sample,sha256=jV8vqD4QPPCLV-qmdSHfkZT0XL28s32lKtWGCXoU0QY,3650
|
20
|
-
py2ls/.git/index,sha256=
|
20
|
+
py2ls/.git/index,sha256=O4t8fvweL1JsEypzrWigO2hAxCpfQwC4VOW3q8panRk,4232
|
21
21
|
py2ls/.git/info/exclude,sha256=ZnH-g7egfIky7okWTR8nk7IxgFjri5jcXAbuClo7DsE,240
|
22
22
|
py2ls/.git/logs/HEAD,sha256=8ID7WuAe_TlO9g-ARxhIJYdgdL3u3m7-1qrOanaIUlA,3535
|
23
23
|
py2ls/.git/logs/refs/heads/main,sha256=8ID7WuAe_TlO9g-ARxhIJYdgdL3u3m7-1qrOanaIUlA,3535
|
@@ -173,7 +173,7 @@ py2ls/LICENSE,sha256=UOZ1F5fFDe3XXvG4oNnkL1-Ecun7zpHzRxjp-XsMeAo,11324
|
|
173
173
|
py2ls/README.md,sha256=CwvJWAnSXnCnrVHlnEbrxxi6MbjbE_MT6DH2D53S818,11572
|
174
174
|
py2ls/__init__.py,sha256=Nn8jTIvySX7t7DMJ8VNRVctTStgXGjHldOIdZ35PdW8,165
|
175
175
|
py2ls/batman.py,sha256=E7gYofbDzN7S5oCmO_dd5Z1bxxhoYMJSD6s-VaF388E,11398
|
176
|
-
py2ls/bio.py,sha256=
|
176
|
+
py2ls/bio.py,sha256=J-zGAgHiSQwDyUvjMKDOsJZoeTkqGaXcHDYHtMd84SQ,53879
|
177
177
|
py2ls/brain_atlas.py,sha256=w1o5EelRjq89zuFJUNSz4Da8HnTCwAwDAZ4NU4a-bAY,5486
|
178
178
|
py2ls/chat.py,sha256=Yr22GoIvoWhpV3m4fdwV_I0Mn77La346_ymSinR-ORA,3793
|
179
179
|
py2ls/correlators.py,sha256=RbOaJIPLCHJtUm5SFi_4dCJ7VFUPWR0PErfK3K26ad4,18243
|
@@ -182,6 +182,7 @@ py2ls/data/db2ls_sql_chtsht.json,sha256=ls9d7Sm8TLeujanWHfHlWhU85Qz1KnAizO_9X3wU
|
|
182
182
|
py2ls/data/docs_links.json,sha256=kXgbbWo0b8bfV4n6iuuUNLnZipIyLzokUO6Lzmf7nO4,101829
|
183
183
|
py2ls/data/email/email_html_template.html,sha256=UIg3aixWfdNsvVx-j2dX1M5N3G-6DgrnV1Ya1cLjiUQ,2809
|
184
184
|
py2ls/data/lang_code_iso639.json,sha256=qZiU7H2RLJjDMXK22C-jhwzLJCI5vKmampjB1ys4ek4,2157
|
185
|
+
py2ls/data/mygenes_fields_241022.txt,sha256=-7htEdtmqbSRTUKHHVmjUFLBwZZg9u3LFpn9OZMb1qg,11348
|
185
186
|
py2ls/data/sns_info.json,sha256=pEzdg2bhMkwQHZpXx02_7zAP7NvRoCc0Le8PN6Uv0Vk,4074
|
186
187
|
py2ls/data/styles/example/style1.pdf,sha256=Pt_qQJ5kiCSIPiz3TWSwEffHUdj75kKXnZ4MPqpEx4I,29873
|
187
188
|
py2ls/data/styles/example/style2.pdf,sha256=0xduPLPulET38LEP2V2H_q70wqlrrBEo8ttqO-FMrfQ,25449
|
@@ -213,15 +214,16 @@ py2ls/export_requirements.py,sha256=x2WgUF0jYKz9GfA1MVKN-MdsM-oQ8yUeC6Ua8oCymio,
|
|
213
214
|
py2ls/fetch_update.py,sha256=9LXj661GpCEFII2wx_99aINYctDiHni6DOruDs_fdt8,4752
|
214
215
|
py2ls/freqanalysis.py,sha256=F4218VSPbgL5tnngh6xNCYuNnfR-F_QjECUUxrPYZss,32594
|
215
216
|
py2ls/ich2ls.py,sha256=3E9R8oVpyYZXH5PiIQgT3CN5NxLe4Dwtm2LwaeacE6I,21381
|
216
|
-
py2ls/ips.py,sha256=
|
217
|
-
py2ls/
|
217
|
+
py2ls/ips.py,sha256=USmQKEZuqnjJyP5dhXzFG8yMrhrH6L8yt9jFtttuqLI,227772
|
218
|
+
py2ls/ml2ls.py,sha256=XSe2-sLNzUVSvVRkeRGfhrB_q8C49SDK1sekYC1Bats,50277
|
219
|
+
py2ls/netfinder.py,sha256=RJFr80tGEJiuwEx99IBOhI5-ZuXnPdWnGUYpF7XCEwI,56426
|
218
220
|
py2ls/ocr.py,sha256=5lhUbJufIKRSOL6wAWVLEo8TqMYSjoI_Q-IO-_4u3DE,31419
|
219
|
-
py2ls/plot.py,sha256=
|
221
|
+
py2ls/plot.py,sha256=MepTGqtxqHnc_pTixvEXjQHGPTETcTeI1FGXMxBB8L8,144556
|
220
222
|
py2ls/setuptools-70.1.0-py3-none-any.whl,sha256=2bi3cUVal8ip86s0SOvgspteEF8SKLukECi-EWmFomc,882588
|
221
223
|
py2ls/sleep_events_detectors.py,sha256=bQA3HJqv5qnYKJJEIhCyhlDtkXQfIzqksnD0YRXso68,52145
|
222
224
|
py2ls/stats.py,sha256=DMoJd8Z5YV9T1wB-4P52F5K5scfVK55DT8UP4Twcebo,38627
|
223
225
|
py2ls/translator.py,sha256=zBeq4pYZeroqw3DT-5g7uHfVqKd-EQptT6LJ-Adi8JY,34244
|
224
226
|
py2ls/wb_detector.py,sha256=7y6TmBUj9exCZeIgBAJ_9hwuhkDh1x_-yg4dvNY1_GQ,6284
|
225
|
-
py2ls-0.2.4.
|
226
|
-
py2ls-0.2.4.
|
227
|
-
py2ls-0.2.4.
|
227
|
+
py2ls-0.2.4.4.dist-info/METADATA,sha256=OS59HPIjSXN6Zdy5X0AxSfyvQba6SuK66h74n7nVDno,20038
|
228
|
+
py2ls-0.2.4.4.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
|
229
|
+
py2ls-0.2.4.4.dist-info/RECORD,,
|
File without changes
|