Recent Releases of simpeg

simpeg - v0.24.0

What's Changed

  • Bugfix for TDEM magnetic dipole sources by @lheagy in https://github.com/simpeg/simpeg/pull/1572
  • Fix ubcstyle printout by @jcapriot in https://github.com/simpeg/simpeg/pull/1577
  • Add docstring to n_processes in potential field simulations by @santisoler in https://github.com/simpeg/simpeg/pull/1578
  • Move simulation solver from base simulation to PDE simulation by @jcapriot in https://github.com/simpeg/simpeg/pull/1582
  • Update and fix instructions to build the docs by @santisoler in https://github.com/simpeg/simpeg/pull/1583
  • Change location of mesh attribute by @jcapriot in https://github.com/simpeg/simpeg/pull/1585
  • Speed up most commonly used deriv/deriv2 in PGI by @johnweis0480 in https://github.com/simpeg/simpeg/pull/1587
  • Improve dot products in PGIsmallness.__call__ and update docstring by @johnweis0480 in https://github.com/simpeg/simpeg/pull/1588
  • Rename delete on model update by @jcapriot in https://github.com/simpeg/simpeg/pull/1589
  • update PGI Example plotting script for deprecated collections by @jcapriot in https://github.com/simpeg/simpeg/pull/1595
  • Coverage upload on failed test by @jcapriot in https://github.com/simpeg/simpeg/pull/1596
  • Use zizmor to lint GitHub Actions workflows by @santisoler in https://github.com/simpeg/simpeg/pull/1592
  • Update installation instructions in docs by @santisoler in https://github.com/simpeg/simpeg/pull/1597
  • Set permissions in Actions to avoid zizmor's excessive-permissions by @santisoler in https://github.com/simpeg/simpeg/pull/1602
  • Fix for removed quadrature function on new scipy versions by @jcapriot in https://github.com/simpeg/simpeg/pull/1603
  • Install zizmor through conda-forge in environment.yml by @santisoler in https://github.com/simpeg/simpeg/pull/1600
  • Raise errors if dpred in BaseDataMisfit has nans by @santisoler in https://github.com/simpeg/simpeg/pull/1615
  • Update Black's Python versions in pyproject.toml by @santisoler in https://github.com/simpeg/simpeg/pull/1620
  • Use shell rendering in Bug report template by @santisoler in https://github.com/simpeg/simpeg/pull/1612
  • Merge Getting Started and Examples into User Guide by @santisoler in https://github.com/simpeg/simpeg/pull/1619
  • Fix usage of "bug" label in bug report template by @santisoler in https://github.com/simpeg/simpeg/pull/1624
  • Fix redirects links in docs by @santisoler in https://github.com/simpeg/simpeg/pull/1623
  • Fix bug on getJ of gravity simulation by @santisoler in https://github.com/simpeg/simpeg/pull/1621
  • Fix redirect to user guide index page by @santisoler in https://github.com/simpeg/simpeg/pull/1627
  • Move indexing of flat arrays to Survey classes by @santisoler in https://github.com/simpeg/simpeg/pull/1616
  • Replace Data indexing for Survey slicing where needed by @santisoler in https://github.com/simpeg/simpeg/pull/1632
  • Implement G matrix as LinearOperator in gravity simulation by @santisoler in https://github.com/simpeg/simpeg/pull/1622
  • Set maximum number of iterations in eq sources tests by @santisoler in https://github.com/simpeg/simpeg/pull/1636
  • Em1d multiple rx locs by @jcapriot in https://github.com/simpeg/simpeg/pull/1637
  • Fix definition of model in gravity J-related tests by @santisoler in https://github.com/simpeg/simpeg/pull/1643
  • Improve docstring of dip_azimuth2cartesian by @santisoler in https://github.com/simpeg/simpeg/pull/1642
  • Improve variable names in gravity test by @santisoler in https://github.com/simpeg/simpeg/pull/1641
  • Test transpose of gravity getJ as linear operator by @santisoler in https://github.com/simpeg/simpeg/pull/1644
  • Configure zizmor to pin reviewdog actions with tags by @santisoler in https://github.com/simpeg/simpeg/pull/1650
  • Deprecate components in potential field surveys by @santisoler in https://github.com/simpeg/simpeg/pull/1633
  • Fix bug on magnetic simulation nD property by @santisoler in https://github.com/simpeg/simpeg/pull/1646
  • Make pytest error on random seeded test by @jcapriot in https://github.com/simpeg/simpeg/pull/1598
  • Add support for potential fields survey indexing by @jcapriot in https://github.com/simpeg/simpeg/pull/1635
  • Implement magnetic G as linear operator by @santisoler in https://github.com/simpeg/simpeg/pull/1634
  • Use Numpy's RNG in tests for depth weighting by @santisoler in https://github.com/simpeg/simpeg/pull/1570
  • Raise NotImplementedError on getJ for NSEM 1D simulations by @santisoler in https://github.com/simpeg/simpeg/pull/1653
  • Set the model when calling getJ in DC and SIP simulations by @lheagy in https://github.com/simpeg/simpeg/pull/1361
  • Fix getJ method in TDEM and FDEM 1D simulations by @ghwilliams in https://github.com/simpeg/simpeg/pull/1638
  • Add release notes for v0.24.0 by @santisoler in https://github.com/simpeg/simpeg/pull/1655

Full Changelog: https://github.com/simpeg/simpeg/compare/v0.23.0...v0.24.0

- Python
Published by santisoler about 1 year ago

simpeg - v0.23.0

What's Changed

  • Make pandas & scikit-learn optional dependencies by @prisae in https://github.com/simpeg/simpeg/pull/1514
  • Dask races by @jcapriot in https://github.com/simpeg/simpeg/pull/1469
  • Irls refactor by @domfournier in https://github.com/simpeg/simpeg/pull/1349
  • Minimum python version update by @jcapriot in https://github.com/simpeg/simpeg/pull/1522
  • Replace ind_active for active_cells in pf simulations by @santisoler in https://github.com/simpeg/simpeg/pull/1520
  • Move push to codecov to its own stage by @santisoler in https://github.com/simpeg/simpeg/pull/1493
  • Minor fix in deprecation notice in docstrings by @santisoler in https://github.com/simpeg/simpeg/pull/1535
  • Replace indActive and actInd for active_cells in maps by @santisoler in https://github.com/simpeg/simpeg/pull/1534
  • Update tests and examples to use the new UpdateIRLS by @domfournier in https://github.com/simpeg/simpeg/pull/1472
  • Replace indActive in VRM simulations for active_cells by @santisoler in https://github.com/simpeg/simpeg/pull/1536
  • Test assigned values when passing deprecated args by @santisoler in https://github.com/simpeg/simpeg/pull/1544
  • Use random seed when using make_synthetic_data in tests by @santisoler in https://github.com/simpeg/simpeg/pull/1545
  • Minor improvements to UpdateIRLS class by @santisoler in https://github.com/simpeg/simpeg/pull/1529
  • Replace seed for random_seed in directives by @santisoler in https://github.com/simpeg/simpeg/pull/1538
  • Minor fixes to magnetic examples by @santisoler in https://github.com/simpeg/simpeg/pull/1547
  • Support magnetic gradiometry using Choclo as engine by @santisoler in https://github.com/simpeg/simpeg/pull/1543
  • Update usage of random_seed in one example by @santisoler in https://github.com/simpeg/simpeg/pull/1549
  • Replace seed for random_seed in model_builder by @santisoler in https://github.com/simpeg/simpeg/pull/1548
  • Replace old args for active_cells in EM static functions by @santisoler in https://github.com/simpeg/simpeg/pull/1550
  • Implement gravity equivalent sources with Choclo as engine by @santisoler in https://github.com/simpeg/simpeg/pull/1527
  • Implement tmi derivatives with Choclo in magnetic simulation by @santisoler in https://github.com/simpeg/simpeg/pull/1553
  • Implement magnetic eq sources with Choclo by @santisoler in https://github.com/simpeg/simpeg/pull/1552
  • Update links in PR template by @santisoler in https://github.com/simpeg/simpeg/pull/1554
  • Default solver by @jcapriot in https://github.com/simpeg/simpeg/pull/1511
  • Fixes for most recent geoana 0.7 by @jcapriot in https://github.com/simpeg/simpeg/pull/1557
  • Numpy2.0 and discretize 0.11.0 updates by @jcapriot in https://github.com/simpeg/simpeg/pull/1558
  • Add missing seeds by @jcapriot in https://github.com/simpeg/simpeg/pull/1560
  • Make use of meshes' cell_bounds property by @santisoler in https://github.com/simpeg/simpeg/pull/1559
  • Fix docstring of SmoothnessFullGradient by @santisoler in https://github.com/simpeg/simpeg/pull/1562
  • Fix math in docstring of eigenvaluebypower_iteration by @santisoler in https://github.com/simpeg/simpeg/pull/1564
  • Only warn about default solver when set in simulations by @santisoler in https://github.com/simpeg/simpeg/pull/1565
  • Augmented receivers for airborne NSEM by @dccowan in https://github.com/simpeg/simpeg/pull/1454
  • Try uploading all the coverage files at once. by @jcapriot in https://github.com/simpeg/simpeg/pull/1569
  • Re-implement distance weighting and add a strategy comparison by @thibaut-kobold in https://github.com/simpeg/simpeg/pull/1310
  • Remove empymod dependency by @jcapriot in https://github.com/simpeg/simpeg/pull/1571
  • Changlog for v0.23.0 by @santisoler in https://github.com/simpeg/simpeg/pull/1567
  • Add v0.23.0 to the version switcher by @santisoler in https://github.com/simpeg/simpeg/pull/1573
  • Fix date in release notes by @santisoler in https://github.com/simpeg/simpeg/pull/1574

Full Changelog: https://github.com/simpeg/simpeg/compare/v0.22.2...v0.23.0

- Python
Published by santisoler over 1 year ago

simpeg - v0.22.2

What's Changed

  • Minor fixes to disclaimer in pgi_utils.py by @prisae in https://github.com/simpeg/simpeg/pull/1512
  • Fix misuse of the requires decorator in code_utils.py by @prisae in https://github.com/simpeg/simpeg/pull/1513
  • Use lowercase simpeg in a few missing docstrings by @santisoler in https://github.com/simpeg/simpeg/pull/1519
  • Pass rtol to SciPy solvers for SciPy>=1.12 by @prisae in https://github.com/simpeg/simpeg/pull/1517
  • Fix validatendarraywith_shape by @prisae in https://github.com/simpeg/simpeg/pull/1523
  • Fix bug in GMM's _check_weights by @santisoler in https://github.com/simpeg/simpeg/pull/1526
  • Add release notes for v0.22.2 by @santisoler in https://github.com/simpeg/simpeg/pull/1532

Full Changelog: https://github.com/simpeg/simpeg/compare/v0.22.1...v0.22.2

- Python
Published by santisoler over 1 year ago

simpeg - v0.22.1

What's Changed

  • Configure version warning banner in Sphinx by @santisoler in https://github.com/simpeg/simpeg/pull/1501
  • Improve imports in natural source utils by @santisoler in https://github.com/simpeg/simpeg/pull/1503
  • Add release notes for v0.22.1 by @santisoler in https://github.com/simpeg/simpeg/pull/1508
  • Deploy to TestPyPI only on nightly builds by @santisoler in https://github.com/simpeg/simpeg/pull/1509
  • Add latest merged PR to release notes for v0.22.1 by @santisoler in https://github.com/simpeg/simpeg/pull/1510

