René's URL Explorer Experiment


Title: I/O system enhancements by murrayrm · Pull Request #1082 · python-control/python-control · GitHub

Open Graph Title: I/O system enhancements by murrayrm · Pull Request #1082 · python-control/python-control

X Title: I/O system enhancements by murrayrm · Pull Request #1082 · python-control/python-control

Description: This PR provides a number of enhancements to I/O systems classes, most of which are internal but a few of which are visible to the user: Updated factory functions to provide consistent functionality in terms of copying signal/system names, overriding system/signal names, and converting between classes. Updated docstrings for all I/O classes and factory functions to provide consistent information and added unit tests to ensure consistency. The main changes were to make sure that all factory function parameters are documented while having the class docstrings focus on the primary parameters + attributes (with a reference to the factory function for more detailed documentation). Updated the tf() factory function to allow a 2D list of SISO transfer functions to be given as a means of creating a MIMO transfer function (use the new combine_tf function). This is redundant with combine_tf, but seemed useful to include in the factory function for the special case of creating a MIMO transfer function via a set of SISO expressions. E.g.: s = ct.tf('s') sys = ct.tf([[1/s, 0], [(s+1)/(s**2 + 2s + 1), 1/(s+1)]]) [8f3615b, 22 Dec '24] Added processing of the params keyword to create_statefbk_iosystem. [e4d373c, 22 Dec '24] Updated interconnect() to combine parameter lists of subsystems if params is not specified. Changed some methods and attributes to be hidden so that they don't get flagged in docstring testing. These are functions that are not needed by the user (eg, FrequencyResponseData._ifunc, which is the internally generated interpolation function if the smooth keyword is used). Changed the internal representation of transfer function numerators and denominators to a 2D array of arrays instead of a 2D nested list of arrays. This allows user of NumPy routines when accessing input/output pairs (eg, sys.num_array[i, j] instead of sys.num_list[i][j]). The nested list representation is still available via the {num,den}_list properties and the num and den attributes retrieve the nested list structure for backward compatibility. (We may want to change that in the future, but it could break user code where someone is accessing the numerator and denominator polynomials directly.) Add the ability for nlsys to create a NonlinearIOSystem representation of a StateSpace system. It's not clear that this is so useful for a user (since StateSpace is a subclass of NonlinearIOSystem), but it is handy for testing since you can quickly create a nonlinear I/O system from a linear system but have it treated as a "pure" NonlinearIOSystem instead of a StateSpace system. Got rid of redundant licensing information at the top of files that were modified (the information is contained in the LICENSE file in the main directory). Note: this PR is likely to conflict with #1081, so the plan is to review/merge #1081 first, then rebase this PR on top of that one.

Open Graph Description: This PR provides a number of enhancements to I/O systems classes, most of which are internal but a few of which are visible to the user: Updated factory functions to provide consistent functionali...

X Description: This PR provides a number of enhancements to I/O systems classes, most of which are internal but a few of which are visible to the user: Updated factory functions to provide consistent functionali...

