scitex 2.0.0__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.
- scitex/__init__.py +73 -0
- scitex/__main__.py +89 -0
- scitex/__version__.py +14 -0
- scitex/_sh.py +59 -0
- scitex/ai/_LearningCurveLogger.py +583 -0
- scitex/ai/__Classifiers.py +101 -0
- scitex/ai/__init__.py +55 -0
- scitex/ai/_gen_ai/_Anthropic.py +173 -0
- scitex/ai/_gen_ai/_BaseGenAI.py +336 -0
- scitex/ai/_gen_ai/_DeepSeek.py +175 -0
- scitex/ai/_gen_ai/_Google.py +161 -0
- scitex/ai/_gen_ai/_Groq.py +97 -0
- scitex/ai/_gen_ai/_Llama.py +142 -0
- scitex/ai/_gen_ai/_OpenAI.py +230 -0
- scitex/ai/_gen_ai/_PARAMS.py +565 -0
- scitex/ai/_gen_ai/_Perplexity.py +191 -0
- scitex/ai/_gen_ai/__init__.py +32 -0
- scitex/ai/_gen_ai/_calc_cost.py +78 -0
- scitex/ai/_gen_ai/_format_output_func.py +183 -0
- scitex/ai/_gen_ai/_genai_factory.py +71 -0
- scitex/ai/act/__init__.py +8 -0
- scitex/ai/act/_define.py +11 -0
- scitex/ai/classification/__init__.py +7 -0
- scitex/ai/classification/classification_reporter.py +1137 -0
- scitex/ai/classification/classifier_server.py +131 -0
- scitex/ai/classification/classifiers.py +101 -0
- scitex/ai/classification_reporter.py +1161 -0
- scitex/ai/classifier_server.py +131 -0
- scitex/ai/clustering/__init__.py +11 -0
- scitex/ai/clustering/_pca.py +115 -0
- scitex/ai/clustering/_umap.py +376 -0
- scitex/ai/early_stopping.py +149 -0
- scitex/ai/feature_extraction/__init__.py +56 -0
- scitex/ai/feature_extraction/vit.py +148 -0
- scitex/ai/genai/__init__.py +277 -0
- scitex/ai/genai/anthropic.py +177 -0
- scitex/ai/genai/anthropic_provider.py +320 -0
- scitex/ai/genai/anthropic_refactored.py +109 -0
- scitex/ai/genai/auth_manager.py +200 -0
- scitex/ai/genai/base_genai.py +336 -0
- scitex/ai/genai/base_provider.py +291 -0
- scitex/ai/genai/calc_cost.py +78 -0
- scitex/ai/genai/chat_history.py +307 -0
- scitex/ai/genai/cost_tracker.py +276 -0
- scitex/ai/genai/deepseek.py +188 -0
- scitex/ai/genai/deepseek_provider.py +251 -0
- scitex/ai/genai/format_output_func.py +183 -0
- scitex/ai/genai/genai_factory.py +71 -0
- scitex/ai/genai/google.py +169 -0
- scitex/ai/genai/google_provider.py +228 -0
- scitex/ai/genai/groq.py +104 -0
- scitex/ai/genai/groq_provider.py +248 -0
- scitex/ai/genai/image_processor.py +250 -0
- scitex/ai/genai/llama.py +155 -0
- scitex/ai/genai/llama_provider.py +214 -0
- scitex/ai/genai/mock_provider.py +127 -0
- scitex/ai/genai/model_registry.py +304 -0
- scitex/ai/genai/openai.py +230 -0
- scitex/ai/genai/openai_provider.py +293 -0
- scitex/ai/genai/params.py +565 -0
- scitex/ai/genai/perplexity.py +202 -0
- scitex/ai/genai/perplexity_provider.py +205 -0
- scitex/ai/genai/provider_base.py +302 -0
- scitex/ai/genai/provider_factory.py +370 -0
- scitex/ai/genai/response_handler.py +235 -0
- scitex/ai/layer/_Pass.py +21 -0
- scitex/ai/layer/__init__.py +10 -0
- scitex/ai/layer/_switch.py +8 -0
- scitex/ai/loss/_L1L2Losses.py +34 -0
- scitex/ai/loss/__init__.py +12 -0
- scitex/ai/loss/multi_task_loss.py +47 -0
- scitex/ai/metrics/__init__.py +9 -0
- scitex/ai/metrics/_bACC.py +51 -0
- scitex/ai/metrics/silhoute_score_block.py +496 -0
- scitex/ai/optim/Ranger_Deep_Learning_Optimizer/__init__.py +0 -0
- scitex/ai/optim/Ranger_Deep_Learning_Optimizer/ranger/__init__.py +3 -0
- scitex/ai/optim/Ranger_Deep_Learning_Optimizer/ranger/ranger.py +207 -0
- scitex/ai/optim/Ranger_Deep_Learning_Optimizer/ranger/ranger2020.py +238 -0
- scitex/ai/optim/Ranger_Deep_Learning_Optimizer/ranger/ranger913A.py +215 -0
- scitex/ai/optim/Ranger_Deep_Learning_Optimizer/ranger/rangerqh.py +184 -0
- scitex/ai/optim/Ranger_Deep_Learning_Optimizer/setup.py +24 -0
- scitex/ai/optim/__init__.py +13 -0
- scitex/ai/optim/_get_set.py +31 -0
- scitex/ai/optim/_optimizers.py +71 -0
- scitex/ai/plt/__init__.py +21 -0
- scitex/ai/plt/_conf_mat.py +592 -0
- scitex/ai/plt/_learning_curve.py +194 -0
- scitex/ai/plt/_optuna_study.py +111 -0
- scitex/ai/plt/aucs/__init__.py +2 -0
- scitex/ai/plt/aucs/example.py +60 -0
- scitex/ai/plt/aucs/pre_rec_auc.py +223 -0
- scitex/ai/plt/aucs/roc_auc.py +246 -0
- scitex/ai/sampling/undersample.py +29 -0
- scitex/ai/sk/__init__.py +11 -0
- scitex/ai/sk/_clf.py +58 -0
- scitex/ai/sk/_to_sktime.py +100 -0
- scitex/ai/sklearn/__init__.py +26 -0
- scitex/ai/sklearn/clf.py +58 -0
- scitex/ai/sklearn/to_sktime.py +100 -0
- scitex/ai/training/__init__.py +7 -0
- scitex/ai/training/early_stopping.py +150 -0
- scitex/ai/training/learning_curve_logger.py +555 -0
- scitex/ai/utils/__init__.py +22 -0
- scitex/ai/utils/_check_params.py +50 -0
- scitex/ai/utils/_default_dataset.py +46 -0
- scitex/ai/utils/_format_samples_for_sktime.py +26 -0
- scitex/ai/utils/_label_encoder.py +134 -0
- scitex/ai/utils/_merge_labels.py +22 -0
- scitex/ai/utils/_sliding_window_data_augmentation.py +11 -0
- scitex/ai/utils/_under_sample.py +51 -0
- scitex/ai/utils/_verify_n_gpus.py +16 -0
- scitex/ai/utils/grid_search.py +148 -0
- scitex/context/__init__.py +9 -0
- scitex/context/_suppress_output.py +38 -0
- scitex/db/_BaseMixins/_BaseBackupMixin.py +30 -0
- scitex/db/_BaseMixins/_BaseBatchMixin.py +31 -0
- scitex/db/_BaseMixins/_BaseBlobMixin.py +81 -0
- scitex/db/_BaseMixins/_BaseConnectionMixin.py +43 -0
- scitex/db/_BaseMixins/_BaseImportExportMixin.py +39 -0
- scitex/db/_BaseMixins/_BaseIndexMixin.py +29 -0
- scitex/db/_BaseMixins/_BaseMaintenanceMixin.py +33 -0
- scitex/db/_BaseMixins/_BaseQueryMixin.py +52 -0
- scitex/db/_BaseMixins/_BaseRowMixin.py +32 -0
- scitex/db/_BaseMixins/_BaseSchemaMixin.py +44 -0
- scitex/db/_BaseMixins/_BaseTableMixin.py +66 -0
- scitex/db/_BaseMixins/_BaseTransactionMixin.py +52 -0
- scitex/db/_BaseMixins/__init__.py +30 -0
- scitex/db/_PostgreSQL.py +126 -0
- scitex/db/_PostgreSQLMixins/_BackupMixin.py +166 -0
- scitex/db/_PostgreSQLMixins/_BatchMixin.py +82 -0
- scitex/db/_PostgreSQLMixins/_BlobMixin.py +231 -0
- scitex/db/_PostgreSQLMixins/_ConnectionMixin.py +92 -0
- scitex/db/_PostgreSQLMixins/_ImportExportMixin.py +59 -0
- scitex/db/_PostgreSQLMixins/_IndexMixin.py +64 -0
- scitex/db/_PostgreSQLMixins/_MaintenanceMixin.py +175 -0
- scitex/db/_PostgreSQLMixins/_QueryMixin.py +108 -0
- scitex/db/_PostgreSQLMixins/_RowMixin.py +75 -0
- scitex/db/_PostgreSQLMixins/_SchemaMixin.py +126 -0
- scitex/db/_PostgreSQLMixins/_TableMixin.py +176 -0
- scitex/db/_PostgreSQLMixins/_TransactionMixin.py +57 -0
- scitex/db/_PostgreSQLMixins/__init__.py +34 -0
- scitex/db/_SQLite3.py +2136 -0
- scitex/db/_SQLite3Mixins/_BatchMixin.py +243 -0
- scitex/db/_SQLite3Mixins/_BlobMixin.py +229 -0
- scitex/db/_SQLite3Mixins/_ConnectionMixin.py +108 -0
- scitex/db/_SQLite3Mixins/_ImportExportMixin.py +80 -0
- scitex/db/_SQLite3Mixins/_IndexMixin.py +32 -0
- scitex/db/_SQLite3Mixins/_MaintenanceMixin.py +176 -0
- scitex/db/_SQLite3Mixins/_QueryMixin.py +83 -0
- scitex/db/_SQLite3Mixins/_RowMixin.py +75 -0
- scitex/db/_SQLite3Mixins/_TableMixin.py +183 -0
- scitex/db/_SQLite3Mixins/_TransactionMixin.py +71 -0
- scitex/db/_SQLite3Mixins/__init__.py +30 -0
- scitex/db/__init__.py +14 -0
- scitex/db/_delete_duplicates.py +397 -0
- scitex/db/_inspect.py +163 -0
- scitex/decorators/__init__.py +54 -0
- scitex/decorators/_auto_order.py +172 -0
- scitex/decorators/_batch_fn.py +127 -0
- scitex/decorators/_cache_disk.py +32 -0
- scitex/decorators/_cache_mem.py +12 -0
- scitex/decorators/_combined.py +98 -0
- scitex/decorators/_converters.py +282 -0
- scitex/decorators/_deprecated.py +26 -0
- scitex/decorators/_not_implemented.py +30 -0
- scitex/decorators/_numpy_fn.py +86 -0
- scitex/decorators/_pandas_fn.py +121 -0
- scitex/decorators/_preserve_doc.py +19 -0
- scitex/decorators/_signal_fn.py +95 -0
- scitex/decorators/_timeout.py +55 -0
- scitex/decorators/_torch_fn.py +136 -0
- scitex/decorators/_wrap.py +39 -0
- scitex/decorators/_xarray_fn.py +88 -0
- scitex/dev/__init__.py +15 -0
- scitex/dev/_analyze_code_flow.py +284 -0
- scitex/dev/_reload.py +59 -0
- scitex/dict/_DotDict.py +442 -0
- scitex/dict/__init__.py +18 -0
- scitex/dict/_listed_dict.py +42 -0
- scitex/dict/_pop_keys.py +36 -0
- scitex/dict/_replace.py +13 -0
- scitex/dict/_safe_merge.py +62 -0
- scitex/dict/_to_str.py +32 -0
- scitex/dsp/__init__.py +72 -0
- scitex/dsp/_crop.py +122 -0
- scitex/dsp/_demo_sig.py +331 -0
- scitex/dsp/_detect_ripples.py +212 -0
- scitex/dsp/_ensure_3d.py +18 -0
- scitex/dsp/_hilbert.py +78 -0
- scitex/dsp/_listen.py +702 -0
- scitex/dsp/_misc.py +30 -0
- scitex/dsp/_mne.py +32 -0
- scitex/dsp/_modulation_index.py +79 -0
- scitex/dsp/_pac.py +319 -0
- scitex/dsp/_psd.py +102 -0
- scitex/dsp/_resample.py +65 -0
- scitex/dsp/_time.py +36 -0
- scitex/dsp/_transform.py +68 -0
- scitex/dsp/_wavelet.py +212 -0
- scitex/dsp/add_noise.py +111 -0
- scitex/dsp/example.py +253 -0
- scitex/dsp/filt.py +155 -0
- scitex/dsp/norm.py +18 -0
- scitex/dsp/params.py +51 -0
- scitex/dsp/reference.py +43 -0
- scitex/dsp/template.py +25 -0
- scitex/dsp/utils/__init__.py +15 -0
- scitex/dsp/utils/_differential_bandpass_filters.py +120 -0
- scitex/dsp/utils/_ensure_3d.py +18 -0
- scitex/dsp/utils/_ensure_even_len.py +10 -0
- scitex/dsp/utils/_zero_pad.py +48 -0
- scitex/dsp/utils/filter.py +408 -0
- scitex/dsp/utils/pac.py +177 -0
- scitex/dt/__init__.py +8 -0
- scitex/dt/_linspace.py +130 -0
- scitex/etc/__init__.py +15 -0
- scitex/etc/wait_key.py +34 -0
- scitex/gen/_DimHandler.py +196 -0
- scitex/gen/_TimeStamper.py +244 -0
- scitex/gen/__init__.py +95 -0
- scitex/gen/_alternate_kwarg.py +13 -0
- scitex/gen/_cache.py +11 -0
- scitex/gen/_check_host.py +34 -0
- scitex/gen/_ci.py +12 -0
- scitex/gen/_close.py +222 -0
- scitex/gen/_embed.py +78 -0
- scitex/gen/_inspect_module.py +257 -0
- scitex/gen/_is_ipython.py +12 -0
- scitex/gen/_less.py +48 -0
- scitex/gen/_list_packages.py +139 -0
- scitex/gen/_mat2py.py +88 -0
- scitex/gen/_norm.py +170 -0
- scitex/gen/_paste.py +18 -0
- scitex/gen/_print_config.py +84 -0
- scitex/gen/_shell.py +48 -0
- scitex/gen/_src.py +111 -0
- scitex/gen/_start.py +451 -0
- scitex/gen/_symlink.py +55 -0
- scitex/gen/_symlog.py +27 -0
- scitex/gen/_tee.py +238 -0
- scitex/gen/_title2path.py +60 -0
- scitex/gen/_title_case.py +88 -0
- scitex/gen/_to_even.py +84 -0
- scitex/gen/_to_odd.py +34 -0
- scitex/gen/_to_rank.py +39 -0
- scitex/gen/_transpose.py +37 -0
- scitex/gen/_type.py +78 -0
- scitex/gen/_var_info.py +73 -0
- scitex/gen/_wrap.py +17 -0
- scitex/gen/_xml2dict.py +76 -0
- scitex/gen/misc.py +730 -0
- scitex/gen/path.py +0 -0
- scitex/general/__init__.py +5 -0
- scitex/gists/_SigMacro_processFigure_S.py +128 -0
- scitex/gists/_SigMacro_toBlue.py +172 -0
- scitex/gists/__init__.py +12 -0
- scitex/io/_H5Explorer.py +292 -0
- scitex/io/__init__.py +82 -0
- scitex/io/_cache.py +101 -0
- scitex/io/_flush.py +24 -0
- scitex/io/_glob.py +103 -0
- scitex/io/_json2md.py +113 -0
- scitex/io/_load.py +168 -0
- scitex/io/_load_configs.py +146 -0
- scitex/io/_load_modules/__init__.py +38 -0
- scitex/io/_load_modules/_catboost.py +66 -0
- scitex/io/_load_modules/_con.py +20 -0
- scitex/io/_load_modules/_db.py +24 -0
- scitex/io/_load_modules/_docx.py +42 -0
- scitex/io/_load_modules/_eeg.py +110 -0
- scitex/io/_load_modules/_hdf5.py +196 -0
- scitex/io/_load_modules/_image.py +19 -0
- scitex/io/_load_modules/_joblib.py +19 -0
- scitex/io/_load_modules/_json.py +18 -0
- scitex/io/_load_modules/_markdown.py +103 -0
- scitex/io/_load_modules/_matlab.py +37 -0
- scitex/io/_load_modules/_numpy.py +39 -0
- scitex/io/_load_modules/_optuna.py +155 -0
- scitex/io/_load_modules/_pandas.py +69 -0
- scitex/io/_load_modules/_pdf.py +31 -0
- scitex/io/_load_modules/_pickle.py +24 -0
- scitex/io/_load_modules/_torch.py +16 -0
- scitex/io/_load_modules/_txt.py +126 -0
- scitex/io/_load_modules/_xml.py +49 -0
- scitex/io/_load_modules/_yaml.py +23 -0
- scitex/io/_mv_to_tmp.py +19 -0
- scitex/io/_path.py +286 -0
- scitex/io/_reload.py +78 -0
- scitex/io/_save.py +539 -0
- scitex/io/_save_modules/__init__.py +66 -0
- scitex/io/_save_modules/_catboost.py +22 -0
- scitex/io/_save_modules/_csv.py +89 -0
- scitex/io/_save_modules/_excel.py +49 -0
- scitex/io/_save_modules/_hdf5.py +249 -0
- scitex/io/_save_modules/_html.py +48 -0
- scitex/io/_save_modules/_image.py +140 -0
- scitex/io/_save_modules/_joblib.py +25 -0
- scitex/io/_save_modules/_json.py +25 -0
- scitex/io/_save_modules/_listed_dfs_as_csv.py +57 -0
- scitex/io/_save_modules/_listed_scalars_as_csv.py +42 -0
- scitex/io/_save_modules/_matlab.py +24 -0
- scitex/io/_save_modules/_mp4.py +29 -0
- scitex/io/_save_modules/_numpy.py +57 -0
- scitex/io/_save_modules/_optuna_study_as_csv_and_pngs.py +38 -0
- scitex/io/_save_modules/_pickle.py +45 -0
- scitex/io/_save_modules/_plotly.py +27 -0
- scitex/io/_save_modules/_text.py +23 -0
- scitex/io/_save_modules/_torch.py +26 -0
- scitex/io/_save_modules/_yaml.py +29 -0
- scitex/life/__init__.py +10 -0
- scitex/life/_monitor_rain.py +49 -0
- scitex/linalg/__init__.py +17 -0
- scitex/linalg/_distance.py +63 -0
- scitex/linalg/_geometric_median.py +64 -0
- scitex/linalg/_misc.py +73 -0
- scitex/nn/_AxiswiseDropout.py +27 -0
- scitex/nn/_BNet.py +126 -0
- scitex/nn/_BNet_Res.py +164 -0
- scitex/nn/_ChannelGainChanger.py +44 -0
- scitex/nn/_DropoutChannels.py +50 -0
- scitex/nn/_Filters.py +489 -0
- scitex/nn/_FreqGainChanger.py +110 -0
- scitex/nn/_GaussianFilter.py +48 -0
- scitex/nn/_Hilbert.py +111 -0
- scitex/nn/_MNet_1000.py +157 -0
- scitex/nn/_ModulationIndex.py +221 -0
- scitex/nn/_PAC.py +414 -0
- scitex/nn/_PSD.py +40 -0
- scitex/nn/_ResNet1D.py +120 -0
- scitex/nn/_SpatialAttention.py +25 -0
- scitex/nn/_Spectrogram.py +161 -0
- scitex/nn/_SwapChannels.py +50 -0
- scitex/nn/_TransposeLayer.py +19 -0
- scitex/nn/_Wavelet.py +183 -0
- scitex/nn/__init__.py +63 -0
- scitex/os/__init__.py +8 -0
- scitex/os/_mv.py +50 -0
- scitex/parallel/__init__.py +8 -0
- scitex/parallel/_run.py +151 -0
- scitex/path/__init__.py +33 -0
- scitex/path/_clean.py +52 -0
- scitex/path/_find.py +108 -0
- scitex/path/_get_module_path.py +51 -0
- scitex/path/_get_spath.py +35 -0
- scitex/path/_getsize.py +18 -0
- scitex/path/_increment_version.py +87 -0
- scitex/path/_mk_spath.py +51 -0
- scitex/path/_path.py +19 -0
- scitex/path/_split.py +23 -0
- scitex/path/_this_path.py +19 -0
- scitex/path/_version.py +101 -0
- scitex/pd/__init__.py +41 -0
- scitex/pd/_find_indi.py +126 -0
- scitex/pd/_find_pval.py +113 -0
- scitex/pd/_force_df.py +154 -0
- scitex/pd/_from_xyz.py +71 -0
- scitex/pd/_ignore_SettingWithCopyWarning.py +34 -0
- scitex/pd/_melt_cols.py +81 -0
- scitex/pd/_merge_columns.py +221 -0
- scitex/pd/_mv.py +63 -0
- scitex/pd/_replace.py +62 -0
- scitex/pd/_round.py +93 -0
- scitex/pd/_slice.py +63 -0
- scitex/pd/_sort.py +91 -0
- scitex/pd/_to_numeric.py +53 -0
- scitex/pd/_to_xy.py +59 -0
- scitex/pd/_to_xyz.py +110 -0
- scitex/plt/__init__.py +36 -0
- scitex/plt/_subplots/_AxesWrapper.py +182 -0
- scitex/plt/_subplots/_AxisWrapper.py +249 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_AdjustmentMixin.py +414 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin.py +896 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_SeabornMixin.py +368 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_TrackingMixin.py +185 -0
- scitex/plt/_subplots/_AxisWrapperMixins/__init__.py +16 -0
- scitex/plt/_subplots/_FigWrapper.py +226 -0
- scitex/plt/_subplots/_SubplotsWrapper.py +171 -0
- scitex/plt/_subplots/__init__.py +111 -0
- scitex/plt/_subplots/_export_as_csv.py +232 -0
- scitex/plt/_subplots/_export_as_csv_formatters/__init__.py +61 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_bar.py +90 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_barh.py +49 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_boxplot.py +46 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_contour.py +39 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_errorbar.py +125 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_eventplot.py +72 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_fill.py +34 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_fill_between.py +36 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_hist.py +79 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_imshow.py +59 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_imshow2d.py +32 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot.py +79 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_box.py +75 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_conf_mat.py +64 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_ecdf.py +44 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_fillv.py +70 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_heatmap.py +66 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_image.py +95 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_joyplot.py +67 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_kde.py +52 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_line.py +46 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_mean_ci.py +46 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_mean_std.py +46 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_median_iqr.py +46 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_raster.py +44 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_rectangle.py +103 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_scatter_hist.py +82 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_shaded_line.py +58 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_violin.py +117 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_scatter.py +30 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_barplot.py +51 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_boxplot.py +93 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_heatmap.py +94 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_histplot.py +92 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_jointplot.py +65 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_kdeplot.py +59 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_lineplot.py +58 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_pairplot.py +45 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_scatterplot.py +70 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_stripplot.py +75 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_swarmplot.py +75 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_violinplot.py +155 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_violin.py +64 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_violinplot.py +77 -0
- scitex/plt/_subplots/_export_as_csv_formatters/test_formatters.py +210 -0
- scitex/plt/_subplots/_export_as_csv_formatters/verify_formatters.py +342 -0
- scitex/plt/_subplots/_export_as_csv_formatters.py +115 -0
- scitex/plt/_tpl.py +28 -0
- scitex/plt/ax/__init__.py +114 -0
- scitex/plt/ax/_plot/__init__.py +53 -0
- scitex/plt/ax/_plot/_plot_circular_hist.py +124 -0
- scitex/plt/ax/_plot/_plot_conf_mat.py +136 -0
- scitex/plt/ax/_plot/_plot_cube.py +57 -0
- scitex/plt/ax/_plot/_plot_ecdf.py +84 -0
- scitex/plt/ax/_plot/_plot_fillv.py +55 -0
- scitex/plt/ax/_plot/_plot_heatmap.py +266 -0
- scitex/plt/ax/_plot/_plot_image.py +94 -0
- scitex/plt/ax/_plot/_plot_joyplot.py +76 -0
- scitex/plt/ax/_plot/_plot_raster.py +172 -0
- scitex/plt/ax/_plot/_plot_rectangle.py +69 -0
- scitex/plt/ax/_plot/_plot_scatter_hist.py +133 -0
- scitex/plt/ax/_plot/_plot_shaded_line.py +142 -0
- scitex/plt/ax/_plot/_plot_statistical_shaded_line.py +221 -0
- scitex/plt/ax/_plot/_plot_violin.py +343 -0
- scitex/plt/ax/_style/__init__.py +38 -0
- scitex/plt/ax/_style/_add_marginal_ax.py +44 -0
- scitex/plt/ax/_style/_add_panel.py +92 -0
- scitex/plt/ax/_style/_extend.py +64 -0
- scitex/plt/ax/_style/_force_aspect.py +37 -0
- scitex/plt/ax/_style/_format_label.py +23 -0
- scitex/plt/ax/_style/_hide_spines.py +84 -0
- scitex/plt/ax/_style/_map_ticks.py +182 -0
- scitex/plt/ax/_style/_rotate_labels.py +215 -0
- scitex/plt/ax/_style/_sci_note.py +279 -0
- scitex/plt/ax/_style/_set_log_scale.py +299 -0
- scitex/plt/ax/_style/_set_meta.py +261 -0
- scitex/plt/ax/_style/_set_n_ticks.py +37 -0
- scitex/plt/ax/_style/_set_size.py +16 -0
- scitex/plt/ax/_style/_set_supxyt.py +116 -0
- scitex/plt/ax/_style/_set_ticks.py +276 -0
- scitex/plt/ax/_style/_set_xyt.py +121 -0
- scitex/plt/ax/_style/_share_axes.py +264 -0
- scitex/plt/ax/_style/_shift.py +139 -0
- scitex/plt/ax/_style/_show_spines.py +333 -0
- scitex/plt/color/_PARAMS.py +70 -0
- scitex/plt/color/__init__.py +52 -0
- scitex/plt/color/_add_hue_col.py +41 -0
- scitex/plt/color/_colors.py +205 -0
- scitex/plt/color/_get_colors_from_cmap.py +134 -0
- scitex/plt/color/_interpolate.py +29 -0
- scitex/plt/color/_vizualize_colors.py +54 -0
- scitex/plt/utils/__init__.py +44 -0
- scitex/plt/utils/_calc_bacc_from_conf_mat.py +46 -0
- scitex/plt/utils/_calc_nice_ticks.py +101 -0
- scitex/plt/utils/_close.py +68 -0
- scitex/plt/utils/_colorbar.py +96 -0
- scitex/plt/utils/_configure_mpl.py +295 -0
- scitex/plt/utils/_histogram_utils.py +132 -0
- scitex/plt/utils/_im2grid.py +70 -0
- scitex/plt/utils/_is_valid_axis.py +78 -0
- scitex/plt/utils/_mk_colorbar.py +65 -0
- scitex/plt/utils/_mk_patches.py +26 -0
- scitex/plt/utils/_scientific_captions.py +638 -0
- scitex/plt/utils/_scitex_config.py +223 -0
- scitex/reproduce/__init__.py +14 -0
- scitex/reproduce/_fix_seeds.py +45 -0
- scitex/reproduce/_gen_ID.py +55 -0
- scitex/reproduce/_gen_timestamp.py +35 -0
- scitex/res/__init__.py +5 -0
- scitex/resource/__init__.py +13 -0
- scitex/resource/_get_processor_usages.py +281 -0
- scitex/resource/_get_specs.py +280 -0
- scitex/resource/_log_processor_usages.py +190 -0
- scitex/resource/_utils/__init__.py +31 -0
- scitex/resource/_utils/_get_env_info.py +481 -0
- scitex/resource/limit_ram.py +33 -0
- scitex/scholar/__init__.py +24 -0
- scitex/scholar/_local_search.py +454 -0
- scitex/scholar/_paper.py +244 -0
- scitex/scholar/_pdf_downloader.py +325 -0
- scitex/scholar/_search.py +393 -0
- scitex/scholar/_vector_search.py +370 -0
- scitex/scholar/_web_sources.py +457 -0
- scitex/stats/__init__.py +31 -0
- scitex/stats/_calc_partial_corr.py +17 -0
- scitex/stats/_corr_test_multi.py +94 -0
- scitex/stats/_corr_test_wrapper.py +115 -0
- scitex/stats/_describe_wrapper.py +90 -0
- scitex/stats/_multiple_corrections.py +63 -0
- scitex/stats/_nan_stats.py +93 -0
- scitex/stats/_p2stars.py +116 -0
- scitex/stats/_p2stars_wrapper.py +56 -0
- scitex/stats/_statistical_tests.py +73 -0
- scitex/stats/desc/__init__.py +40 -0
- scitex/stats/desc/_describe.py +189 -0
- scitex/stats/desc/_nan.py +289 -0
- scitex/stats/desc/_real.py +94 -0
- scitex/stats/multiple/__init__.py +14 -0
- scitex/stats/multiple/_bonferroni_correction.py +72 -0
- scitex/stats/multiple/_fdr_correction.py +400 -0
- scitex/stats/multiple/_multicompair.py +28 -0
- scitex/stats/tests/__corr_test.py +277 -0
- scitex/stats/tests/__corr_test_multi.py +343 -0
- scitex/stats/tests/__corr_test_single.py +277 -0
- scitex/stats/tests/__init__.py +22 -0
- scitex/stats/tests/_brunner_munzel_test.py +192 -0
- scitex/stats/tests/_nocorrelation_test.py +28 -0
- scitex/stats/tests/_smirnov_grubbs.py +98 -0
- scitex/str/__init__.py +113 -0
- scitex/str/_clean_path.py +75 -0
- scitex/str/_color_text.py +52 -0
- scitex/str/_decapitalize.py +58 -0
- scitex/str/_factor_out_digits.py +281 -0
- scitex/str/_format_plot_text.py +498 -0
- scitex/str/_grep.py +48 -0
- scitex/str/_latex.py +155 -0
- scitex/str/_latex_fallback.py +471 -0
- scitex/str/_mask_api.py +39 -0
- scitex/str/_mask_api_key.py +8 -0
- scitex/str/_parse.py +158 -0
- scitex/str/_print_block.py +47 -0
- scitex/str/_print_debug.py +68 -0
- scitex/str/_printc.py +62 -0
- scitex/str/_readable_bytes.py +38 -0
- scitex/str/_remove_ansi.py +23 -0
- scitex/str/_replace.py +134 -0
- scitex/str/_search.py +125 -0
- scitex/str/_squeeze_space.py +36 -0
- scitex/tex/__init__.py +10 -0
- scitex/tex/_preview.py +103 -0
- scitex/tex/_to_vec.py +116 -0
- scitex/torch/__init__.py +18 -0
- scitex/torch/_apply_to.py +34 -0
- scitex/torch/_nan_funcs.py +77 -0
- scitex/types/_ArrayLike.py +44 -0
- scitex/types/_ColorLike.py +21 -0
- scitex/types/__init__.py +14 -0
- scitex/types/_is_listed_X.py +70 -0
- scitex/utils/__init__.py +22 -0
- scitex/utils/_compress_hdf5.py +116 -0
- scitex/utils/_email.py +120 -0
- scitex/utils/_grid.py +148 -0
- scitex/utils/_notify.py +247 -0
- scitex/utils/_search.py +121 -0
- scitex/web/__init__.py +38 -0
- scitex/web/_search_pubmed.py +438 -0
- scitex/web/_summarize_url.py +158 -0
- scitex-2.0.0.dist-info/METADATA +307 -0
- scitex-2.0.0.dist-info/RECORD +572 -0
- scitex-2.0.0.dist-info/WHEEL +6 -0
- scitex-2.0.0.dist-info/licenses/LICENSE +7 -0
- scitex-2.0.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Time-stamp: "2024-11-14 07:55:44 (ywatanabe)"
|
|
4
|
+
# File: ./scitex_repo/src/scitex/io/_load_modules/_numpy.py
|
|
5
|
+
|
|
6
|
+
from typing import Any
|
|
7
|
+
|
|
8
|
+
import numpy as np
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def _load_npy(lpath: str, **kwargs) -> Any:
|
|
12
|
+
"""Load NPY or NPZ file."""
|
|
13
|
+
if lpath.endswith(".npy"):
|
|
14
|
+
return __load_npy(lpath, **kwargs)
|
|
15
|
+
elif lpath.endswith(".npz"):
|
|
16
|
+
return __load_npz(lpath, **kwargs)
|
|
17
|
+
raise ValueError("File must have .npy or .npz extension")
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def __load_npy(lpath: str, **kwargs) -> Any:
|
|
21
|
+
"""Load NPY file."""
|
|
22
|
+
return np.load(lpath, allow_pickle=True, **kwargs)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def __load_npz(lpath: str, **kwargs) -> Any:
|
|
26
|
+
"""Load NPZ file."""
|
|
27
|
+
obj = np.load(lpath, allow_pickle=True)
|
|
28
|
+
|
|
29
|
+
# Check if it's a single array saved with default key
|
|
30
|
+
if len(obj.files) == 1 and obj.files[0] == "arr_0":
|
|
31
|
+
# Return the single array directly for backward compatibility
|
|
32
|
+
return obj["arr_0"]
|
|
33
|
+
|
|
34
|
+
# Return the NpzFile object so users can access arrays by key
|
|
35
|
+
# This preserves the dictionary-like interface
|
|
36
|
+
return obj
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
# EOF
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Time-stamp: "2024-11-14 07:55:45 (ywatanabe)"
|
|
4
|
+
# File: ./scitex_repo/src/scitex/io/_load_modules/_optuna.py
|
|
5
|
+
|
|
6
|
+
from ._yaml import _load_yaml
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def load_yaml_as_an_optuna_dict(fpath_yaml, trial):
|
|
10
|
+
"""
|
|
11
|
+
Load a YAML file and convert it to an Optuna-compatible dictionary.
|
|
12
|
+
|
|
13
|
+
This function reads a YAML file containing hyperparameter configurations
|
|
14
|
+
and converts it to a dictionary suitable for use with Optuna trials.
|
|
15
|
+
|
|
16
|
+
Parameters:
|
|
17
|
+
-----------
|
|
18
|
+
fpath_yaml : str
|
|
19
|
+
The file path to the YAML configuration file.
|
|
20
|
+
trial : optuna.trial.Trial
|
|
21
|
+
The Optuna trial object to use for suggesting hyperparameters.
|
|
22
|
+
|
|
23
|
+
Returns:
|
|
24
|
+
--------
|
|
25
|
+
dict
|
|
26
|
+
A dictionary containing the hyperparameters with values suggested by Optuna.
|
|
27
|
+
|
|
28
|
+
Raises:
|
|
29
|
+
-------
|
|
30
|
+
FileNotFoundError
|
|
31
|
+
If the specified YAML file does not exist.
|
|
32
|
+
ValueError
|
|
33
|
+
If the YAML file contains invalid configuration for Optuna.
|
|
34
|
+
"""
|
|
35
|
+
_d = _load_yaml(fpath_yaml)
|
|
36
|
+
|
|
37
|
+
for k, v in _d.items():
|
|
38
|
+
dist = v["distribution"]
|
|
39
|
+
|
|
40
|
+
if dist == "categorical":
|
|
41
|
+
_d[k] = trial.suggest_categorical(k, v["values"])
|
|
42
|
+
|
|
43
|
+
elif dist == "uniform":
|
|
44
|
+
_d[k] = trial.suggest_int(k, float(v["min"]), float(v["max"]))
|
|
45
|
+
|
|
46
|
+
elif dist == "loguniform":
|
|
47
|
+
_d[k] = trial.suggest_loguniform(k, float(v["min"]), float(v["max"]))
|
|
48
|
+
|
|
49
|
+
elif dist == "intloguniform":
|
|
50
|
+
_d[k] = trial.suggest_int(k, float(v["min"]), float(v["max"]), log=True)
|
|
51
|
+
|
|
52
|
+
return _d
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def load_study_rdb(study_name, rdb_raw_bytes_url):
|
|
56
|
+
"""
|
|
57
|
+
Load an Optuna study from a RDB (Relational Database) file.
|
|
58
|
+
|
|
59
|
+
This function loads an Optuna study from a given RDB file URL.
|
|
60
|
+
|
|
61
|
+
Parameters:
|
|
62
|
+
-----------
|
|
63
|
+
study_name : str
|
|
64
|
+
The name of the Optuna study to load.
|
|
65
|
+
rdb_raw_bytes_url : str
|
|
66
|
+
The URL of the RDB file, typically in the format "sqlite:///*.db".
|
|
67
|
+
|
|
68
|
+
Returns:
|
|
69
|
+
--------
|
|
70
|
+
optuna.study.Study
|
|
71
|
+
The loaded Optuna study object.
|
|
72
|
+
|
|
73
|
+
Raises:
|
|
74
|
+
-------
|
|
75
|
+
optuna.exceptions.StorageInvalidUsageError
|
|
76
|
+
If there's an error loading the study from the storage.
|
|
77
|
+
|
|
78
|
+
Example:
|
|
79
|
+
--------
|
|
80
|
+
>>> study = load_study_rdb(
|
|
81
|
+
... study_name="YOUR_STUDY_NAME",
|
|
82
|
+
... rdb_raw_bytes_url="sqlite:///path/to/your/study.db"
|
|
83
|
+
... )
|
|
84
|
+
"""
|
|
85
|
+
import optuna
|
|
86
|
+
|
|
87
|
+
storage = optuna.storages.RDBStorage(url=rdb_raw_bytes_url)
|
|
88
|
+
study = optuna.load_study(study_name=study_name, storage=storage)
|
|
89
|
+
print(f"Loaded: {rdb_raw_bytes_url}")
|
|
90
|
+
return study
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
def load_yaml_as_an_optuna_dict(fpath_yaml, trial):
|
|
94
|
+
"""
|
|
95
|
+
Load a YAML file and convert it to an Optuna-compatible dictionary.
|
|
96
|
+
|
|
97
|
+
Parameters:
|
|
98
|
+
-----------
|
|
99
|
+
fpath_yaml : str
|
|
100
|
+
The path to the YAML file.
|
|
101
|
+
trial : optuna.trial.Trial
|
|
102
|
+
The Optuna trial object.
|
|
103
|
+
|
|
104
|
+
Returns:
|
|
105
|
+
--------
|
|
106
|
+
dict
|
|
107
|
+
A dictionary with Optuna-compatible parameter suggestions.
|
|
108
|
+
"""
|
|
109
|
+
_d = _load_yaml(fpath_yaml)
|
|
110
|
+
|
|
111
|
+
for k, v in _d.items():
|
|
112
|
+
|
|
113
|
+
dist = v["distribution"]
|
|
114
|
+
|
|
115
|
+
if dist == "categorical":
|
|
116
|
+
_d[k] = trial.suggest_categorical(k, v["values"])
|
|
117
|
+
|
|
118
|
+
elif dist == "uniform":
|
|
119
|
+
_d[k] = trial.suggest_int(k, float(v["min"]), float(v["max"]))
|
|
120
|
+
|
|
121
|
+
elif dist == "loguniform":
|
|
122
|
+
_d[k] = trial.suggest_loguniform(k, float(v["min"]), float(v["max"]))
|
|
123
|
+
|
|
124
|
+
elif dist == "intloguniform":
|
|
125
|
+
_d[k] = trial.suggest_int(k, float(v["min"]), float(v["max"]), log=True)
|
|
126
|
+
|
|
127
|
+
return _d
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
def load_study_rdb(study_name, rdb_raw_bytes_url):
|
|
131
|
+
"""
|
|
132
|
+
Load an Optuna study from a RDB storage.
|
|
133
|
+
|
|
134
|
+
Parameters:
|
|
135
|
+
-----------
|
|
136
|
+
study_name : str
|
|
137
|
+
The name of the Optuna study.
|
|
138
|
+
rdb_raw_bytes_url : str
|
|
139
|
+
The URL of the RDB storage.
|
|
140
|
+
|
|
141
|
+
Returns:
|
|
142
|
+
--------
|
|
143
|
+
optuna.study.Study
|
|
144
|
+
The loaded Optuna study object.
|
|
145
|
+
"""
|
|
146
|
+
import optuna
|
|
147
|
+
|
|
148
|
+
# rdb_raw_bytes_url = "sqlite:////tmp/fake/ywatanabe/_MicroNN_WindowSize-1.0-sec_MaxEpochs_100_2021-1216-1844/optuna_study_test_file#0.db"
|
|
149
|
+
storage = optuna.storages.RDBStorage(url=rdb_raw_bytes_url)
|
|
150
|
+
study = optuna.load_study(study_name=study_name, storage=storage)
|
|
151
|
+
print(f"\nLoaded: {rdb_raw_bytes_url}\n")
|
|
152
|
+
return study
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
# EOF
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Time-stamp: "2024-11-14 07:41:31 (ywatanabe)"
|
|
4
|
+
# File: ./scitex_repo/src/scitex/io/_load_modules/_pandas.py
|
|
5
|
+
|
|
6
|
+
import pandas as pd
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def _load_csv(lpath, **kwargs):
|
|
10
|
+
"""Load CSV files."""
|
|
11
|
+
if not lpath.endswith(".csv"):
|
|
12
|
+
raise ValueError("File must have .csv extension")
|
|
13
|
+
|
|
14
|
+
# Handle index column - default to None to match default index=False in saving
|
|
15
|
+
index_col = kwargs.pop("index_col", None)
|
|
16
|
+
obj = pd.read_csv(lpath, index_col=index_col, **kwargs)
|
|
17
|
+
|
|
18
|
+
# Remove unnamed columns only if they exist
|
|
19
|
+
unnamed_cols = obj.columns.str.contains("^Unnamed")
|
|
20
|
+
if unnamed_cols.any():
|
|
21
|
+
obj = obj.loc[:, ~unnamed_cols]
|
|
22
|
+
|
|
23
|
+
return obj
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
# def _load_csv(lpath, **kwargs):
|
|
27
|
+
# """Load CSV files."""
|
|
28
|
+
# if not lpath.endswith('.csv'):
|
|
29
|
+
# raise ValueError("File must have .csv extension")
|
|
30
|
+
# index_col = kwargs.get("index_col", 0)
|
|
31
|
+
# obj = pd.read_csv(lpath, **kwargs)
|
|
32
|
+
# return obj.loc[:, ~obj.columns.str.contains("^Unnamed")]
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def _load_tsv(lpath, **kwargs):
|
|
36
|
+
"""Load TSV files."""
|
|
37
|
+
if not lpath.endswith(".tsv"):
|
|
38
|
+
raise ValueError("File must have .tsv extension")
|
|
39
|
+
return pd.read_csv(lpath, sep="\t", **kwargs)
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def _load_excel(lpath, **kwargs):
|
|
43
|
+
"""Load Excel files."""
|
|
44
|
+
if not lpath.endswith((".xls", ".xlsx", ".xlsm", ".xlsb")):
|
|
45
|
+
raise ValueError("File must have Excel extension")
|
|
46
|
+
return pd.read_excel(lpath, **kwargs)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def _load_parquet(lpath, **kwargs):
|
|
50
|
+
"""Load Parquet files."""
|
|
51
|
+
if not lpath.endswith(".parquet"):
|
|
52
|
+
raise ValueError("File must have .parquet extension")
|
|
53
|
+
return pd.read_parquet(lpath, **kwargs)
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
# def _load_excel(lpath):
|
|
57
|
+
# workbook = openpyxl.load_workbook(lpath)
|
|
58
|
+
# all_text = []
|
|
59
|
+
# for sheet in workbook:
|
|
60
|
+
# for row in sheet.iter_rows(values_only=True):
|
|
61
|
+
# all_text.append(
|
|
62
|
+
# " ".join(
|
|
63
|
+
# [str(cell) if cell is not None else "" for cell in row]
|
|
64
|
+
# )
|
|
65
|
+
# )
|
|
66
|
+
# return "\n".join(all_text)
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
# EOF
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Time-stamp: "2024-11-14 07:55:46 (ywatanabe)"
|
|
4
|
+
# File: ./scitex_repo/src/scitex/io/_load_modules/_pdf.py
|
|
5
|
+
|
|
6
|
+
try:
|
|
7
|
+
import PyPDF2
|
|
8
|
+
except ImportError:
|
|
9
|
+
PyPDF2 = None
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def _load_pdf(lpath, **kwargs):
|
|
13
|
+
"""Load PDF file and return extracted text."""
|
|
14
|
+
if PyPDF2 is None:
|
|
15
|
+
raise ImportError("PyPDF2 is required for PDF loading. Install with: pip install PyPDF2")
|
|
16
|
+
|
|
17
|
+
try:
|
|
18
|
+
if not lpath.endswith(".pdf"):
|
|
19
|
+
raise ValueError("File must have .pdf extension")
|
|
20
|
+
|
|
21
|
+
reader = PyPDF2.PdfReader(lpath)
|
|
22
|
+
full_text = []
|
|
23
|
+
for page_num in range(len(reader.pages)):
|
|
24
|
+
page = reader.pages[page_num]
|
|
25
|
+
full_text.append(page.extract_text())
|
|
26
|
+
return "\n".join(full_text)
|
|
27
|
+
except (ValueError, FileNotFoundError, PyPDF2.PdfReadError) as e:
|
|
28
|
+
raise ValueError(f"Error loading PDF {lpath}: {str(e)}")
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
# EOF
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Time-stamp: "2024-11-14 07:41:33 (ywatanabe)"
|
|
4
|
+
# File: ./scitex_repo/src/scitex/io/_load_modules/_pickle.py
|
|
5
|
+
|
|
6
|
+
import pickle
|
|
7
|
+
import gzip
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def _load_pickle(lpath, **kwargs):
|
|
11
|
+
"""Load pickle file (compressed or uncompressed)."""
|
|
12
|
+
if lpath.endswith(".pkl.gz"):
|
|
13
|
+
# Handle gzip compressed pickle
|
|
14
|
+
with gzip.open(lpath, "rb") as f:
|
|
15
|
+
return pickle.load(f, **kwargs)
|
|
16
|
+
elif lpath.endswith(".pkl") or lpath.endswith(".pickle"):
|
|
17
|
+
# Handle regular pickle
|
|
18
|
+
with open(lpath, "rb") as f:
|
|
19
|
+
return pickle.load(f, **kwargs)
|
|
20
|
+
else:
|
|
21
|
+
raise ValueError("File must have .pkl, .pickle, or .pkl.gz extension")
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
# EOF
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Time-stamp: "2024-11-14 07:41:34 (ywatanabe)"
|
|
4
|
+
# File: ./scitex_repo/src/scitex/io/_load_modules/_torch.py
|
|
5
|
+
|
|
6
|
+
import torch
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def _load_torch(lpath, **kwargs):
|
|
10
|
+
"""Load PyTorch model/checkpoint file."""
|
|
11
|
+
if not lpath.endswith((".pth", ".pt")):
|
|
12
|
+
raise ValueError("File must have .pth or .pt extension")
|
|
13
|
+
return torch.load(lpath, **kwargs)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
# EOF
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Timestamp: "2025-05-03 11:58:11 (ywatanabe)"
|
|
4
|
+
# File: /home/ywatanabe/proj/scitex_repo/src/scitex/io/_load_modules/_txt.py
|
|
5
|
+
# ----------------------------------------
|
|
6
|
+
import os
|
|
7
|
+
|
|
8
|
+
__FILE__ = "./src/scitex/io/_load_modules/_txt.py"
|
|
9
|
+
__DIR__ = os.path.dirname(__FILE__)
|
|
10
|
+
# ----------------------------------------
|
|
11
|
+
|
|
12
|
+
import warnings
|
|
13
|
+
|
|
14
|
+
# # UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8a in position 30173: invalid start byte
|
|
15
|
+
# def _load_txt(lpath, **kwargs):
|
|
16
|
+
# """Load text file and return non-empty lines."""
|
|
17
|
+
# SUPPORTED_EXTENSIONS = (".txt", ".log", ".event", ".py", ".sh", "")
|
|
18
|
+
# try:
|
|
19
|
+
# if not lpath.endswith(SUPPORTED_EXTENSIONS):
|
|
20
|
+
# warnings.warn(
|
|
21
|
+
# f"File must have supported extensions: {SUPPORTED_EXTENSIONS}"
|
|
22
|
+
# )
|
|
23
|
+
|
|
24
|
+
# # Try UTF-8 first (most common)
|
|
25
|
+
# try:
|
|
26
|
+
# with open(lpath, "r", encoding="utf-8") as f:
|
|
27
|
+
# return [
|
|
28
|
+
# line.strip()
|
|
29
|
+
# for line in f.read().splitlines()
|
|
30
|
+
# if line.strip()
|
|
31
|
+
# ]
|
|
32
|
+
# except UnicodeDecodeError:
|
|
33
|
+
# # Fallback to system default encoding
|
|
34
|
+
# with open(lpath, "r") as f:
|
|
35
|
+
# return [
|
|
36
|
+
# line.strip()
|
|
37
|
+
# for line in f.read().splitlines()
|
|
38
|
+
# if line.strip()
|
|
39
|
+
# ]
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
# except (ValueError, FileNotFoundError) as e:
|
|
43
|
+
# raise ValueError(f"Error loading file {lpath}: {str(e)}")
|
|
44
|
+
# Removed duplicate function - see main _load_txt below
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def _load_txt(lpath, strip=False, as_lines=False):
|
|
48
|
+
"""
|
|
49
|
+
Load text file and return its content.
|
|
50
|
+
- Warn if extension is unexpected.
|
|
51
|
+
- Try UTF-8 first, then default encoding.
|
|
52
|
+
- If strip=True, strip whitespace.
|
|
53
|
+
- If as_lines=True, return list of lines (backward compatibility).
|
|
54
|
+
"""
|
|
55
|
+
if not lpath.endswith((".txt", ".log", ".event", ".py", ".sh")):
|
|
56
|
+
warnings.warn(f"Unexpected extension for file: {lpath}")
|
|
57
|
+
|
|
58
|
+
try:
|
|
59
|
+
with open(lpath, "r", encoding="utf-8") as file:
|
|
60
|
+
content = file.read()
|
|
61
|
+
except UnicodeDecodeError:
|
|
62
|
+
# Fallback: try to detect correct encoding
|
|
63
|
+
encoding = _check_encoding(lpath)
|
|
64
|
+
with open(lpath, "r", encoding=encoding) as file:
|
|
65
|
+
content = file.read()
|
|
66
|
+
|
|
67
|
+
# For backward compatibility, check if as_lines parameter or legacy behavior needed
|
|
68
|
+
if as_lines:
|
|
69
|
+
raw_lines = content.splitlines()
|
|
70
|
+
if strip:
|
|
71
|
+
return [line.strip() for line in raw_lines if line.strip()]
|
|
72
|
+
return [line for line in raw_lines if line.strip()]
|
|
73
|
+
|
|
74
|
+
# Default: return full content (possibly stripped)
|
|
75
|
+
if strip:
|
|
76
|
+
return content.strip()
|
|
77
|
+
|
|
78
|
+
return content
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def _check_encoding(file_path):
|
|
82
|
+
"""Check file encoding by trying common encodings."""
|
|
83
|
+
encodings = ["utf-8", "latin1", "cp1252", "iso-8859-1", "ascii"]
|
|
84
|
+
|
|
85
|
+
for encoding in encodings:
|
|
86
|
+
try:
|
|
87
|
+
with open(file_path, "r", encoding=encoding) as f:
|
|
88
|
+
f.read()
|
|
89
|
+
return encoding
|
|
90
|
+
except UnicodeDecodeError:
|
|
91
|
+
continue
|
|
92
|
+
|
|
93
|
+
raise ValueError(f"Unable to determine encoding for {file_path}")
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
# def _check_encoding(file_path):
|
|
97
|
+
# """
|
|
98
|
+
# Check the encoding of a given file.
|
|
99
|
+
|
|
100
|
+
# This function attempts to read the file with different encodings
|
|
101
|
+
# to determine the correct one.
|
|
102
|
+
|
|
103
|
+
# Parameters:
|
|
104
|
+
# -----------
|
|
105
|
+
# file_path : str
|
|
106
|
+
# The path to the file to check.
|
|
107
|
+
|
|
108
|
+
# Returns:
|
|
109
|
+
# --------
|
|
110
|
+
# str
|
|
111
|
+
# The detected encoding of the file.
|
|
112
|
+
|
|
113
|
+
# Raises:
|
|
114
|
+
# -------
|
|
115
|
+
# IOError
|
|
116
|
+
# If the file cannot be read or the encoding cannot be determined.
|
|
117
|
+
# """
|
|
118
|
+
# import chardet
|
|
119
|
+
|
|
120
|
+
# with open(file_path, "rb") as file:
|
|
121
|
+
# raw_data = file.read()
|
|
122
|
+
|
|
123
|
+
# result = chardet.detect(raw_data)
|
|
124
|
+
# return result["encoding"]
|
|
125
|
+
|
|
126
|
+
# EOF
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Time-stamp: "2024-11-14 07:55:49 (ywatanabe)"
|
|
4
|
+
# File: ./scitex_repo/src/scitex/io/_load_modules/_xml.py
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def _load_xml(lpath, **kwargs):
|
|
8
|
+
"""Load XML file and convert to dict."""
|
|
9
|
+
if not lpath.endswith(".xml"):
|
|
10
|
+
raise ValueError("File must have .xml extension")
|
|
11
|
+
|
|
12
|
+
# Import xml2dict locally to avoid circular imports
|
|
13
|
+
from xml.etree import cElementTree as ElementTree
|
|
14
|
+
|
|
15
|
+
# Inline the xml2dict functionality to avoid circular import
|
|
16
|
+
tree = ElementTree.parse(lpath)
|
|
17
|
+
root = tree.getroot()
|
|
18
|
+
|
|
19
|
+
# Simplified XML to dict conversion - basic implementation
|
|
20
|
+
def xml_element_to_dict(element):
|
|
21
|
+
result = {}
|
|
22
|
+
|
|
23
|
+
# Add attributes
|
|
24
|
+
if element.attrib:
|
|
25
|
+
result.update(element.attrib)
|
|
26
|
+
|
|
27
|
+
# Handle child elements
|
|
28
|
+
for child in element:
|
|
29
|
+
if child.tag in result:
|
|
30
|
+
# Convert to list if multiple elements with same tag
|
|
31
|
+
if not isinstance(result[child.tag], list):
|
|
32
|
+
result[child.tag] = [result[child.tag]]
|
|
33
|
+
result[child.tag].append(xml_element_to_dict(child))
|
|
34
|
+
else:
|
|
35
|
+
result[child.tag] = xml_element_to_dict(child)
|
|
36
|
+
|
|
37
|
+
# Handle text content
|
|
38
|
+
if element.text and element.text.strip():
|
|
39
|
+
if result:
|
|
40
|
+
result['text'] = element.text.strip()
|
|
41
|
+
else:
|
|
42
|
+
return element.text.strip()
|
|
43
|
+
|
|
44
|
+
return result
|
|
45
|
+
|
|
46
|
+
return xml_element_to_dict(root)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
# EOF
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Time-stamp: "2024-11-14 07:41:37 (ywatanabe)"
|
|
4
|
+
# File: ./scitex_repo/src/scitex/io/_load_modules/_yaml.py
|
|
5
|
+
|
|
6
|
+
import yaml
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def _load_yaml(lpath, **kwargs):
|
|
10
|
+
"""Load YAML file with optional key lowercasing."""
|
|
11
|
+
if not lpath.endswith((".yaml", ".yml")):
|
|
12
|
+
raise ValueError("File must have .yaml or .yml extension")
|
|
13
|
+
|
|
14
|
+
lower = kwargs.pop("lower", False)
|
|
15
|
+
with open(lpath) as f:
|
|
16
|
+
obj = yaml.safe_load(f, **kwargs)
|
|
17
|
+
|
|
18
|
+
if lower:
|
|
19
|
+
obj = {k.lower(): v for k, v in obj.items()}
|
|
20
|
+
return obj
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
# EOF
|
scitex/io/_mv_to_tmp.py
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Time-stamp: "2024-11-02 21:25:50 (ywatanabe)"
|
|
4
|
+
# File: ./scitex_repo/src/scitex/io/_mv_to_tmp.py
|
|
5
|
+
|
|
6
|
+
from shutil import move
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def _mv_to_tmp(fpath, L=2):
|
|
10
|
+
try:
|
|
11
|
+
tgt_fname = "-".join(fpath.split("/")[-L:])
|
|
12
|
+
tgt_fpath = "/tmp/{}".format(tgt_fname)
|
|
13
|
+
move(fpath, tgt_fpath)
|
|
14
|
+
print("Moved to: {}".format(tgt_fpath))
|
|
15
|
+
except:
|
|
16
|
+
pass
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
# EOF
|