Full Changelog: https://github.com/simpeg/simpeg/compare/v0.22.0...v0.22.1

- Python
Published by santisoler almost 2 years ago

simpeg - v0.22.0

What's Changed

  • Remove the parameters argument from docstring by @santisoler in https://github.com/simpeg/simpeg/pull/1417
  • Use reviewdog to annotate PR's with black and flake8 errors. by @jcapriot in https://github.com/simpeg/simpeg/pull/1424
  • Safely run reviewdog on pull_request_target events by @jcapriot in https://github.com/simpeg/simpeg/pull/1427
  • Add new Issue template for making a release by @santisoler in https://github.com/simpeg/simpeg/pull/1410
  • Replace use of refine_tree_xyz in DCIP tutorials by @santisoler in https://github.com/simpeg/simpeg/pull/1381
  • Fix rst syntax in release notes for v0.21.0 by @santisoler in https://github.com/simpeg/simpeg/pull/1434
  • Move to a PEP8 compliant package name. by @jcapriot in https://github.com/simpeg/simpeg/pull/1430
  • Update copyright year in init.py by @lheagy in https://github.com/simpeg/simpeg/pull/1436
  • Replace SimPEG for simpeg across docstrings by @santisoler in https://github.com/simpeg/simpeg/pull/1438
  • Lowercase simpeg for generating coverage on Azure by @santisoler in https://github.com/simpeg/simpeg/pull/1443
  • Rename spontaneous potential to self potential by @lheagy in https://github.com/simpeg/simpeg/pull/1422
  • Fix distance calculation in convert_survey_3d_to_2d_lines by @kehrl-kobold in https://github.com/simpeg/simpeg/pull/1390
  • Replace SimPEG for simpeg in API reference by @santisoler in https://github.com/simpeg/simpeg/pull/1446
  • Replace SimPEG for simpeg in getting started pages by @santisoler in https://github.com/simpeg/simpeg/pull/1447
  • Check inputs for converting 3d surveys to 2d lines by @santisoler in https://github.com/simpeg/simpeg/pull/1392
  • Always use Pydata Sphinx theme for building docs by @santisoler in https://github.com/simpeg/simpeg/pull/1445
  • Simplify interface of UniformBackgroundField by @santisoler in https://github.com/simpeg/simpeg/pull/1421
  • Ensure the queue's are joined when the meta simulation is joined. by @jcapriot in https://github.com/simpeg/simpeg/pull/1464
  • Add maintenance issue template by @santisoler in https://github.com/simpeg/simpeg/pull/1468
  • Add instructions to update the environment by @santisoler in https://github.com/simpeg/simpeg/pull/1462
  • Stop recommending mamba for installing simpeg by @santisoler in https://github.com/simpeg/simpeg/pull/1463
  • Fix bug on arguments of beta estimator directives by @santisoler in https://github.com/simpeg/simpeg/pull/1460
  • Improve interface for DC Dipole source by @santisoler in https://github.com/simpeg/simpeg/pull/1393
  • Use Numpy random number generator in codebase by @santisoler in https://github.com/simpeg/simpeg/pull/1394
  • Extend docstrings for FDEM and TDEM fields and 3D simulations by @dccowan in https://github.com/simpeg/simpeg/pull/1414
  • Magnetic simulation with Choclo as engine by @santisoler in https://github.com/simpeg/simpeg/pull/1321
  • Fix typos in EM docstrings by @santisoler in https://github.com/simpeg/simpeg/pull/1473
  • Fix call to private method in GaussianMixtureWithPrior by @santisoler in https://github.com/simpeg/simpeg/pull/1476
  • Add version switcher to Sphinx docs by @santisoler in https://github.com/simpeg/simpeg/pull/1428
  • Use random seed on synthetic data in mag tests by @santisoler in https://github.com/simpeg/simpeg/pull/1457
  • Fix links to source code in documentation pages by @santisoler in https://github.com/simpeg/simpeg/pull/1444
  • Fix script for new deployment of docs by @santisoler in https://github.com/simpeg/simpeg/pull/1478
  • Print SimPEG version in the inversion log by @santisoler in https://github.com/simpeg/simpeg/pull/1477
  • Use Numpy rng in FDEM tests by @santisoler in https://github.com/simpeg/simpeg/pull/1449
  • Add random_seed argument to objective fun's derivative tests by @santisoler in https://github.com/simpeg/simpeg/pull/1448
  • Add random_seed to the test method of maps by @santisoler in https://github.com/simpeg/simpeg/pull/1465
  • Use Numpy rng in TDEM tests by @santisoler in https://github.com/simpeg/simpeg/pull/1452
  • Use random seed in missed objective function tests by @santisoler in https://github.com/simpeg/simpeg/pull/1483
  • Fix contour colors in gravity plot in User Guide by @williamjsdavis in https://github.com/simpeg/simpeg/pull/1486
  • Hide type hints from signatures in documentation pages by @santisoler in https://github.com/simpeg/simpeg/pull/1471
  • Reorganize the maps submodule by @santisoler in https://github.com/simpeg/simpeg/pull/1480
  • Pyproject.toml by @jcapriot in https://github.com/simpeg/simpeg/pull/1482
  • Use Numpy rng in static EM tests by @santisoler in https://github.com/simpeg/simpeg/pull/1451
  • Split Azure Pipelines configuration into multiple files by @santisoler in https://github.com/simpeg/simpeg/pull/1481
  • Ignore survey_type argument in DC and SIP surveys by @santisoler in https://github.com/simpeg/simpeg/pull/1458
  • Update deployment of docs to simpeg-docs by @santisoler in https://github.com/simpeg/simpeg/pull/1490
  • Change cron time to test new deployment of docs by @santisoler in https://github.com/simpeg/simpeg/pull/1492
  • Revert "Change cron time to test new deployment of docs (#1492)" by @santisoler in https://github.com/simpeg/simpeg/pull/1494
  • Fix F821 flake error: undefined variable by @santisoler in https://github.com/simpeg/simpeg/pull/1487
  • Use Numpy rng in viscous remanent mag tests by @santisoler in https://github.com/simpeg/simpeg/pull/1453
  • Use Numpy rng in NSEM tests by @santisoler in https://github.com/simpeg/simpeg/pull/1450
  • Unwrap lines in release checklist by @santisoler in https://github.com/simpeg/simpeg/pull/1498
  • Improve instructions to update versions.json by @santisoler in https://github.com/simpeg/simpeg/pull/1500
  • Add release notes for v0.22.0 by @santisoler in https://github.com/simpeg/simpeg/pull/1499

New Contributors

  • @kehrl-kobold made their first contribution in https://github.com/simpeg/simpeg/pull/1390
  • @williamjsdavis made their first contribution in https://github.com/simpeg/simpeg/pull/1486

Full Changelog: https://github.com/simpeg/simpeg/compare/v0.21.1...v0.22.0

- Python
Published by santisoler almost 2 years ago

simpeg - v0.21.1

What's Changed

  • Fix hard dask dependency by @jcapriot in https://github.com/simpeg/simpeg/pull/1415
  • Add release notes for v0.21.1 by @santisoler in https://github.com/simpeg/simpeg/pull/1416

Full Changelog: https://github.com/simpeg/simpeg/compare/v0.21.0...v0.21.1

- Python
Published by santisoler about 2 years ago

simpeg - v0.21.0

What's Changed

  • Add 0.20.0 release notes to toc by @jcapriot in https://github.com/simpeg/simpeg/pull/1277
  • add plausible analytics to simpeg docs by @lheagy in https://github.com/simpeg/simpeg/pull/1279
  • Refresh links in documentation by @mplough-kobold in https://github.com/simpeg/simpeg/pull/1282
  • Run pytest on Azure with increased verbosity by @santisoler in https://github.com/simpeg/simpeg/pull/1287
  • Allow to use random seed in makesyntheticdata by @santisoler in https://github.com/simpeg/simpeg/pull/1286
  • pgi doc by @thibaut-kobold in https://github.com/simpeg/simpeg/pull/1291
  • Fix deprecation warning for gradientType in SparseSmoothness by @santisoler in https://github.com/simpeg/simpeg/pull/1284
  • Gravity simulation with Choclo as engine by @santisoler in https://github.com/simpeg/simpeg/pull/1285
  • Fix minor flake8 warning by @santisoler in https://github.com/simpeg/simpeg/pull/1307
  • ISSUE-1298: Use normal distributed noise in example. by @domfournier in https://github.com/simpeg/simpeg/pull/1312
  • Ditch deprecated functions in utils.model_builder by @domfournier in https://github.com/simpeg/simpeg/pull/1311
  • Triaxial magnetic gradient forward modelling by @thibaut-kobold in https://github.com/simpeg/simpeg/pull/1288
  • Documentation improvements for classes in Objective Function Pieces by @ghwilliams in https://github.com/simpeg/simpeg/pull/1292
  • Fix description of source_field in gravity survey by @santisoler in https://github.com/simpeg/simpeg/pull/1322
  • Add weights_keys method to BaseRegularization by @santisoler in https://github.com/simpeg/simpeg/pull/1320
  • Bump versions of flake8 and black and pin flake plugins by @santisoler in https://github.com/simpeg/simpeg/pull/1330
  • Move __init__ in BaseSimulation to the top of the class by @santisoler in https://github.com/simpeg/simpeg/pull/1323
  • Simpeg vector update by @johnweis0480 in https://github.com/simpeg/simpeg/pull/1329
  • Fix typo in error messages by @santisoler in https://github.com/simpeg/simpeg/pull/1324
  • Fix issue with lengthscales in coterminal angle calculations by @domfournier in https://github.com/simpeg/simpeg/pull/1299
  • Simplify check for invalid multipliers by @santisoler in https://github.com/simpeg/simpeg/pull/1336
  • Ravel instead of flatten by @thibaut-kobold in https://github.com/simpeg/simpeg/pull/1343
  • Fix implementation of coterminal function by @domfournier in https://github.com/simpeg/simpeg/pull/1334
  • Update cross gradient hessian approximation by @jcapriot in https://github.com/simpeg/simpeg/pull/1355
  • ISSUE-1341: Set parent of objective functions by @domfournier in https://github.com/simpeg/simpeg/pull/1342
  • Fix partial derivatives in regularization docs by @santisoler in https://github.com/simpeg/simpeg/pull/1362
  • Remove factor of half in data misfits and regularizations by @lheagy in https://github.com/simpeg/simpeg/pull/1326
  • Improvements to template for a bug report issue by @lheagy in https://github.com/simpeg/simpeg/pull/1359
  • Simplify a few gravity simulation tests by @santisoler in https://github.com/simpeg/simpeg/pull/1363
  • Exponential Sinusoids Simulation by @lheagy in https://github.com/simpeg/simpeg/pull/1337
  • Replace magnetic SourceField for UniformBackgroundField by @santisoler in https://github.com/simpeg/simpeg/pull/1364
  • Remove deprecated regularization classes by @santisoler in https://github.com/simpeg/simpeg/pull/1365
  • Removed deprecated properties of UpdateSensitivityWeights by @santisoler in https://github.com/simpeg/simpeg/pull/1368
  • Replace indActive for active_cells in regularizations by @santisoler in https://github.com/simpeg/simpeg/pull/1366
  • Remove the debug argument from InversionDirective by @santisoler in https://github.com/simpeg/simpeg/pull/1370
  • Remove cellDiff properties of RegularizationMesh by @santisoler in https://github.com/simpeg/simpeg/pull/1371
  • Remove deprecated bits of code by @santisoler in https://github.com/simpeg/simpeg/pull/1372
  • Use choclo in gravity tutorials by @santisoler in https://github.com/simpeg/simpeg/pull/1378
  • Remove surface2ind_topo by @santisoler in https://github.com/simpeg/simpeg/pull/1374
  • Speed up sphinx documentation building by @jcapriot in https://github.com/simpeg/simpeg/pull/1382
  • Add docs/sgexecutiontimes.rst to .gitignore by @santisoler in https://github.com/simpeg/simpeg/pull/1380
  • Describe merge process of Pull Requests in docs by @santisoler in https://github.com/simpeg/simpeg/pull/1375
  • Simplify private methods in gravity simulation by @santisoler in https://github.com/simpeg/simpeg/pull/1384
  • Update Slack links: point to Mattermost by @santisoler in https://github.com/simpeg/simpeg/pull/1385
  • added getJ for fdem and nsem simulations by @JKutt in https://github.com/simpeg/simpeg/pull/1276
  • Add LogisticSigmoidMap by @ckohnke in https://github.com/simpeg/simpeg/pull/1352
  • Remove the cell_weights attribute in regularizations by @santisoler in https://github.com/simpeg/simpeg/pull/1376
  • Remove regmesh, mref and gradientType from regularizations by @santisoler in https://github.com/simpeg/simpeg/pull/1377
  • Test if gravity sensitivities are stored on disk by @santisoler in https://github.com/simpeg/simpeg/pull/1388
  • Check if mesh is 3D when using Choclo in gravity simulation by @santisoler in https://github.com/simpeg/simpeg/pull/1386
  • Rotated Gradients by @jcapriot in https://github.com/simpeg/simpeg/pull/1167
  • Add directives to the API Reference by @santisoler in https://github.com/simpeg/simpeg/pull/1397
  • Remove deprecated modelType in mag simulation by @santisoler in https://github.com/simpeg/simpeg/pull/1399
  • Remove mref property of PGI regularization by @santisoler in https://github.com/simpeg/simpeg/pull/1400
  • Add link to User Tutorials to navbar in docs by @santisoler in https://github.com/simpeg/simpeg/pull/1401
  • Improve documentation for base simulation classes by @ghwilliams in https://github.com/simpeg/simpeg/pull/1295
  • Enforce regularization weights as dictionaries by @YingHuuu in https://github.com/simpeg/simpeg/pull/1344
  • Minor adjustments to Sphinx configuration by @santisoler in https://github.com/simpeg/simpeg/pull/1398
  • Update AUTHORS.rst by @lheagy in https://github.com/simpeg/simpeg/pull/1259
  • Update year in LICENSE by @lheagy in https://github.com/simpeg/simpeg/pull/1404
  • Dask MetaSim by @jcapriot in https://github.com/simpeg/simpeg/pull/1199
  • Add Ying and Williams to AUTHORS.rst by @santisoler in https://github.com/simpeg/simpeg/pull/1405
  • Remove link to "twitter" by @jcapriot in https://github.com/simpeg/simpeg/pull/1406
  • Bump Black version to 24.3.0 by @santisoler in https://github.com/simpeg/simpeg/pull/1403
  • Add release notes for SimPEG v0.21 by @santisoler in https://github.com/simpeg/simpeg/pull/1409
  • Publish documentation on azure by @jcapriot in https://github.com/simpeg/simpeg/pull/1412

