scipy-best-practices
Best practices for SciPy scientific computing, optimization, signal processing, and statistical analysis in Python
What this skill does
# SciPy Best Practices Expert guidelines for SciPy development, focusing on scientific computing, optimization, signal processing, and statistical analysis. ## Code Style and Structure - Write concise, technical Python code with accurate SciPy examples - Prioritize numerical accuracy and computational efficiency - Use functional programming patterns for mathematical operations - Prefer vectorized operations over explicit loops - Use descriptive variable names reflecting scientific context - Follow PEP 8 style guidelines ## scipy.optimize - Optimization - Use `scipy.optimize.minimize()` for general-purpose optimization - Choose appropriate method based on problem characteristics: - `'BFGS'` for smooth, unconstrained problems - `'L-BFGS-B'` for bounded problems - `'SLSQP'` for constrained optimization - `'Nelder-Mead'` for non-differentiable functions - Provide gradients when available for faster convergence - Use `scipy.optimize.curve_fit()` for nonlinear least squares fitting - Use `scipy.optimize.root()` for finding roots of equations ## scipy.linalg - Linear Algebra - Prefer `scipy.linalg` over `numpy.linalg` for additional functionality - Use `scipy.linalg.solve()` instead of computing matrix inverse - Leverage specialized solvers for structured matrices (banded, triangular) - Use `scipy.linalg.lu_factor()` and `lu_solve()` for multiple right-hand sides - Use sparse matrix solvers from `scipy.sparse.linalg` for large sparse systems ## scipy.stats - Statistics - Use distribution objects for probability calculations - Leverage `scipy.stats.describe()` for summary statistics - Use hypothesis testing functions: `ttest_ind()`, `chi2_contingency()`, `mannwhitneyu()` - Generate random samples with `.rvs()` method on distributions - Use `.fit()` for parameter estimation from data ## scipy.interpolate - Interpolation - Use `scipy.interpolate.interp1d()` for 1D interpolation - Use `scipy.interpolate.griddata()` for scattered data interpolation - Choose appropriate interpolation method: 'linear', 'cubic', 'nearest' - Use spline functions for smooth interpolation: `UnivariateSpline`, `BSpline` - Consider `RegularGridInterpolator` for regular grid data ## scipy.integrate - Integration - Use `scipy.integrate.quad()` for single integrals - Use `scipy.integrate.dblquad()`, `tplquad()` for multiple integrals - Use `scipy.integrate.solve_ivp()` for ordinary differential equations - Choose appropriate ODE method: 'RK45', 'BDF', 'LSODA' - Provide Jacobian for stiff systems to improve performance ## scipy.signal - Signal Processing - Use `scipy.signal.butter()`, `cheby1()`, `ellip()` for filter design - Apply filters with `scipy.signal.filtfilt()` for zero-phase filtering - Use `scipy.signal.welch()` for power spectral density estimation - Use `scipy.signal.find_peaks()` for peak detection - Leverage `scipy.signal.convolve()` and `correlate()` for convolution ## scipy.sparse - Sparse Matrices - Use appropriate sparse format for your use case: - `csr_matrix` for efficient row slicing and matrix-vector products - `csc_matrix` for efficient column slicing - `coo_matrix` for constructing sparse matrices - `lil_matrix` for incremental construction - Convert to optimal format before operations - Use `scipy.sparse.linalg` solvers for sparse linear systems ## Performance Optimization - Use appropriate data types (`float64` for precision, `float32` for memory) - Leverage BLAS/LAPACK through SciPy for optimized linear algebra - Pre-allocate arrays when possible - Use in-place operations when available ## Error Handling and Validation - Check convergence status of optimization routines - Validate numerical results for reasonableness - Handle ill-conditioned problems gracefully - Use appropriate tolerances for convergence criteria ## Testing Scientific Code - Test against known analytical solutions - Use `np.testing.assert_allclose()` for numerical comparisons - Test edge cases and boundary conditions - Verify conservation laws and invariants ## Key Conventions - Import specific submodules: `from scipy import optimize, stats, linalg` - Use `snake_case` for variables and functions - Document algorithm choices and parameters - Include convergence diagnostics in output
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.