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/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
- # Color-coding based on thresholds using np.where
3243
- data["color"] = np.where(
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), colors[0], colors[1]),
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=[y, x], ascending=[False, True]).head(top_genes[0])
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=[y, x], ascending=[False, False]).head(top_genes[1])
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], colors[1]: colors[1], colors[2]: colors[2]}
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
- # hue="color",
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
- fontname = kws_text.pop("fontname", "Arial")
3303
- textcolor = kws_text.pop("color", "k")
3304
- fontsize = kws_text.pop("fontsize", 10)
3305
- arrowstyles = [
3306
- "->","<-","<->","<|-","-|>","<|-|>",
3307
- "-","-[","-[",
3308
- "fancy","simple","wedge",
3309
- ]
3310
- arrowstyle = kws_arrow.pop("style", "<|-")
3311
- arrowstyle = strcmp(arrowstyle, arrowstyles,scorer='strict')[0]
3312
- expand=kws_arrow.pop("expand",(1.05,1.1))
3313
- arrowcolor = kws_arrow.pop("color", "0.4")
3314
- arrowlinewidth = kws_arrow.pop("lw", 0.75)
3315
- shrinkA = kws_arrow.pop("shrinkA", 0)
3316
- shrinkB = kws_arrow.pop("shrinkB", 0)
3317
- mutation_scale = kws_arrow.pop("head", 10)
3318
- arrow_fill=kws_arrow.pop("fill", False)
3319
- for i in range(sele_gene.shape[0]):
3320
- if isinstance(textcolor, list): # be consistant with dots's color
3321
- textcolor = colors[0] if sele_gene[x].iloc[i] > 0 else colors[1]
3322
- texts.append(
3323
- ax.text(
3324
- x=sele_gene[x].iloc[i],
3325
- y=sele_gene[y].iloc[i],
3326
- s=sele_gene[gene_col].iloc[i],
3327
- bbox=kws_bbox if kws_bbox else None,
3328
- fontdict={
3329
- "fontsize": fontsize,
3330
- "color": textcolor,
3331
- "fontname": fontname,
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,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: py2ls
3
- Version: 0.2.4.3
3
+ Version: 0.2.4.4
4
4
  Summary: py(thon)2(too)ls
5
5
  Author: Jianfeng
6
6
  Author-email: Jianfeng.Liu0413@gmail.com
@@ -1,4 +1,4 @@
1
- py2ls/.DS_Store,sha256=9qxq9N5T7k6muGHxG5s6yEdEEYqEh8eDGT3w7LokxsU,6148
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=YCofugnXLz17aY5kqXGtUpV8FzXPdgQdEwcjQ8bHDfg,4232
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=FnEf4RV4LBUQfLefWIpIFszVRYeXjnRlc5261DINIdg,18835
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=yYSpbHIGDfLK2SXtTX4f--H5oa885pggXePEbhiNRsw,220887
217
- py2ls/netfinder.py,sha256=LwBkGITB_4BTNtY6RlKdEZVFW6epzMWlnqy2g03KtyU,56117
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=B_npRfO2rZJJjcYSQ7YMZt2LZTG0mU08JCDnM6zAVx4,136956
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.3.dist-info/METADATA,sha256=S4Il5phQ0Vx8U7VrlEUopkX-hfwcKKQi-qkfD2EYI1g,20038
226
- py2ls-0.2.4.3.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
227
- py2ls-0.2.4.3.dist-info/RECORD,,
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,,