New Contributors

  • @mplough-kobold made their first contribution in https://github.com/simpeg/simpeg/pull/1282
  • @ghwilliams made their first contribution in https://github.com/simpeg/simpeg/pull/1292
  • @johnweis0480 made their first contribution in https://github.com/simpeg/simpeg/pull/1329
  • @ckohnke made their first contribution in https://github.com/simpeg/simpeg/pull/1352
  • @YingHuuu made their first contribution in https://github.com/simpeg/simpeg/pull/1344

Full Changelog: https://github.com/simpeg/simpeg/compare/v0.20.0...v0.21.0

- Python
Published by santisoler about 2 years ago

simpeg - v0.20.0

What's Changed

  • Add a linearity property to mappings by @jcapriot in https://github.com/simpeg/simpeg/pull/1212
  • Pydata sphinx theme updates by @jcapriot in https://github.com/simpeg/simpeg/pull/1213
  • Meta/meta patches by @jcapriot in https://github.com/simpeg/simpeg/pull/1215
  • Tiny typo triggers error when displaying error output string by @nwilliams-kobold in https://github.com/simpeg/simpeg/pull/1216
  • Sp reimplement by @jcapriot in https://github.com/simpeg/simpeg/pull/1211
  • Refactor PGI_BetaAlphaSchedule directive by @santisoler in https://github.com/simpeg/simpeg/pull/1195
  • Update index.rst by @lheagy in https://github.com/simpeg/simpeg/pull/1217
  • Replace deprecated numpy type aliases with builtin types by @yanang007 in https://github.com/simpeg/simpeg/pull/1224
  • Cross reference vector by @jcapriot in https://github.com/simpeg/simpeg/pull/1214
  • Discretize 0.9.0updates by @jcapriot in https://github.com/simpeg/simpeg/pull/1230
  • Generalize add for any ComboObjectiveFunction by @santisoler in https://github.com/simpeg/simpeg/pull/1229
  • Fix IP simulation / inversion with SimPEG.dask by @thibaut-kobold in https://github.com/simpeg/simpeg/pull/1231
  • Amplitude regularization by @domfournier in https://github.com/simpeg/simpeg/pull/1103
  • General Doc cleanup by @jcapriot in https://github.com/simpeg/simpeg/pull/1234
  • conditionally allow invertible property to also be optional by @jcapriot in https://github.com/simpeg/simpeg/pull/1235
  • Multiprocessing MetaSimulation by @jcapriot in https://github.com/simpeg/simpeg/pull/1201
  • Merge docs for developers into a Contributing section by @santisoler in https://github.com/simpeg/simpeg/pull/1240
  • Move flake8 ignored rules to .flake8 and rename Makefile targets by @santisoler in https://github.com/simpeg/simpeg/pull/1238
  • Fix flake E711 error: wrong comparison with None by @santisoler in https://github.com/simpeg/simpeg/pull/1242
  • Fix flake E731 error: assign lambda functions by @santisoler in https://github.com/simpeg/simpeg/pull/1243
  • Fix F522, F523, F524 flake errors: format calls by @santisoler in https://github.com/simpeg/simpeg/pull/1245
  • Simplify CONTRIBUTING.md by @santisoler in https://github.com/simpeg/simpeg/pull/1247
  • Test patches by @jcapriot in https://github.com/simpeg/simpeg/pull/1251
  • Fix F541 flake error: f-string without placeholder by @santisoler in https://github.com/simpeg/simpeg/pull/1246
  • Add more hints about pre-commit in documentation by @santisoler in https://github.com/simpeg/simpeg/pull/1249
  • Fix F811 flake error: remove redefinitions by @santisoler in https://github.com/simpeg/simpeg/pull/1248
  • Add flake8 to pre-commit configuration by @santisoler in https://github.com/simpeg/simpeg/pull/1239
  • Rename "basic" directory in docs to "getting_started" by @santisoler in https://github.com/simpeg/simpeg/pull/1250
  • Always calculate gzz if needed by @jcapriot in https://github.com/simpeg/simpeg/pull/1253
  • Fix flake F403 and F405 errors: don't use star imports by @santisoler in https://github.com/simpeg/simpeg/pull/1244
  • Fix W291 and W293 flake errors: white spaces by @santisoler in https://github.com/simpeg/simpeg/pull/1252
  • Fix B028 flake error: non-explicit stacklevel by @santisoler in https://github.com/simpeg/simpeg/pull/1254
  • Refactor BaseObjectiveFunction and ComboObjectiveFunction by @santisoler in https://github.com/simpeg/simpeg/pull/1241
  • Make units of gravity simulations more explicit by @santisoler in https://github.com/simpeg/simpeg/pull/1256
  • Update pullrequesttemplate.md by @lheagy in https://github.com/simpeg/simpeg/pull/1258
  • Anisotropy derivative support by @jcapriot in https://github.com/simpeg/simpeg/pull/1237
  • Optionally import utm by @jcapriot in https://github.com/simpeg/simpeg/pull/1260
  • FDEM permittivity by @lheagy in https://github.com/simpeg/simpeg/pull/1236
  • Set storage type of pf sensitivity matrix by @jcapriot in https://github.com/simpeg/simpeg/pull/1261
  • Regularization docstrings by @dccowan in https://github.com/simpeg/simpeg/pull/1225
  • final unresolved comments for PR #1225 by @dccowan in https://github.com/simpeg/simpeg/pull/1262
  • Fix sparse inversion example: remove beta schedule by @santisoler in https://github.com/simpeg/simpeg/pull/1264
  • unpack the data misfits for plotting tikhonov curves by @lheagy in https://github.com/simpeg/simpeg/pull/1257
  • use setuptools_scm to track version by @jcapriot in https://github.com/simpeg/simpeg/pull/1274
  • Add building docs and serving them to documentation by @andieie in https://github.com/simpeg/simpeg/pull/1267
  • 0.20.0 staging by @jcapriot in https://github.com/simpeg/simpeg/pull/1275

New Contributors

  • @yanang007 made their first contribution in https://github.com/simpeg/simpeg/pull/1224
  • @andieie made their first contribution in https://github.com/simpeg/simpeg/pull/1267

Full Changelog: https://github.com/simpeg/simpeg/compare/v0.19.0...v0.20.0

- Python
Published by jcapriot almost 3 years ago

simpeg - v0.19.0