Opengraph URL: https://github.com/python-control/python-control/pull/1082

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:aea39e24-fdfd-9503-2d0d-2e69463455f0
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-id88A8:CCED3:855889:B6DB34:697A6F0B
html-safe-nonce8f6a763a4820257ac1e80842133e93d4b4984199d8b4984e2e71aaee16aaa0f5
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI4OEE4OkNDRUQzOjg1NTg4OTpCNkRCMzQ6Njk3QTZGMEIiLCJ2aXNpdG9yX2lkIjoiODE1MjkzNjE2MjYyMTI4ODIwMyIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmac59c3daeb2dcf7c0f192f8a83a91c0a0d3dc77481c4703a3a1930f04d4ea99692
hovercard-subject-tagpull_request:2247379441
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/files
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/python-control/python-control/pull/1082/files
twitter:imagehttps://avatars.githubusercontent.com/u/293362?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/293362?s=400&v=4
og:image:altThis PR provides a number of enhancements to I/O systems classes, most of which are internal but a few of which are visible to the user: Updated factory functions to provide consistent functionali...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
None90af392c4422c0519eb9d3bf73d4a19bcd295cce41ce316abc60c8399f996938
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/python-control/python-control git https://github.com/python-control/python-control.git
octolytics-dimension-user_id2285872
octolytics-dimension-user_loginpython-control
octolytics-dimension-repository_id22791752
octolytics-dimension-repository_nwopython-control/python-control
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id22791752
octolytics-dimension-repository_network_root_nwopython-control/python-control
turbo-body-classeslogged-out env-production page-responsive full-width
disable-turbotrue
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release4c08209263bbbf322ab1921dc4539a6bfc158b1f
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/python-control/python-control/pull/1082/changes#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fpython-control%2Fpython-control%2Fpull%2F1082%2Ffiles
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub SparkBuild and deploy intelligent appshttps://github.com/features/spark
GitHub ModelsManage and compare promptshttps://github.com/features/models
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
GitHub SponsorsFund open source developershttps://github.com/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/accelerator
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fpython-control%2Fpython-control%2Fpull%2F1082%2Ffiles
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Ffiles&source=header-repo&source_repo=python-control%2Fpython-control
Reloadhttps://github.com/python-control/python-control/pull/1082/changes
Reloadhttps://github.com/python-control/python-control/pull/1082/changes
Reloadhttps://github.com/python-control/python-control/pull/1082/changes
python-control https://github.com/python-control
python-controlhttps://github.com/python-control/python-control
Notifications https://github.com/login?return_to=%2Fpython-control%2Fpython-control
Fork 447 https://github.com/login?return_to=%2Fpython-control%2Fpython-control
Star 2k https://github.com/login?return_to=%2Fpython-control%2Fpython-control
Code https://github.com/python-control/python-control
Issues 87 https://github.com/python-control/python-control/issues
Pull requests 8 https://github.com/python-control/python-control/pulls
Discussions https://github.com/python-control/python-control/discussions
Actions https://github.com/python-control/python-control/actions
Projects 0 https://github.com/python-control/python-control/projects
Wiki https://github.com/python-control/python-control/wiki
Security 0 https://github.com/python-control/python-control/security
Insights https://github.com/python-control/python-control/pulse
Code https://github.com/python-control/python-control
Issues https://github.com/python-control/python-control/issues
Pull requests https://github.com/python-control/python-control/pulls
Discussions https://github.com/python-control/python-control/discussions
Actions https://github.com/python-control/python-control/actions
Projects https://github.com/python-control/python-control/projects
Wiki https://github.com/python-control/python-control/wiki
Security https://github.com/python-control/python-control/security
Insights https://github.com/python-control/python-control/pulse
Sign up for GitHub https://github.com/signup?return_to=%2Fpython-control%2Fpython-control%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2Fpython-control%2Fpython-control%2Fissues%2Fnew%2Fchoose
murrayrmhttps://github.com/murrayrm
python-control:mainhttps://github.com/python-control/python-control/tree/main
murrayrm:iosys_enhance-07Dec2024https://github.com/murrayrm/python-control/tree/iosys_enhance-07Dec2024
Conversation 27 https://github.com/python-control/python-control/pull/1082
Commits 16 https://github.com/python-control/python-control/pull/1082/commits
Checks 13 https://github.com/python-control/python-control/pull/1082/checks
Files changed https://github.com/python-control/python-control/pull/1082/files
Please reload this pagehttps://github.com/python-control/python-control/pull/1082/changes
I/O system enhancements https://github.com/python-control/python-control/pull/1082/changes#top
Show all changes 16 commits https://github.com/python-control/python-control/pull/1082/files
0003047 add shape property to iosys murrayrm Dec 7, 2024 https://github.com/python-control/python-control/pull/1082/commits/00030472fefea87c2c0da4746b9eba2c622980e6
6c852c3 update FRD to copy signal/system names on sampling murrayrm Dec 20, 2024 https://github.com/python-control/python-control/pull/1082/commits/6c852c3db7bf82836f0226dcb995b01061299794
6df0919 convert internal representation of TF num/den to ndarray (vs list^2) murrayrm Dec 12, 2024 https://github.com/python-control/python-control/pull/1082/commits/6df091928493338b1ea2a96c91063f5778356554
9f8ff40 add tf() support for array of SISO [combine_tf] + documentation updates murrayrm Dec 14, 2024 https://github.com/python-control/python-control/pull/1082/commits/9f8ff405d90300b9824c37aa642228f26cfd7f22
a7fd763 change num/den and _num/_den to num/den_{list,array} murrayrm Dec 16, 2024 https://github.com/python-control/python-control/pull/1082/commits/a7fd763a3c25040a082a1886394a59a796ebfc81
2c7ca9a updated iosys class/factory function documentation + docstring unit t… murrayrm Dec 16, 2024 https://github.com/python-control/python-control/pull/1082/commits/2c7ca9a80fd8d80a38e3b7e7133666992c73df66
1547326 ss -> nlsys with name preservation/override + docstring update murrayrm Dec 16, 2024 https://github.com/python-control/python-control/pull/1082/commits/1547326d53782405177294e3ace99769967a7b75
319a8ea update flatsys() documentation murrayrm Dec 17, 2024 https://github.com/python-control/python-control/pull/1082/commits/319a8eaf541d46152b32af2d78ebdacf69f35821
2f2e372 add unit test to insure all factory functions handle renaming murrayrm Dec 17, 2024 https://github.com/python-control/python-control/pull/1082/commits/2f2e372623f1ca003bfe360d42451c5e74e10de3
7a79342 document and fix {input,output,state}_prefix parameters murrayrm Dec 18, 2024 https://github.com/python-control/python-control/pull/1082/commits/7a79342f6aa7d98dcaab1020ae1c5b2ea431b31c
34d5d03 small docstring and unit test warning cleanup murrayrm Dec 20, 2024 https://github.com/python-control/python-control/pull/1082/commits/34d5d03495c1b16337a844bf8f7ce8c3a541f615
8f3615b add param processing to create_statefbk_iosystem murrayrm Dec 22, 2024 https://github.com/python-control/python-control/pull/1082/commits/8f3615b46cb56a87cce3c55956d1d6b73916f39e
e4d373c update default params computation in interconnect() murrayrm Dec 23, 2024 https://github.com/python-control/python-control/pull/1082/commits/e4d373cf8f9a73802e8d7a62208340e15efed112
e10d481 update to address 29 Dec comments by @slivingston murrayrm Dec 29, 2024 https://github.com/python-control/python-control/pull/1082/commits/e10d4814d8b87112b593922227ac2b29445cd7d4
bf19193 Remove repr_format mentions; fix xferfcn static check per @slivingston murrayrm Jan 4, 2025 https://github.com/python-control/python-control/pull/1082/commits/bf191936e5e5da99da59e26c4fced6bdc646b43a
1061445 addressed @slivingston review comments murrayrm Jan 4, 2025 https://github.com/python-control/python-control/pull/1082/commits/10614458501af4985db68d58ee401dcae318bbde
Clear filters https://github.com/python-control/python-control/pull/1082/files
Please reload this pagehttps://github.com/python-control/python-control/pull/1082/changes
Please reload this pagehttps://github.com/python-control/python-control/pull/1082/changes
bdalg.py https://github.com/python-control/python-control/pull/1082/changes#diff-bfd06fb2f8c259261d6ca31b01ff2f68525fd4936b7ff911434f757a8e9201c6
flatsys.py https://github.com/python-control/python-control/pull/1082/changes#diff-6fe8823920a89e1d41e1dd75a124d2139e96caf41093969a1070f219881d86cc
frdata.py https://github.com/python-control/python-control/pull/1082/changes#diff-cacf59417131c19becd6fba4dde9e979bed49ce572eb24f0f62bd2af460d83d1
freqplot.py https://github.com/python-control/python-control/pull/1082/changes#diff-a751fe1009e7b656d19357a39abb58dd88b89052c9d9259c3393a4648b697a16
iosys.py https://github.com/python-control/python-control/pull/1082/changes#diff-12b378d96d36c9d59a9fbc5afbc7cc158d153ff7591b4769f8312772e1d74ed1
lti.py https://github.com/python-control/python-control/pull/1082/changes#diff-9eb79d97f0ecfaf506be3bac9ab8573caf6301e9685c8bfa3e91632402fa4e5a
nlsys.py https://github.com/python-control/python-control/pull/1082/changes#diff-5ae9b973ef43076c51927f314e400ffc76cef00009ba1f343c83c53bd12a9d99
optimal.py https://github.com/python-control/python-control/pull/1082/changes#diff-19ca2bf58874b6519164f42d62448fdcc1e05efe2b45263f6761f39392cdde01
statefbk.py https://github.com/python-control/python-control/pull/1082/changes#diff-dbb4a524ae36f7833fa7b5991007098ea0b11b1f8a5d30831c641f5e6d39e0cb
statesp.py https://github.com/python-control/python-control/pull/1082/changes#diff-b5aac033a6dd07653e82d9f5a40afaa775010c2d2d5af8beeb159487b566df72
bdalg_test.py https://github.com/python-control/python-control/pull/1082/changes#diff-4d1a0ecf37889711e064324709f9718d80ec96e9ae8c4d5422aa31f9ae2113bb
docstrings_test.py https://github.com/python-control/python-control/pull/1082/changes#diff-f098dc1536e0667ba32b96b805f95b4ee82c1c1c81e0547799106131b713028f
frd_test.py https://github.com/python-control/python-control/pull/1082/changes#diff-b101ace1745361794d1166464ae9f94082e839fca269eb4f15e1d6150067955c
interconnect_test.py https://github.com/python-control/python-control/pull/1082/changes#diff-6e4f4e00ba4b94a479c66a7dad1291c8d2f31d7af2e60b8d827db782113fad75
iosys_test.py https://github.com/python-control/python-control/pull/1082/changes#diff-2d9f6fd1b76261b8663bd7fa89565809a728c32edd8b0f6e095177f80b6e5100
nlsys_test.py https://github.com/python-control/python-control/pull/1082/changes#diff-9bbebd2d7d1971bd874d605b2a384e956157bdba7b55363919c6b3dd76c17697
statefbk_test.py https://github.com/python-control/python-control/pull/1082/changes#diff-90f212319faaca2098d93d660936eab8762ef555c04db53a4b76e6ece773fc1d
statesp_test.py https://github.com/python-control/python-control/pull/1082/changes#diff-4c76080acbdea36493458693d93ec10e4e10b2e04ce01c56e8a81567cc1ea0d6
xferfcn_input_test.py https://github.com/python-control/python-control/pull/1082/changes#diff-c8b70de3264b7c0446d6ea9813924269a0a755c59237e1800128ba1a14977145
xferfcn_test.py https://github.com/python-control/python-control/pull/1082/changes#diff-df824c2e70c14dd722d8f5b8d418f28180aa0d1a8dffa5e4b6271740d58cb2b2
xferfcn.py https://github.com/python-control/python-control/pull/1082/changes#diff-0dd9424d3024fc1d5cc8fd67d13efe5703318c4c705526ab0ae216de69ce3de7
steering-gainsched.py https://github.com/python-control/python-control/pull/1082/changes#diff-f5c038ad44849b4b666105a6384cfe98f765ce7f12ba992c1de6035b7813bdc5
control/bdalg.pyhttps://github.com/python-control/python-control/pull/1082/changes#diff-bfd06fb2f8c259261d6ca31b01ff2f68525fd4936b7ff911434f757a8e9201c6
View file https://github.com/murrayrm/python-control/blob/10614458501af4985db68d58ee401dcae318bbde/control/bdalg.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/python-control/python-control/pull/1082/{{ revealButtonHref }}
https://github.com/python-control/python-control/pull/1082/changes#diff-bfd06fb2f8c259261d6ca31b01ff2f68525fd4936b7ff911434f757a8e9201c6
https://github.com/python-control/python-control/pull/1082/changes#diff-bfd06fb2f8c259261d6ca31b01ff2f68525fd4936b7ff911434f757a8e9201c6
https://github.com/python-control/python-control/pull/1082/changes#diff-bfd06fb2f8c259261d6ca31b01ff2f68525fd4936b7ff911434f757a8e9201c6
https://github.com/python-control/python-control/pull/1082/changes#diff-bfd06fb2f8c259261d6ca31b01ff2f68525fd4936b7ff911434f757a8e9201c6
control/flatsys/flatsys.pyhttps://github.com/python-control/python-control/pull/1082/changes#diff-6fe8823920a89e1d41e1dd75a124d2139e96caf41093969a1070f219881d86cc
View file https://github.com/murrayrm/python-control/blob/10614458501af4985db68d58ee401dcae318bbde/control/flatsys/flatsys.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/python-control/python-control/pull/1082/{{ revealButtonHref }}
https://github.com/python-control/python-control/pull/1082/changes#diff-6fe8823920a89e1d41e1dd75a124d2139e96caf41093969a1070f219881d86cc
https://github.com/python-control/python-control/pull/1082/changes#diff-6fe8823920a89e1d41e1dd75a124d2139e96caf41093969a1070f219881d86cc
https://github.com/python-control/python-control/pull/1082/changes#diff-6fe8823920a89e1d41e1dd75a124d2139e96caf41093969a1070f219881d86cc
https://github.com/python-control/python-control/pull/1082/changes#diff-6fe8823920a89e1d41e1dd75a124d2139e96caf41093969a1070f219881d86cc
https://github.com/python-control/python-control/pull/1082/changes#diff-6fe8823920a89e1d41e1dd75a124d2139e96caf41093969a1070f219881d86cc
Please reload this pagehttps://github.com/python-control/python-control/pull/1082/changes
Please reload this pagehttps://github.com/python-control/python-control/pull/1082/changes
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.