What's Changed

  • Fix (and test) the pgi tutorials. by @jcapriot in https://github.com/simpeg/simpeg/pull/1133
  • Run style checks in Azure Pipelines by @santisoler in https://github.com/simpeg/simpeg/pull/1134
  • Add property to control number of processes created. by @jcapriot in https://github.com/simpeg/simpeg/pull/1135
  • Use r-strings on strings and docstrings that contain backslashes by @santisoler in https://github.com/simpeg/simpeg/pull/1136
  • Run flake8 in CI against a selection of rules by @santisoler in https://github.com/simpeg/simpeg/pull/1141
  • Rename variables to avoid shadowing builtins by @santisoler in https://github.com/simpeg/simpeg/pull/1137
  • Ignore flake warning over empty docstrings by @santisoler in https://github.com/simpeg/simpeg/pull/1149
  • Avoid using getattr with fixed constant strings by @santisoler in https://github.com/simpeg/simpeg/pull/1139
  • Separate flake 8 ignores by line breaks by @jcapriot in https://github.com/simpeg/simpeg/pull/1150
  • Avoid using mutables as default parameters by @santisoler in https://github.com/simpeg/simpeg/pull/1142
  • Ignore b028 by @jcapriot in https://github.com/simpeg/simpeg/pull/1155
  • Remove unused imports across SimPEG by @santisoler in https://github.com/simpeg/simpeg/pull/1132
  • Avoid calling functions in default arguments by @santisoler in https://github.com/simpeg/simpeg/pull/1143
  • Fix plotinvmagMVISparse_TreeMesh.py by @thibaut-kobold in https://github.com/simpeg/simpeg/pull/1159
  • fix mref depreciation in regularization/pgi.py by @thibaut-kobold in https://github.com/simpeg/simpeg/pull/1157
  • Avoid using variables not binded in function definition by @santisoler in https://github.com/simpeg/simpeg/pull/1145
  • Remove unused loop variables by @santisoler in https://github.com/simpeg/simpeg/pull/1138
  • Enable use of inactive cells in equivalent source models by @nwilliams-kobold in https://github.com/simpeg/simpeg/pull/1147
  • Flexible dc boundary by @jcapriot in https://github.com/simpeg/simpeg/pull/1168
  • Do not use multiprocessing on single thread. by @jcapriot in https://github.com/simpeg/simpeg/pull/1170
  • fix gmm.plot_pdf new error from sklearn >=1.2 by @thibaut-kobold in https://github.com/simpeg/simpeg/pull/1156
  • Black 23.1 by @jcapriot in https://github.com/simpeg/simpeg/pull/1174
  • Fix for hasfields by @jcapriot in https://github.com/simpeg/simpeg/pull/1175
  • Do not import deprecated discretize utilities by @jcapriot in https://github.com/simpeg/simpeg/pull/1176
  • update codecov script by @jcapriot in https://github.com/simpeg/simpeg/pull/1178
  • Linear mapping by @jcapriot in https://github.com/simpeg/simpeg/pull/1177
  • Use discretize.utils.activefromxyz to get active topography cells by @dccowan in https://github.com/simpeg/simpeg/pull/1171
  • Update minimum versions by @jcapriot in https://github.com/simpeg/simpeg/pull/1179
  • Add B028 to flake8 ignore by @jcapriot in https://github.com/simpeg/simpeg/pull/1181
  • Add possibility to pass fields to getJtJdiag by @jcapriot in https://github.com/simpeg/simpeg/pull/1182
  • Mira review beta estimator by @dccowan in https://github.com/simpeg/simpeg/pull/1173
  • Add option for amplitude threshold on UpdateSens directive by @domfournier in https://github.com/simpeg/simpeg/pull/1163
  • Change default n_processes for potential fields by @jcapriot in https://github.com/simpeg/simpeg/pull/1186
  • Update current_utils.py by @domfournier in https://github.com/simpeg/simpeg/pull/1166
  • Avoid comparing bool variables to True or False by @santisoler in https://github.com/simpeg/simpeg/pull/1160
  • Avoid using bare excepts that catch every possible exception by @santisoler in https://github.com/simpeg/simpeg/pull/1140
  • Update SimPEG.Report() by @prisae in https://github.com/simpeg/simpeg/pull/1104
  • Addition regarding inversion to big_picture by @prisae in https://github.com/simpeg/simpeg/pull/729
  • Do not store real lambdas as complex by @jcapriot in https://github.com/simpeg/simpeg/pull/1190
  • Improve docstring of depth_weighting by @santisoler in https://github.com/simpeg/simpeg/pull/1192
  • Add issue forms for github by @jcapriot in https://github.com/simpeg/simpeg/pull/1189
  • Update deprecation usage in optimization module by @jcapriot in https://github.com/simpeg/simpeg/pull/1194
  • Update getting started guides by @jcapriot in https://github.com/simpeg/simpeg/pull/1188
  • Update DC1D for flexibility and speed by @jcapriot in https://github.com/simpeg/simpeg/pull/1191
  • Start removing unused variables by @santisoler in https://github.com/simpeg/simpeg/pull/1161
  • Fix check for reference_model in PGI regularization by @santisoler in https://github.com/simpeg/simpeg/pull/1196
  • update JTV to work for an arbitrary number of models by @jcapriot in https://github.com/simpeg/simpeg/pull/1197
  • Simulation of Simulations by @jcapriot in https://github.com/simpeg/simpeg/pull/1183
  • Remove flake errors that were already solved by @santisoler in https://github.com/simpeg/simpeg/pull/1203
  • Fix flake8 B015 errors: solve unused comparisons by @santisoler in https://github.com/simpeg/simpeg/pull/1200
  • Fix flake E401 error: multiple imports in one line by @santisoler in https://github.com/simpeg/simpeg/pull/1202
  • Patch/identity map init by @jcapriot in https://github.com/simpeg/simpeg/pull/1205
  • Fix length scale getters by @jcapriot in https://github.com/simpeg/simpeg/pull/1207
  • Patch/fix save sparse dict by @jcapriot in https://github.com/simpeg/simpeg/pull/1206
  • Add PR template file by @jcapriot in https://github.com/simpeg/simpeg/pull/1208
  • 0.19.0 Staging by @jcapriot in https://github.com/simpeg/simpeg/pull/1209

Full Changelog: https://github.com/simpeg/simpeg/compare/v0.18.1...v0.19.0

- Python
Published by jcapriot almost 3 years ago

simpeg - Simulation

SimPEG 0.14.0 Release Notes

This release marks a major change in the structure of SimPEG, and it all started with this,

  • #562: What's the problem with Problem?

We hope to answer that question with this release!

This release will break backward compatibility as many modules and classes have been renamed. Check out the Examples and Tutorials (which have also been improved) to see how it's done.

We are also only supporting Python versions >=3.6 at this time. We have dropped all testing and development on Python versions previous to this (especially 2.7).

Highlights

  • No more Problem-s, only Simulation-s
  • Data is important
  • PEP 8 renaming
  • Dask parallelism
  • Resistivity Simulation improvements

Simulation

We will refer to this update as the simulation update, and there are a few large changes that we will attempt to describe here.

We (the developers) believed that there were some significant challenges with the overall structure of the SimPEG framework, which all revolved around constructing a forward simulation by pair-ing a Survey and a Problem. The Survey handled things like sources, receivers, and the Problem handled the physics engine of the forward simulation. These two items had to be created separately, then pair-ed afterwards for both the Problem to be able to use sources, and for the Survey to predict data. We found that this structure made it difficult to interface with other packages and was also generally difficult to explain. Also, field data was then attached to the Survey class.

These changes within this section are also the ones which will require the most changes to code (which are still hopefully small).

The Simulation class

Problem has been renamed to Simulation

We decided to refactor this code into something a little more understandable. The Simulation class is now the workhorse of the SimPEG forward simulations. It handles things like modeling fields and projecting those fields to the data locations defined by its survey. The Survey class is much lighter weight, now only handling the sources and receivers. Also a single survey can now be attached to many Simulation-s.

Previously we had something like,

survey = DC.Survey(srcList)
prob = DC.Problem3D_CC(mesh, rhoMap=mapping)
prob.pair(survey)

# Compute the fields from `prob`
fields = prob.fields(model)
# And predict data using the `survey`
dpred = survey.dpred(model, f=fields)

Now,

survey = resistivity.Survey([source_list])
sim = resistivity.Simulation3DCellCentered(
    mesh,
    survey=survey,
    rhoMap=mapping
)

# Compute the fields from `sim`
fields = sim.fields(model)
# Predict data also using `sim`
dpred = sim.dpred(model, f=fields)

See? The Simulation handles predicting data. This change will also make it easier to interface with external codes for inversion purposes, as all that is needed to be defined to use a Simulation for an InvProblem, is sim.dpred, sim.Jvec and sim.Jtvec.

Please see the documentation for the SimPEG.simulation.BaseSimulation class as well as the individual methods' Simulation-s, for a detailed description of arguments, but largely it accepts the same arguments as the Problem class, but now also requires a Survey to be set.

The Data class

Previously, field data would also live within the Survey class. Which was not only confusing, but placed the importance on the wrong component. When inverting geophysical data, we are concerned with the data. Thus we would like to enforce this importance by making data live in a dedicated Data class. This Data class can act like a smart dictionary to grab data associated with a specific source, receiver combination. More importantly, this Data class is where we store information related to observed data and its errors. This class started in the SimPEG.Survey module, but has now been moved into its own new module SimPEG.data. See the documentation for the SimPEG.data.Data for all of the details.

Previously, # Add data to the survey survey.dobs = dobs survey.std = 0.05 # a 5% relative error survey.eps = 1.0E-6 # a noise floor

Now,

# Create a data object
data = data.Data(dobs=dobs, relative_error=0.05, noise_floor=1e-6)

You might also notice that we changed the name of the terms used to construct the standard deviation. See issue #846. Previously survey.std represented an error that was relative to the absolute value of the data. The name of this term is misleading, as it is not actually the classic statistical standard deviation.

Previously the uncertainty was constructed as:

uncertainty = survey.std * np.abs(survey.dobs) + survey.eps

We now have updated the names to be clearer and more in line with what we would naturally expect, which is accessed from data.standard_deviation. The value that is returned from this is now defined as:

data.standard_deviation = (
    data.relative_error * np.abs(data.dobs) +
    data.noise_floor
)

You can also directly set the value of data.standard_deviation if you prefer to work with that quantity.

data.standard_deviation = 0.01

This Data class is now also the object that is returned from:

data = sim.make_synthetic_data(
    m, relative_error=0.05, noise_floor=0.0, f=None, add_noise=True
)

The DataMisfit class

Previously, because the Survey class handled predicting data at the receivers, and it also had knowledge of the observed data and its noise, we constructed the data misfit measure using only the survey. Now we have specifically broken this piece up into a forward Simulation object, and a Data object. This mimics the definition of the classic data misfit measure.

image

The Simulation class handles the forward operation, image, and the Data class handles the noise, image, and the observed data, image. See the documentation for the SimPEG.data_misfit.L2DataMisfit for all of the details.

Previously,

# Survey knows how to predict data, knows the observed data,
# and its standard deviation
dmis = DataMisfit.l2_DataMisfit(survey)

Now,

# Create a data misfit
# The data class now knows the observed data and its standard deviation.
# The simulation knows how to create data from a model.
dmis = data_misfit.L2DataMisfit(simulation=sim, data=data)

Dask

We have begun a concerted effort to incorporate dask as a means to allow SimPEG to scale to larger computers (and take advantage of parallelism). Checkout the dask docs at https://docs.dask.org/en/latest/.

This feature is experimental at the moment and can be toggled on like so,

import SimPEG.dask

which will then enable parallel operations for a few modules. It will specifically replace these functions with dask versions,

  • SimPEG.potential_fields.BasePFSimulation.linear_operator
  • SimPEG.potential_fields.magnetics.Simulation3DIntegral.getJtJdiag
  • SimPEG.potential_fields.gravity.Simulation3DIntegral.getJtJdiag
  • SimPEG.electromagnetics.static.resistivity.simulation.BaseDCSimulation.getJ
  • SimPEG.electromagnetics.static.resistivity.simulation.BaseDCSimulation.getJtJdiag
  • SimPEG.electromagnetics.static.induced_polarization.simulation.BaseDCSimulation.getJ
  • SimPEG.electromagnetics.static.induced_polarization.simulation.BaseDCSimulation.getJtJdiag

Changelog

As can be expected, there are many changes in this release, and we hope to identify most of them here (or at least point you in the right direction).

Renamed Modules

We have taken steps to rename the modules of SimPEG to a more PEP 8 friendly system. The previous locations do not exist.

  • EMelectromagnetics
  • EM.FDEMelectromagnetics.frequency_domain
  • EM.TDEMelectromagnetics.time_domain
  • EM.NSEMelectromagnetics.natural_source
  • EM.Staticelectromagnetics.static
  • EM.Static.DCelectromagnetics.static.resistivity
  • EM.Static.DC.Utilselectromagnetics.static.resistivity.utils
  • EM.Static.IPelectromagnetics.static.induced_polarization
  • EM.Static.SIPelectromagnetics.static.spectral_induced_polarization
  • EM.Static.Utilselectromagnetics.static.utils
  • EM.Utilselectromagnetics.utils
  • VRMelectromagnetics.viscous_remanent_magnetization
  • FLOWflow
  • SEISseismic
  • PFpotential_fields
  • PF.Gravitypotential_fields.gravity
  • PF.GravAnalyticspotential_fields.gravity.analytics
  • PF.Magneticspotential_fields.magnetics
  • PF.MagAnalyticspotential_fields.magnetics.analytics
  • Utilsutils
  • DataMisfitdata_misfit
  • Directivesdirectives
  • Fieldsfields
  • InvProbleminverse_problem
  • Inversioninversion
  • Mapsmaps
  • Modelsmodels
  • ObjectiveFunctionobjective_function
  • Optimizationoptimization
  • Propsprops
  • Surveysurvey
  • Problemsimulation

Also generally modules with the following names have changed:

  • METHOD.SurveyMETHODmethod_name.survey
  • METHOD.SrcMETHODmethod_name.sources
  • METHOD.RxMETHODmethod_name.receivers
  • METHOD.ProblemMETHOD_xDmethod_name.simulation_xd
  • METHOD.FieldsMETHODmethod_name.fields

where METHOD was the old module name for the method and method_name is the new name.

Also many of the utilities modules within these are also being deprecated. Their old names are still around and should throw a deprecation warning when loaded pointing to the correct name.

For example,

  • Utils.codeutilsutils.code_utils
  • Utils.ModelBuilderutils.model_builder
  • EM.Utils.EMUtilselectromagnetics.utils.waveform_utils (this one is a little less obvious)

Problem to Simulation

Many of the previous Problem classes are still within the modules, but will now throw a deprecation warning which points to the updated Simulation. The renaming scheme for the Simulation-s was decided in

857.

For example,

  • Problem3D_CCSimulation3DCellCentered
  • Problem2D_CCSimulation2DCellCentered
  • Problem3D_eSimulation3DElectricField
  • Problem3D_bSimulation3DMagneticFluxDensity
  • Problem3D_hSimulation3DMagneticField
  • Problem3D_jSimulation3DCurrentDensity
  • etc.

Our current plan is to remove these deprecated versions in the 0.15.0 SimPEG release.

Potential field reorganization

The potential_fields module has likely received the largest amount of reorganization to make it more in line with the structure of the other modules, and some things have moved around and been renamed. There are now two separate modules within potential_fields: gravity and magnetics. All of the classes in PF.BaseGrav have been moved to potential_fields.gravity, and the classes in PF.BaseMag have been moved to potential_fields.magnetics. The Map-s that were within them have been deprecated and can instead be found in SimPEG.maps.

The option of a coordinate_system for the magnetics simulation is no longer valid and will throw an AttributeError. Instead use the SimPEG.maps.SphericalSystem.

Improvements and Additions to resistivity

We have made a few improvements to the SimPEG.electromagnetics.static.resistivity that were motivated by our work under the Geoscientists Without Borders project.

One is that we now have a 1D layered Earth simulation class, SimPEG.electromagnetics.static.resistivity.simulation_1d.Simulation1DLayers, that can be used to invert resistivity sounding data for conductivity and/or thicknesses of a set number of layers.

The second, is a new miniaturize option for the 2D and 3D resistivity simulations. This option causes the class to internally replace Dipole sources and receivers with only unique Pole sources and receivers. This can result in a dramatic speedup and reduced memory requirements when the input survey contains many more Dipole-s than electrode locations. This is especially common in the wenner type survey acquisitions that use a unique source and receiver for each measured data point. This option is disabled by default, and can be enabled by passing the minaturize=True keyword to the resistivity Simulation upon initialization.

The third is automated TreeMesh construction within the resistivity.IO class for a 2D survey.

Deprecations

Some functions and properties have been renamed to more PEP 8 friendly names, for example:

  • Survey.makeSyntheticDataSimulation.make_synthetic_data
  • Survey.srcListSurvey.source_list
  • Source.rxListSource.receiver_list
  • Source.locSource.location
  • Receiver.locsReceiver.locations
  • etc...

As mentioned before, the old names of these items will still be around, but will throw DeprecationWarnings pointing the user to the new names.

We have done work to make this release as backwards compatible as possible, but can not guarantee that all code will work. At the minimum, module imports must be changed. The old style of pair-ing a survey will still work, in which case all of the older functions will still work. This is only intended for old code to continue working, and should not be relied upon for developing new code.

As noted all of the Problem-s are being deprecated and will be removed as of version 0.15.0 of SimPEG. The deprecated utility models will also be removed then.

Pull Requests

There were 25 pull requests contributing to this release.

  • #786: Simulation class refactor.
  • #792: Use scooby for Versions.
  • #802: Simulation jk.
  • #819: Simulation jk df.
  • #835: Add simulation PF tutorials to simulation PF branch
  • #843: Fix drapeTopoLoc.
  • #844: Static receiver midpoint 3D.
  • #845: Tile map.
  • #848: Fix Ward and Hohmann example.
  • #849: Update and fix tutorials.
  • #851: Simulation method names .
  • #853: CSEM TDEM 3D example.
  • #854: Simulation dc2.5 d speedup.
  • #861: Fix typo.
  • #863: light formatting to be closer to black, update filepaths to be os independent.
  • #864: Sim dask split.
  • #865: simulation fdem testing bug.
  • #866: waveform logic bug.
  • #868: This change was necessary for fields to be called correctly for dcip2...
  • #869: Simulation tutorials 2.
  • #872: Uncertainty rename in simulation.
  • #874: Release notes for simulation as part of the Documentation.
  • #876: Simulation tutorials cleanup.
  • #879: Run black on SimPEG.
  • #882: Replace html links to documentation with local links.

Closed Issues

  • #865: FDEM: derivative test seems to ignore imag-real-flag
  • #857: DOC: Broken link
  • #850: Can't set a waveform on initialized BaseTDEMSrc object
  • #847: Renaming of methods' Problems
  • #846: Standard deviation and it's place in the code base
  • #842: Static drape topo not on surface.
  • #787: Plotting integrated sensitivity for DC resistivity problem.
  • #765: DOC: Source code not linked, 404
  • #751: run black on SimPEG
  • #562: What's the problem with Problem?
  • #527: Remove MapPair, RxPair, Pair
  • #524: Remove rxType from BaseRx
  • #202: Using the DataClass

Contributors

Combining to produce over 500 commits (listed in no particular order):

  • @lheagy
  • @jcapriot
  • @fourndo /@domfournier
  • @sgkang
  • @dccowan
  • @JKutt
  • @prisae
  • @craigmillernz

- Python
Published by jcapriot about 6 years ago

simpeg - Tutorials and various bug fixes and improvements

SimPEG 0.13.1 release notes

from PR: #813, #824, #828, #829, #833 commits from: @dccowan, @fperez, @lheagy, @rowanc1, @thast

List of updates: - fix for the VRM examples, updated for matplotlib 3.1.1 (PR #813) - Add a .mailmap file to help organize author statistics. (PR #828) - unpin sphinx version in the dev requirements (PR #829) - fix bug in computing the extension of the topography data in surfac2ind_topo (PR #833) - tutorials for models and mapping (PR #824) image

- Python
Published by thast over 6 years ago

simpeg - Regularization, utils.plot2Ddata updates

Updates to Simple regularization

  • from pr #807
  • commits by: @fourndo

Summary

Proposed modification to the model gradient measure for Simple and Sparse regularization. Normalized length scales are multiplying cell_weights before averaging to cell faces. - Reduces the dependency of the model on cell size changes - Still allows for IRLS weights to be mesh independent - Default alpha's remain at 1 (takes care of length scales internally)

Before image

After LengthScalesApplied

Additional Notes This pr also removed 2 VRM examples and the 1D MT example as they were failing. Issues #812, #814 document the issues, and pr's #813 and #815 have been started to resolve those issues.

Updates to Utils.plot2Ddata

  • from pr #808
  • commits from: @thast

summary

add shading options in utils.plot2Ddata

Illustrations:

  • On the docs example: image

  • On a mag dataset: image

Minor updates:

  • small fix in the calling of mkvc in the regularization mesh (from #810, commits from @thast)
  • update dependencies in the setup.py to remove indirect ones (from #188, commits from @lheagy)

- Python
Published by lheagy over 6 years ago

simpeg - Spectral Induced Polarization

  • from pr #715
  • commits from @sgkang, @fourndo
  • review from @lheagy

Spectral Induced Polarization Inversion

  • Invert multiple time channels of IP data to recover 3D distribution of polarization parameters: eta, tau, and c

  • Can handle various data types: volt (V) or apparent_chargeability (V/V)

  • Profile SIP modules to make sure it can handle large-scale time-domain IP data (storeJ=False)

image

DC and IP codes

  • Can handle various data types: volt (V) or apparent_resistivity (ohm-m), or apparent_chargeability (V/V)

Examples using DC, IP, SIP codes are available through:

https://github.com/simpeg-research/kang-2018-spectral-inducedpolarization/tree/master/notebooks

- Python
Published by lheagy almost 7 years ago

simpeg - break regularization into multiple files

  • from pr #799
  • commits from @lheagy
  • review from @fourndo

Summary

  • break up Regularization.py into multiple files in a regularization module
    • Regularization Mesh in regularization_mesh.py
    • BaseRegularization and BaseComboRegularization in base.py
    • Tikhonov and Simple in tikhonov.py
    • Sparse in sparse.py

- Python
Published by lheagy almost 7 years ago

simpeg - Versions

  • from pr #769
  • commits from @prisae
  • review from @lheagy

Replace func versions by class Versions

Turns out that there is a way to have html in a notebook and non-html in all the rest without even checking if you are in a notebook or not (thanks @banesullivan; https://github.com/simpeg/discretize/issues/142).

All that is needed is a Versions-class which has the right functions linked to __repr__ and _repr_html_: ``` class Versions:

def __init__(self, add_pckg=None, ncol=4):
    self.add_pckg = add_pckg
    self.ncol = ncol

def __repr__(self):
    return versions_text(self.add_pckg)

def _repr_html_(self):
    return versions_html(self.add_pckg, self.ncol)

```

By removing the old functions, respectively integrating the relevant parts into the new class, the whole version printing utility gets a lot simpler (however, it is not backwards compatible).

Before, you had to do from SimPEG import versions versions() in Python, IPython etc, and in Jupyter from SimPEG import versions versions('HTML')

Updating your code

Now, you simply do from SimPEG import Versions Versions() EVERYWHERE (note the uppercase V), and it will automatically print a html table in a notebook, and plain text everywhere else.

- Python
Published by lheagy almost 7 years ago

simpeg - discretize updates

updates to keep pace with changes in simpeg/discretize#134

- Python
Published by lheagy about 7 years ago

simpeg - Simplification using np.where + spelling in examples

  • from pr #770
  • commits from @kalen-sj
  • review from: @fourndo, @lheagy

A complicated pattern that was copy/pasted several times in the code was able to be replaced with a simple np.where. An example:

actv = np.asarray([inds for inds, elem in enumerate(actv, 1) if elem], dtype=int) - 1 is now actv = np.where(actv)[0]

Also, a few spelling mistakes and corrections in the examples. A couple of cases where variables were defined twice before use are now just done once.

- Python
Published by lheagy about 7 years ago

simpeg - Fix mapping naming convention in PF

  • commits from: @thast, @fourndo
  • review from: @fourndo

This PR addresses issue #761 and follows PR #758 and PR #757 .

There was a naming discrepancy in the PF module and that causes me some trouble. In the Gravity module, there are two aliases for rhoMap: mapping and mapPair. In the Magnetics module, there is one alias for chiMap: modelMap.

This PR settle for modelMap as only alias, consistent with the definition of the LinearProblem class in Problem.py

Additional: Fix mapping name in LinearProblem (from mapping (depreciated) to modelMap)

- Python
Published by lheagy about 7 years ago

simpeg - Fix/update pre conditioner

  • from pr #757
  • commits from: @thast
  • review from: @fourndo

This formulation takes into account the regularization mapping into the preconditioner and remove the need to check for a specific wiresmap.

- Python
Published by lheagy about 7 years ago

simpeg - remove testing on python 2.7 from SimPEG

  • from pr: #758
  • commits from: @lheagy
  • review from: @thast

  • soft removal of python 2.7: we don't explicitly break compatibility as in #731, but it is no longer tested on Python 2.7

  • added a note in the docs saying we will not be working to ensure compatibility with python 2.7 anymore

- Python
Published by lheagy about 7 years ago

simpeg - DC fields derivs

DC Fields Derivatives

  • from pr #724
  • commits from: @lheagy
  • review from: @sgkang

DC Resistivity

  • add fields derivatives with respect to the electric field (in case you want to invert e-field data)
  • add e-field receivers to DC problem
  • see for example: https://github.com/simpeg-research/heagy-2018-injection-inversions

TDEM

  • add charge and charge density to j-fields
  • bug fix in calculation of db/dt in the j-fields object
  • add grounded source that solves the mmr problem in the H-J formulation for permeable targets

Directives

  • add option to save output to a directory, the default is the current working directory

numpy matlib imports

  • from pr #755
  • commits from: @lheagy
  • review from: @thast

import matlib explicitly as in numpy 1.16, it isn't imported in the numpy namespace be default

image

- Python
Published by lheagy over 7 years ago

simpeg - Improvements: Potential Fields

  • from pr: #670
  • commits from: @fourndo, @thast
  • review from: @thast , @lheagy

A couple of improvements or fix for Potential Fields:

  • Fix reading functions for UBC file format (in case of line break)
  • add ModelMap property
  • Change survey.nD definition so it is independent of Problem
  • Use reg.deriv2 instead of reg.W for computing the preconditioner in Directives.updatePreconditioner
  • general PEP8 improvements (powered by AutoFormat)
  • naming convention: readUBCgravObs becomes readGravityObservations (for consistency between Grav and Mag names conventions.)
  • Combine all Mag problems (susc, amp, MVI) under Magnetics.MagneticIntegral
  • Change coordinate system from legacy x, y, z(down) to convention x, y, z (up)
  • Add test+example for MVI-S on TreeMesh
  • Add test+example for Amplitude inversion (CSM algo)

- Python
Published by lheagy over 7 years ago

simpeg - plot2Ddata updates

  • from pr #749
  • commits from @lheagy
  • review from @thast

update plot2Ddata

  • update logic in plot2Ddata so that two vmin, vmax values cannot be provided to contourf (e.g. it was previously possible that an explicit vmin, vmax was provided by the user and that a vmin, vmax was chosen based on the colorbar)
  • ensure that if both clim and vmin, vmax provided to contourOpts that they are identical

- Python
Published by lheagy over 7 years ago

simpeg -

fix std in DataMisfit and possible bug in PlotUtils

  • from pr #745
  • commits from @thast
  • review from @micmitch, @lheagy

Fix for Issue #746

  • fixed DataMisfit.std that now take into consideration survey.std. So you are not forced to set DataMisfit.W manually anymore

  • Fixed: Survey.MakeSyntheticData, if not given a std, was overwriting survey.std even if already set. Now it will use survey.std if not given a std argument.

Explanation: DataMisfit.std was set to 5% by default, but to change it to survey.std, it expected a None value, thus it never gets updated...

  • bonus: light improvement again of Plot2DData (reordering of if statement so specifying contourOpts['vmin','vmax'] without a clim works.

  • bonus: Somehow PR #725 did not make it to improve plot_misfit_curves so I put it back here. Mainly, more option to plot $\phim$ or $\phismall$ and $\phi_smooth$ independently, plus more options to save the figure.

Code of conduct

  • from pr #744
  • commits from @lheagy
  • review from @rowanc1

Add a code of conduct based on the contributor covenant to SimPEG

- Python
Published by lheagy over 7 years ago

simpeg - Plotting, installation docs & site-packages

fixed possible issue for levels definition in SimPEG.Utils.plot2DDdata

  • from pr: #738, closes #734
  • commits from: @thast

Description

  • fixed possible issue for levels definition in SimPEG.Utils.plot2DDdata
  • add mask functionality (already proposed as args but not implemented)
  • choice of linear or nearest interpolation
  • check if there is already a vmin, vmax in the contourOpts dict before adding them based on user-input clim
  • improved example forSimPEG.Utils.plot2DDdata
  • add an example for the IO.pseudosection function

Example output: image

Installation docs

  • from prs: #736, #737
  • commits from: @sdevriese, @fourndo

Description

  • Replace links to numpy example page with link to SimPEG examples
  • update link for anaconda

Do not install tests in site-packages

  • from pr: #740
  • commits from: @cgohlke

Description

  • exclude tests from from SimPEG installation

- Python
Published by lheagy over 7 years ago

simpeg - enhanced plot2DData and IO.pseudosections

  • commits from @thast
  • review from @lheagy

Address issue #734

PR notes: We have fixed the following bug: - the clim argument was not used in the SimPEG.Utils.plot2DData. We added the functionality to modify the colorscale based on the clim argument.

Improvements of the SimPEG.Utils.plot2DData function: - Levels of the matplotlib.pyplot.contourf function are defined by the function itself. This is done to give us complete control over the colorscale and colorbar. - Before plotting, we check if any data are NaN or infinite to ensure reasonable colorscale. We also ensure positivity is scale==log - colorbar limits choice through clim and ncontours: ncontours defines the number of contour inside the clim scale. If data lies outside that range on either side, an supplemental contour is added to regroup those data under a single color on either side (so two colors if on both side with of ncontour+2 contours).

- Python
Published by lheagy over 7 years ago

simpeg - Effective Medium Theory Map

  • originally from pr #706
  • commits from: @lheagy
  • review from: @sgkang, @rowanc1

Effective medium theory map

  • extend the effective medium theory mapping to work for preferentially aligned ellipsoids so that anisotropic conductivities are estimated
  • add a calculation of the Hashin-Shtrikman bounds

Anisotropic models

  • allow the shape of models to include 2D arrays so that anisotropic models can be input into simulations

New Example

  • add an example of the effective medium theory map from my thesis image

Minor updates

  • allow receiver orientation inputs to be upper or lowercase z or Z in the FDEM code

- Python
Published by lheagy almost 8 years ago

simpeg - VRM upgrades

  • from pr: #711
  • commits from: @dccowan, @lheagy
  • review from: @prisae, @lheagy

updates

  • Add square loop receiver for VRM problem
  • Create forward modeling and inversion example for VRM code
  • Fully utilise properties class to auto generate API
  • Edit VRM tests to include new OcTree refinement
  • Fix Codacy errors
  • Clean up and fix errors associated with autodoc creation. Includes fixing H5 error associated with Bookpurnong and adding any missing examples not found in toctrees.

Further fixes will be addressed in #714

- Python
Published by lheagy almost 8 years ago

simpeg - 3D Cyl simulations, TDEM fields object

  • originally from #699
  • commits from: @lheagy
  • review from: @sgkang
  • This pr depends on simpeg/discretize#36 (3D cyl mesh and cell grad stencils being properties) and supersedes #683.

Changes across EM

  • electric fields / fluxes and magnetic fields fluxes live on the same grid location (eg. in problem_e, e, j are on edges, b, h are on faces

TDEM improvements

  • fill out the fields objects (addresses issue #633)
  • added a raw vec grounded source for HJ forumlation

DC

  • a few typo fixes Dirichlet (some places it was Dirchlet)
  • a couple updates in the order of error checks to have the DC operate on the 3D cyl mesh

geoana dependence for sources

  • rely on geoana for vector potentials in the sources
  • add geoana to the dev requirements

General Cleanup

  • import derivative tests from discretize
  • only have dev requirements in the requirements_dev.txt rather than also including core dependencies which should be installed through the setup.py

- Python
Published by lheagy almost 8 years ago

simpeg - Directive for sparse inversion (IRLS)

Use of sparse inversion for non-linear inverse problems (DC, TDEM, FDEM), where sensitivity matrix is changing in the inversion iterations.

This can be quite expensive when sparse inversion is used, because we need a number of iterations to make sparse inversion converged; requires a number of call for computing sensitivity matrix.

We are doing a simple cheat here. Sparse inversion starts when Smooth inversion finishes. So, we assume that our inversion is close to the solution, and hence sensitivity matrix does not change that much after while updating for sparse inversion.

By passing fix_Jmatrix=True to Update_IRLS, you can fix sensitivity matrix, that is we are using the same sensitivity matrix for all sparse inversion iterations.

  • review from: @fourndo and @lheagy
  • commits from: @sgkang

- Python
Published by sgkang almost 8 years ago

simpeg - EM inner product matrices

  • from pr #691
  • commits from @lheagy
  • review from @sgkang

Updates

  • work on simplifying the storage of the inner product matrix derivatives
  • implement storage of the mu matrix derivatives

- Python
Published by lheagy almost 8 years ago

simpeg - printversion

  • originally from pr #698
  • commits from: @prisae
  • review from: @lheagy, @rowanc1

SimPEG.versions()

  • Print the versions of packages required by SimPEG
  • adapted from that implemented in empymod
  • Fixes #697

selection_001

selection_002

- Python
Published by lheagy almost 8 years ago

simpeg - simplification in DC getABMN

  • from pr #695
  • commits from: @lheagy
  • review from: @sgkang

Summary

  • move the if else so that we don't have to repeat the rx if / else statement in getABMN

- Python
Published by lheagy about 8 years ago

simpeg - Bug in `get_dpred` in `invProblem.py`

  • from pr #693
  • commits from @sgkang
  • review from @lheagy

Summary

  • small bug fix in indentation level of the return statement in get_dpred in invProblem.py

- Python
Published by lheagy about 8 years ago

simpeg - Bug fix in the L2Objective function deriv2

Bug fix in the L2Objective function deriv2

  • From pr #692
  • commits from: @lheagy
  • review from: @rowanc1

Summary

fix deriv2 on the L2Objective function if v is None, add a test to ensure behaviour is the same if v is none and if v provided

  • closes issue #686

- Python
Published by lheagy about 8 years ago

simpeg - Simulation and inversion of time domain IP data

Simulation and inversion of time domain IP

  • from pr: #590
  • commits from: @sgkang, @fourndo, @micmitch
  • review from: @lheagu

Implementation:

  1. Use stretched exponential (chargeability, time constant, frequency dependency) for parameterization

  2. Tested 2D and 3D SIP problems

  3. Deprecate Multiregularization and use combo objective function, so pulled ref/objectivefunctions branch - This is for inverting multiple parameters. Thanks @lheagy and @fourndo for combo objective functions, and @rowanc1 for wire implementation!

  4. Implement storeJ option for both IP and SIP problems (2D and 3D), which boost up speed for relatively small problems.

Example:

True model

image

Recovered model

image

Data fit at the fist time channel:

image

- Python
Published by lheagy about 8 years ago

simpeg - Regularization: set indActive prior to cell weights

  • from pr #690 (supersedes #689)
  • commits from @lheagy
  • review from @dccowan and @fourndo

Summary of changes

  • ensure indActive set prior to cell weights in the regularization init so the validator looks for cell weights that are the same size as the indactive. ```python # previously, most usage was the following reg = Regularization.Simple(mesh=mesh, indActive=indActive)
    reg.cellweights = cellweights

this should be equivalent but prior to the pr, this use-case failed

reg = Regularization.Simple(mesh=mesh, indActive=indActive, cellweights=cellweights) ``` - fixes the bug @dccowan was encountering in the example he generated in #684

- Python
Published by lheagy about 8 years ago

simpeg - Bug fix in the static fields

  • from pr #687
  • commits from: @micmitch, @lheagy
  • review from: @lheagy

Summary

Fixed the way E fields were being computed in the fields object for the DC_CC problem. Added tests the check E and J for a electric dipole in a fullspace against the analytic solutions. Still lacking a test for charges.

- Python
Published by lheagy about 8 years ago

simpeg - Regularization Bug: nC_residual

  • from PR: #685
  • commits from @lheagy
  • review from @thast

Bug fix for the way that we set the _nC_residual in the Regularization; this is important for constructing a default W matrix used inside the norm. We also clean up the logic of how we set nC_residual and adds a test to ensure it doesn't break in the future.

- Python
Published by lheagy about 8 years ago

simpeg - VRM

Core code for VRM problem

Here, we add the core functionality for using potential fields to model viscous remanent magnetic responses. The approach has been adapted from the thesis "Forward modeling and inversion of viscous remanent magnetization responses in the time domain" (Cowan, 2016).

Details

  • from pr #645
  • commits from @dccowan
  • review from @lheagy

Highlights

  • Model VRM responses on 3D tensor and 3D tree meshes
  • Model VRM responses for a large variety of current waveforms
  • Model VRM responses for a multitude of transmitter types
  • Invert the response to recover a representative physical property for VRM

Future work

  • Provide adequate documentation
  • Provide working examples with figures
  • Provide workflow for removing VRM response from TEM data

Example

image

- Python
Published by lheagy about 8 years ago

simpeg - Parametric Map for a block

  • from pr #682
  • commits from @lheagy, review from @sgkang

New Map: ParametricBlock

  • add a parametric block map (2D and 3D) (eg. as shown in https://github.com/simpeg-research/heagy2018AEM/blob/master/Heagyetal2018aemworkshop.pdf)

image

Renamed maps

  • rename Parametrized maps to Parametric maps
  • update examples to be consistent with this

- Python
Published by lheagy about 8 years ago

simpeg - Permeable Targets with Inductive source TDEM

  • from PR #677
  • commits from @lheagy
  • review from @sgkang, @rowanc1

tl; dr

  • inductive source bug fix for permeable targets
  • solve the magnetostatic problem for inductive sources that have initial fields
  • new waveforms: trapezoid, quarter-sine ramp on

Bug Fix: TDEM Inductive sources + permeable targets

How we initially calculated the source term for inductive sources when the model includes permeability was incorrect (I found this by comparing a magnetostatic solution with a late on-time solution. The late on-time solution matched the case where no permeable material was included), this pr fixes that for the E-B formulation. image

In addition, we now have the option to solve the magnetostatic problem for initial fields when permeable material is included, so a shut-off waveform can be used when permeable materials are in the domain

There is now a test to ensure that inductive sources are treating permeability properly

New Waveforms

  • TrapezoidWaveform and QuarterSineRampOnWaveform

```python offTime=10 quartersine = TDEM.Src.QuarterSineRampOnWaveform(rampon=np.r[0., 3], rampoff=offTime - np.r[1., 0] ) trapezoid = TDEM.Src.TrapezoidWaveform(rampon=np.r[0., 3], rampoff=offTime - np.r_[1., 0] )

nT = 1000 time = 10.*np.arange(nT)/nT quartersineplt = np.r[[quartersine.eval(t) for t in time]] trapezoidplt = np.r[[trapezoid.eval(t) for t in time]]

fig, ax = plt.subplots(1, 2, figsize=(8, 4)) ax[0].plot(time, quartersineplt) ax[0].set_title('quarter sine waveform')

ax[1].plot(time, trapezoidplt) ax[1].settitle('trapezoid waveform')

plt.tight_layout() ```

image

- Python
Published by lheagy about 8 years ago

simpeg - NSEM updates

NSEM upgrades

Collections of updates focused on improved NSEM data functionality and updating NSEM module to comply with new developments. - from pr #515 - commits from @grosenkj - review from @rowanc1, @lheagy

Highlights

  • Compliance with new SimPEG features
    • Uses the SimPEG new objective functions
    • Relying on other latest and greatest SimPEG developments.
  • Addresses some of the long-term development goals in #452
    • Better plotting
    • Name space clean ups
  • NSEMdata improvements
    • Adds standarad_devation, floor and calc_uncertainies to Data that are indexable in the same way as the data (in parallel with #672 and #202)
    • Adds functions to work and manipulate NSEMData in Utils.dataUtils
    • Plotting methods for Data
    • New interactive NSEMDataViewer for comparing data
  • Improved example

    • 1D forward and inversion mt1d_plot
    • 3D foward modelling mt3d_fwdmodel mt3d_fwdappresplot-200_0
  • pep8 cleaning and maintainance and adding documentation.

  • Address issues #631 and #665

Backward compatibility

From the current master version of NSEM module, there isn't a large difference and backward compatibility should be intact. Majority of the work in this PR is focused on adding utilities to work and interact with NSEM data, clarifying how to use the code with better examples and do some minor maintenance.

- Python
Published by lheagy over 8 years ago

simpeg - Docs and Installation

Docs and Community

  • from pr #657
  • commits from @lheagy
  • review from @thast, @rowanc1

  • add a CONTRIBUTING.rst,

  • update the practices page,

  • organize the getting started and overview pages in their own directory, separate form the api of the core

- Python
Published by lheagy over 8 years ago

simpeg - DC IP upgrades

DC-IP upgrades

  • from PR #650
  • commits from @sgkang, @thast, @micmitch, @fourndo
  • review from @lheagy, @rowanc1

This release is motivated by enhancing DC/IP packages in SimPEG, and several contributors have sweated on this release for the past several months. There are four main categories that developments have been carried out: - Physics - Utilities - Inversion Directives

Highlights of each development is summarized below.

Physics

Handling Pole-Pole data - Mixed boundary condition for Problem2D_CC and Problem3D_CC

Easy import for DC and IP problems - Now DC and IP can be easily imported: python from SimPEG import DC, IP

Storing Sensitivity - Sensitivity can be stored, and this option can be used in the inversion: python problem = DC.Problem3D_CC(mesh, storeJ=True, ...) J = problem.getJ(m)

Working DC octree inversion (thanks to @fourndo and @micmitch) - This is limited in a specific branch of discretize package: discretize/TreeMesh_CellGrad - Regularization and DC problems have been improved to handle octree and working! - Mesh generation utility has not been updated in this branch, but will be included in the next release. - IP problem has not been tested for octree yet.

Utilities for DC and IP problems (thanks to @thast )

Updated StaticUtils - IO functions for UBC-GIF codes DCIP2D and DCIP3D - add Utils such electrode_separations or geometric_factor - Utils are now compatible with all types of survey

Survey and I/O - IO class for DC problem is initiated, but still requires further developments. - Synthetic DC survey can be easily generated using StaticUtils + DC.IO + DC.Survey

```python

Initiate I/O class for DC

IO = DC.IO() endl = np.array([[xmin, ymin, zmin], [xmax, ymax, zmax]])

Generate DC survey object

survey = DC.Utils.genDCIPsurvey(endl, surveytype=survey_type, dim=2, a=10, b=10, n=10)

Obtain ABMN locations

survey.getABMN_locations()

Obtain 2D TensorMesh

mesh, actind = IO.set_mesh()

Generate Topography

topo, mesh1D = DC.Utils.genTopography(mesh, -10, 0, its=100)

Generate active cells

actind = Utils.surface2indtopo(mesh, np.c[mesh1D.vectorCCx, topo])

Drape electrode locations to topography

survey.drapeTopo(mesh, actind, option="top") ```

Inversion Directives (thanks to @fourndo!)

  • Add sensitivity weighting directive
  • Update IRLS directive
  • Change to Directive to convert regularization, misfit to ComboObjective

- Python
Published by lheagy over 8 years ago

simpeg - dependencies and example updates

from #655 - update link to paper in the em examples to point to computers and geoscience instead of arxiv - update pypi credentials so simpeg will auto-deploy - update dependence on properties and vectormath to be in-sync with discretize (we require vectormath and properties>=0.3.6b0

- Python
Published by lheagy over 8 years ago

simpeg - DC Examples

Changes from: #648 Commits from @thast, @fourndo
Review from @lheagy

New Examples

  • 2D DC inversion: conductive and resistive cylinders
  • 3D DC inversion: conductive and resistive spheres

image

image

Updates

  • Update to DCUtils.gen_DCIPsurvey() : Survey Generator can be used now for 2.5D survey.

- Python
Published by lheagy over 8 years ago

simpeg - Cleanup of Regularization and Utils

Regularization Cleanup

from pr #623. Commits from @lheagy, review from @rowanc1, @fourndo
- ensure that all children of a combo regularization are looking at the exact same regmesh, mappings - do not store both the mesh and the regmesh on the regularization. Only the regmesh is needed. - add tests to ensure children of a combo regularization are looking at the same regmesh and mapping objects in memory

Utils Cleanup

from pr #626. Commits from @lheagy, @rowanc1 , review from @rowanc1 - delete util code that has been transferred to discretize so that we are only managing one version! - changes to ExtractCoreMesh were transferred over in simpeg/discretize#67. Thanks @thast!

- Python
Published by lheagy over 8 years ago

simpeg - Regularization Mesh Refactoring

Clean up how the regmesh interacts with the combo regularizations

From pr #623. Commits from @lheagy, reviews from @rowanc1, @fourndo
- ensure that all children of a combo regularization are looking at the exact same regmesh, mappings - do not store both the mesh and the regmesh on the regularization. Only the regmesh is needed. (eg. reg.mesh no longer exists, but the mesh used to generate the regularization mesh is still accessible from reg.regmesh.mesh) - add tests to ensure children of a combo regularization are looking at the same regmesh and mapping objects in memory

- Python
Published by lheagy almost 9 years ago

simpeg - delete utils that are present in discretize

Remove duplicate utils in favour of discretize

  • from pr #626, commits from @lheagy, reviews from @rowanc1
  • delete utils from SimPEG that are in discretize, import the ones from discretize instead
  • avExtrap has been changed to av_extrap

- Python
Published by lheagy almost 9 years ago

simpeg - EM Paper examples, MT Tutorial

EM Paper

  • from PR #614. Commits from: @sgkang, @lheagy
  • bookpurnong inversion examples from the EM paper
  • first pass at a grounded source implementation for TDEM.Problem3D_e image

MT tutorial

  • from PR #611, #615, #619. Commits from: @thast, @sgkang, @lheagy. Reviews from: @lheagy, @rowanc1
  • 1D MT layered earth analytic
  • updates to the saving directive to output each component of the regularization, option to save the text file or not
  • plot the Tikhonov curve with the directive image

Testing and Deploy of Documentation

  • from PR #618, #620. Commits from @lheagy, Review from @rowanc1
  • cache the docs and examples so that they are only tested on changes rather than testing every time

Minor changes

  • update the default for surface2ind_topo to be nearest. @fourndo, review from @thast

- Python
Published by lheagy almost 9 years ago

simpeg - Joint inversions and more

Highlights

  • objective functions and joint inversions (https://github.com/simpeg/simpeg/releases/tag/0.6.0b0)
  • Interp Utils, VTEM waveform, Mag Driver updates (https://github.com/simpeg/simpeg/releases/tag/0.6.0.b1)
  • examples updates for the em paper
  • bug fixes in the surface to ind topo (https://github.com/simpeg/simpeg/releases/tag/0.6.0b2)

See notes in the beta releases for details.

- Python
Published by lheagy about 9 years ago

simpeg - surface2ind_topo

Debugged and improved surface2ind_topo with interpolation options

PR #599 (commits from @thast, @lheagy, reviews from @rowanc1)

  • Works on both 3D and 2D tensor mesh.
  • User can now choose the interpolation method ('nearest', 'linear', 'cubic')

figure_1

- Python
Published by lheagy about 9 years ago

simpeg - Interp Utils, VTEM waveform, Mag Driver updates

Minor Changes

Remove interp utils

PR #601 (commits from @lheagy, reviews from: @rowanc1 ) - remove interputils from SimPEG. This should be imported from discretize from discretize import interputils - this also gets rid of the efficiency warning on import (that is handled by discretize if necessary). See simpeg/discretize#56

VTEM Waveform & Static Utils

PR #602 (commits from: @sgkang, reviews from @lheagy) - [untested] add static utils that we can drape electrode locations below topography - [untested] VTEM waveform

Mag Driver updates

PR #603 (commits from @fourndo, reviews from @lheagy) - [untested] Minor changes to data plotting function - minor changes to MagneticDriver function

- Python
Published by lheagy about 9 years ago

simpeg - Objective functions & Joint Inversions

Major Changes

Composable objective functions

PR #511 (commits from: @lheagy, @rowanc1, @fourndo reviews from: @rowanc1, @fourndo, @leouieda, @sgkang, @jcapriot)

  • wrote a base objective function class that allows for composable objective functions, so you can now say python phi = alpha_s * Regularization.Smallness(mesh) + alpha_x * Regularization.Smoothness(mesh)
  • regularization and datamisfit now inherit from this. This results in several namespace changes
    • reg.eval(m) --> reg(m), dmisfit.eval(m) --> dmisfit(m)
    • reg.evalDeriv(m) --> reg.deriv(m), dmisfit.evalDerivl(m) --> dmisfit.deriv(m)
    • reg.eval2Deriv(m) --> reg.deriv(m), dmisfit.eval2Derivl(m) --> dmisfit.deriv(m)
  • all regularizations and datamisfit now each have their own individual W matrix. There are no longer differently named W's, eg
    • dmistfit.Wd = Utils.sdiag(1/wd) --> dmisfit.W = Utils.sdiag(1/wd)

Regularization

  • regularization refactor to be more modular.
    • For example, Regularization.Tikhonov is now a composite regularization that has an objective function list (reg.objfcts) consisting of Regularization.Smallness, Regularization.Smooth_x, Regularization.Smooth_y, Regularization.Smooth_z, Regularization.Smooth_xx, Regularization.Smooth_yy, Regularization.Smooth_zz.
  • implemented properties in regularization (requires dev right now) for
    • indActive
    • mref
    • cell_weights
    • mrefInSmooth
    • alpha_? (x, y, ...)
  • any time properites are updated on a CompositeRegularization, those changes are propagated to the objective functions that make it up.

Other impacts

  • update IRLS directive to hold the l2model (the directive should keep track of that model, it does not need to be stored on the regularization) cc @fourndo
  • updated Props to include a SimPEGArray and SimPEGFloat that allow Utils.Zero and Utils.Identity @rowanc1
  • [non-backwards-compatible] update examples to set data weights on dmisfit.W instead of dmisfit.Wd as that will depreciate on these changes

InvProb Compatibility with Composable Objective functions

  • allow both dmisfit to be either a base objective function or a base data misfit
  • extend invProb in cases where dmisfit is a combo objective function so that it can stash multiple fields from different problems

Additions

Straight Ray Tomography

PR #511 - implement SEIS.StraightRay, Problem, Survey, Src and Rx - example: SEIS_StraightRayTomo.py

image

Example Joint Inversion

PR #511 - include an example "joint" inversion (consists of 2 data misfit terms and a regularization) based on the Heagy et. al., 2014 SEG abstract http://library.seg.org/doi/abs/10.1190/segam2014-1639.1: SEIS_VolumeRegularization.py

image

Minor Changes

Distribution

PR #576 (commits from: @lheagy. reviews from: @rowanc1) - build universal wheel for SimPEG on travis whenever a tag is submitted - similar to simpeg/discretize#44, however since SimPEG is now pure python, a universal wheel can instead be used. https://packaging.python.org/distributing/#universal-wheels

Sphinx Gallery

PR #588 (commits from @lheagy. reviews from @rowanc1) - minor docs updates to align with sphinx-gallery/sphinx-gallery#151

Survey Pairs

PR #583 (commits from: @lheagy) - have the survey check if it is already paired to problem and raise an error if it is. Usesurvey.unpair() if you are re-using the same survey more than once.
- whitespace cleanup in Survey.py

Docs enhancement

PR #595 (commits from @lheagy, reviews from @rowanc1) Bring in the documentation pages from the previous SimPEG tutorials (as per #544): - "Getting Started for Developers" - "Practices"

image

Remote Download

PR #598 (commits from: @lheagy, reviews from: @rowanc1, @fourndo)
modify the remoteDownload utils so that more of the string handling is done by the util as per #596

Before basePath = os.path.sep.join(os.path.abspath(os.getenv('HOME')).split(os.path.sep)+['Downloads']+['SimPEGtemp']) basePath = os.path.abspath(remoteDownload(url, cloudfiles, basePath=basePath+os.path.sep))

After basePath = download(url, path='~/Downloads', overwrite=True)

Breaks Backwards compatibility

  • dmisfit.Wd is now dmisfit.W
  • Utils.remoteDownload is now Utils.download

- Python
Published by lheagy about 9 years ago

simpeg - Examples Gallery

Docs

  • A beautiful Examples Gallery. Thanks @rowanc1!!
  • cleanup travis deploy of docs
  • add an "edit on github" link for each page of docs
  • patch for properties docs when inheriting and extending a property (see 3ptscience/properties#153) image

Other changes

  • travis testing on python 3.6
  • deploy to pypi from python 3.6
  • update to be consistent with latest properties release (https://github.com/3ptscience/properties/releases/tag/v0.3.3). Thanks @fwkoch!

- Python
Published by lheagy about 9 years ago

simpeg - discretize + Richards

Major changes: discretize

  • removed the meshing, and some of the testing in favour of discretize (which was pulled out and improved by @jcapriot)
  • There are major updates to Richards equation and a number of new examples. This includes the ability to invert for any parameter inside the empirical functions.
  • np and sp are no longer exported by from SimPEG import * #533

Minor changes

  • Removed utils.isScalar in favour of the numpy version.
  • Identity and Zero are pointers into the discretize package
  • Validation on HasModel classes is now recursive.
  • Updated testing code to latest version of pymatsolver, backwards compatible.

- Python
Published by lheagy over 9 years ago

simpeg - TDEM: four formulations + API improvements

TDEM: Four formulations

  • Problem3D_e : can solve for e, dbdt
  • Problem3D_b : can solve for e, b, dbdt
  • Problem3D_h : can solve for h, j, dhdt
  • Problem3D_j : can solve for j, dhdt

Namespace

Following conventions in FDEM - Receivers are classes: TDEM.Rx.Point_dbdt. This will break backwards compatibility

Testing

  • Cross check Problem3D_e and Problem3D_b against each other, as well as Problem3D_h and Problem3D_j against each other
  • Derivative and adjoint tests on all using a step-off waveform, mag dipole source
  • Derivative and adjoint tests in off-time for a vtem waveform

Other Items

  • started implementation of properties in Sources
  • use _formulation = 'EB', 'HJ' instead of eqLocs
  • abstract common pieces of FDEM, TDEM sources to a BaseEMSrc

changes from #539

- Python
Published by lheagy over 9 years ago

simpeg - Properties and Declarative Problem Maps

Properties

  • SimPEG now depends on properties[math] (https://github.com/3ptscience/properties)

pip install properties[math]

Mappings and Models

  • depreciate mapping in the problem definition. Now the physical property to which the mapping is related must be explicitly stated. eg. SimPEG.EM.FDEM.Problem3D_e(mesh, mapping=sigmaMap) becomes SimPEG.EM.FDEM.Problem3D_e(mesh, sigmaMap=sigmaMap) This change is not backwards compatible
  • depreciate problem.curModel in favour of problem.model
  • implement properties for the physical properties in all SimPEG problems

Added Maps

  • Parametrized block in layer
  • Parametrized layer

EM

  • break SrcFDEM out of survey and put into a separate file
  • implement primary-secondary source for FDEM problem
  • testing of sources for FDEM

Static

  • tests dipole-dipole, dipole-pole, pole-dipole, and pole-pole
  • corresponding pole source and receiver classes are implemented
  • option for boundary conditions for Problem3D_CC (dirichlet or neumann)
  • consistent handling of null-space for both Problem3DCC and Problem3DN
  • 2.5D DC code is implemented (Problem2D_CC and Problem2D_N), and tested
  • Useful utiilities
    • plot_pseudoSection: plotting pseudo-section for 2D data
    • gen_DCIPsurvey: generating simple surveys
    • read/writeUBC_DC3Dobs
    • readUBC_DC2D model
    • convertObsDC3Dto_2D: Collapse 3D survey to along line 2D survey
    • Analytic functions are added: DCAnalytic_Pole_Dipole, DCAnalytic_Dipole_Pole, DCAnalytic_Pole_Pole, DCAnalytic_Dipole_Dipole, DCAnalyticSphere

Mesh View

  • added the ability to do mirror=True on the cyl mesh and have it plot a mirror image so corss sections can be easily viewed
  • added the ability to down-sample the area being viewed using range_x, range_y to define the bounds of the region you want to view. sample_grid = [dx, dy] can be used to re-sample the data (handy for the casing-type meshes)

Examples

  • so much whitespace cleanup :)
  • add Craig's example: PFGravityLagunadelMaule_Inversion
  • add examples from SimPEG.EM paper

Docs

  • deploy: http://dev-docs.simpeg.xyz

- Python
Published by lheagy over 9 years ago

simpeg - Projection Map

  • add projection map
  • use creative commons footer in docs

- Python
Published by lheagy over 9 years ago

simpeg - NSEM

Refactoring of Natural Source Electromagnetic Implementation. Includes Magnetotellurics, Tipper and ZTEM (minimally tested). From PR's #462, #423 - NSEM inherits from SimPEG.EM - SimPEG.MT --> SimPEG.EM.NSEM : inherit all natural source EM functionality from EM.NSEM - namespace has been updated to be consistent with SimPEG.EM.FDEM, in particular all problems follow the convention ProblemXD_assumption where X is the dimensionality of the problem
- NSEM receivers are now classes - RX.Point_impedance3D, RX.Point_impedance1D, RX.Point_tipper3D - NSEM have been renamed Planewave_... - Documentation for NSEM

known issues and further development are covered in #452

- Python
Published by lheagy over 9 years ago

simpeg - DC and MT

DC and MT implementations included in base SimPEG

- Python
Published by lheagy about 10 years ago

simpeg - Working PIP install.

Many more Examples Pip Zero and Identity Pymatsolver for Faster Builds on Travis

- Python
Published by rowanc1 over 10 years ago

simpeg - SimPEG Paper

  • Updates to fields object.
  • Rename Transmitter to Source
  • Sources no longer have sourceType, they should be implemented as classes
  • Sources only take a RxList, everything else is a kwarg
  • Rename LogicallyRectangularMesh to CurvilinearMesh
  • Updates to anisotropy mapping
  • Diagonal estimators
  • Bug Fixes

- Python
Published by rowanc1 about 11 years ago