René's URL Explorer Experiment


Title: GitHub · Where software is built

Open Graph Title: python-control/python-control

X Title: python-control/python-control

Description: The Python Control Systems Library is a Python module that implements basic operations for analysis and design of feedback control systems. - python-control/python-control

Open Graph Description: The Python Control Systems Library is a Python module that implements basic operations for analysis and design of feedback control systems. - python-control/python-control

X Description: The Python Control Systems Library is a Python module that implements basic operations for analysis and design of feedback control systems. - python-control/python-control

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

X: @github

direct link

Domain: github.com


Hey, it has json ld scripts:
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"This system broke step_info function test","articleBody":"The SettlingMin or SettlingMax or/and Peak values calculus depend on span time selección when the system is asymptotic system:\r\n\r\nstep_info test broke with this test (In this case Fail SettingMax):\r\n\r\n```\r\n@pytest.fixture\r\n    def siso_tf_peak1(self):\r\n        # Peak_value = Undershoot = y_final(y(t=inf))\r\n        # step info time values depend on time vector discretization\r\n        # use T=linspace(0,50,10000)\r\n        T = TSys(TransferFunction([-1, 1],[1, 1]))\r\n        T.step_info = {\r\n            'RiseTime': 2.2002,\r\n            'SettlingTime': 4.6104, \r\n            'SettlingMin': 0.9004, \r\n            'SettlingMax': 0.9999, \r\n            'Overshoot': 0, \r\n            'Undershoot': 100.0, \r\n            'Peak': 1.0, \r\n            'PeakTime': 0.0, \r\n            'SteadyStateValue': 1.0}\r\n        return T\r\n```\r\n\r\n\r\nthe problem is with SettlingMax using T by deafault\r\n\r\n```\r\n\r\n========================================================================== FAILURES ===========================================================================\r\n__________________________________________________ TestTimeresp.test_step_info[siso_tf_peak1-ltisys-yfinal] ___________________________________________________\r\n\r\nself = \u003ccontrol.tests.timeresp_test.TestTimeresp object at 0x7f443b7aebb0\u003e, tsystem = TransferFunction(array([-1,  1]), array([1, 1])), systype = 'ltisys'\r\ntime_2d = False, yfinal = True\r\n\r\n    @pytest.mark.parametrize(\r\n        \"yfinal\", [True, False], ids=[\"yfinal\", \"no yfinal\"])\r\n    @pytest.mark.parametrize(\r\n        \"systype, time_2d\",\r\n        [(\"ltisys\", False),\r\n         (\"time response\", False),\r\n         (\"time response\", True),\r\n         ],\r\n        ids=[\"ltisys\", \"time response (n,)\", \"time response (1,n)\"])\r\n    @pytest.mark.parametrize(\r\n        \"tsystem\",\r\n        [\"siso_tf_step_matlab\",\r\n         \"siso_ss_step_matlab\",\r\n         \"siso_tf_kpos\",\r\n         \"siso_tf_kneg\",\r\n         \"siso_tf_type1\",\r\n         \"siso_tf_peak1\"],\r\n        indirect=[\"tsystem\"])\r\n    def test_step_info(self, tsystem, systype, time_2d, yfinal):\r\n        \"\"\"Test step info for SISO systems.\"\"\"\r\n        step_info_kwargs = tsystem.kwargs.get('step_info', {})\r\n        if systype == \"time response\":\r\n            # simulate long enough for steady state value\r\n            tfinal = 3 * tsystem.step_info['SettlingTime']\r\n            if np.isnan(tfinal):\r\n                pytest.skip(\"test system does not settle\")\r\n            t, y = step_response(tsystem.sys, T=tfinal, T_num=5000)\r\n            sysdata = y\r\n            step_info_kwargs['T'] = t[np.newaxis, :] if time_2d else t\r\n        else:\r\n            sysdata = tsystem.sys\r\n        if yfinal:\r\n            step_info_kwargs['yfinal'] = tsystem.step_info['SteadyStateValue']\r\n    \r\n        info = step_info(sysdata, **step_info_kwargs)\r\n    \r\n\u003e       self.assert_step_info_match(tsystem.sys, info, tsystem.step_info)\r\n\r\ncontrol/tests/timeresp_test.py:509: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _\r\n\r\nself = \u003ccontrol.tests.timeresp_test.TestTimeresp object at 0x7f443b7aebb0\u003e, sys = TransferFunction(array([-1,  1]), array([1, 1]))\r\ninfo = {'Overshoot': 0, 'Peak': 1.0, 'PeakTime': 0.0, 'RiseTime': 2.1630344812974367, ...}\r\ninfo_ref = {'Overshoot': 0, 'Peak': 1.0, 'PeakTime': 0.0, 'RiseTime': 2.2002, ...}\r\n\r\n    def assert_step_info_match(self, sys, info, info_ref):\r\n        \"\"\"Assert reasonable step_info accuracy.\"\"\"\r\n        if sys.isdtime(strict=True):\r\n            dt = sys.dt\r\n        else:\r\n            _, dt = _ideal_tfinal_and_dt(sys, is_step=True)\r\n    \r\n        for k in ['RiseTime', 'SettlingTime', 'PeakTime']:\r\n            np.testing.assert_allclose(info[k], info_ref[k], atol=dt,\r\n                                       err_msg=f\"{k} does not match\")\r\n        for k in ['Overshoot', 'Undershoot', 'Peak', 'SteadyStateValue']:\r\n            np.testing.assert_allclose(info[k], info_ref[k], rtol=5e-3,\r\n                                       err_msg=f\"{k} does not match\")\r\n    \r\n        # steep gradient right after RiseTime\r\n        absrefinf = np.abs(info_ref['SteadyStateValue'])\r\n        if info_ref['RiseTime'] \u003e 0:\r\n            y_next_sample_max = 0.8*absrefinf/info_ref['RiseTime']*dt\r\n        else:\r\n            y_next_sample_max = 0\r\n        for k in ['SettlingMin', 'SettlingMax']:\r\n            if (np.abs(info_ref[k]) - 0.9 * absrefinf) \u003e y_next_sample_max:\r\n                # local min/max peak well after signal has risen\r\n\u003e               np.testing.assert_allclose(info[k], info_ref[k], rtol=1e-3)\r\nE               AssertionError: \r\nE               Not equal to tolerance rtol=0.001, atol=0\r\nE               \r\nE               Mismatched elements: 1 / 1 (100%)\r\nE               Max absolute difference: 0.0019\r\nE               Max relative difference: 0.00190019\r\nE                x: array(0.998)\r\nE                y: array(0.9999)\r\n\r\ncontrol/tests/timeresp_test.py:471: AssertionError\r\n_________________________________________________ TestTimeresp.test_step_info[siso_tf_peak1-ltisys-no yfinal] _________________________________________________\r\n\r\nself = \u003ccontrol.tests.timeresp_test.TestTimeresp object at 0x7f44b0132df0\u003e, tsystem = TransferFunction(array([-1,  1]), array([1, 1])), systype = 'ltisys'\r\ntime_2d = False, yfinal = False\r\n\r\n    @pytest.mark.parametrize(\r\n        \"yfinal\", [True, False], ids=[\"yfinal\", \"no yfinal\"])\r\n    @pytest.mark.parametrize(\r\n        \"systype, time_2d\",\r\n        [(\"ltisys\", False),\r\n         (\"time response\", False),\r\n         (\"time response\", True),\r\n         ],\r\n        ids=[\"ltisys\", \"time response (n,)\", \"time response (1,n)\"])\r\n    @pytest.mark.parametrize(\r\n        \"tsystem\",\r\n        [\"siso_tf_step_matlab\",\r\n         \"siso_ss_step_matlab\",\r\n         \"siso_tf_kpos\",\r\n         \"siso_tf_kneg\",\r\n         \"siso_tf_type1\",\r\n         \"siso_tf_peak1\"],\r\n        indirect=[\"tsystem\"])\r\n    def test_step_info(self, tsystem, systype, time_2d, yfinal):\r\n        \"\"\"Test step info for SISO systems.\"\"\"\r\n        step_info_kwargs = tsystem.kwargs.get('step_info', {})\r\n        if systype == \"time response\":\r\n            # simulate long enough for steady state value\r\n            tfinal = 3 * tsystem.step_info['SettlingTime']\r\n            if np.isnan(tfinal):\r\n                pytest.skip(\"test system does not settle\")\r\n            t, y = step_response(tsystem.sys, T=tfinal, T_num=5000)\r\n            sysdata = y\r\n            step_info_kwargs['T'] = t[np.newaxis, :] if time_2d else t\r\n        else:\r\n            sysdata = tsystem.sys\r\n        if yfinal:\r\n            step_info_kwargs['yfinal'] = tsystem.step_info['SteadyStateValue']\r\n    \r\n        info = step_info(sysdata, **step_info_kwargs)\r\n    \r\n\u003e       self.assert_step_info_match(tsystem.sys, info, tsystem.step_info)\r\n\r\ncontrol/tests/timeresp_test.py:509: \r\n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _\r\n\r\nself = \u003ccontrol.tests.timeresp_test.TestTimeresp object at 0x7f44b0132df0\u003e, sys = TransferFunction(array([-1,  1]), array([1, 1]))\r\ninfo = {'Overshoot': 0, 'Peak': 1.0, 'PeakTime': 0.0, 'RiseTime': 2.1630344812974367, ...}\r\ninfo_ref = {'Overshoot': 0, 'Peak': 1.0, 'PeakTime': 0.0, 'RiseTime': 2.2002, ...}\r\n\r\n    def assert_step_info_match(self, sys, info, info_ref):\r\n        \"\"\"Assert reasonable step_info accuracy.\"\"\"\r\n        if sys.isdtime(strict=True):\r\n            dt = sys.dt\r\n        else:\r\n            _, dt = _ideal_tfinal_and_dt(sys, is_step=True)\r\n    \r\n        for k in ['RiseTime', 'SettlingTime', 'PeakTime']:\r\n            np.testing.assert_allclose(info[k], info_ref[k], atol=dt,\r\n                                       err_msg=f\"{k} does not match\")\r\n        for k in ['Overshoot', 'Undershoot', 'Peak', 'SteadyStateValue']:\r\n            np.testing.assert_allclose(info[k], info_ref[k], rtol=5e-3,\r\n                                       err_msg=f\"{k} does not match\")\r\n    \r\n        # steep gradient right after RiseTime\r\n        absrefinf = np.abs(info_ref['SteadyStateValue'])\r\n        if info_ref['RiseTime'] \u003e 0:\r\n            y_next_sample_max = 0.8*absrefinf/info_ref['RiseTime']*dt\r\n        else:\r\n            y_next_sample_max = 0\r\n        for k in ['SettlingMin', 'SettlingMax']:\r\n            if (np.abs(info_ref[k]) - 0.9 * absrefinf) \u003e y_next_sample_max:\r\n                # local min/max peak well after signal has risen\r\n\u003e               np.testing.assert_allclose(info[k], info_ref[k], rtol=1e-3)\r\nE               AssertionError: \r\nE               Not equal to tolerance rtol=0.001, atol=0\r\nE               \r\nE               Mismatched elements: 1 / 1 (100%)\r\nE               Max absolute difference: 0.0019\r\nE               Max relative difference: 0.00190019\r\nE                x: array(0.998)\r\nE                y: array(0.9999)\r\n\r\ncontrol/tests/timeresp_test.py:471: AssertionError\r\n====================================================================== warnings summary =======================================================================\r\ncontrol/tests/rlocus_test.py:79\r\n  /home/jpp/github_repos/my_python_control/python-control/control/tests/rlocus_test.py:79: PytestUnknownMarkWarning: Unknown pytest.mark.timeout - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/mark.html\r\n    @pytest.mark.timeout(2)\r\n\r\n-- Docs: https://docs.pytest.org/en/stable/warnings.html\r\n=================================================================== short test summary info ===================================================================\r\nSKIPPED [1] control/tests/matlab2_test.py:204: skipping test_check_convert_shape, need to update test\r\nSKIPPED [1] control/tests/matlab2_test.py:275: need to update test\r\nSKIPPED [4] control/tests/timeresp_test.py:498: test system does not settle\r\nSKIPPED [6] control/tests/timeresp_test.py:880: No continuous forced_response without time vector.\r\nSKIPPED [1] control/tests/type_conversion_test.py:162: future test; conversions not yet fully implemented\r\nSKIPPED [2] control/tests/xferfcn_test.py:742: .__matmul__ not implemented\r\nXFAIL control/tests/lti_test.py::TestLTI::test_timebaseEqual_deprecated[None-True-True]\r\n  returns false\r\nXFAIL control/tests/optimal_test.py::test_discrete_lqr\r\n  reason: discrete LQR not implemented\r\nXFAIL control/tests/statefbk_test.py::TestStatefbk::testLQR_warning\r\n  warning not implemented\r\nFAILED control/tests/timeresp_test.py::TestTimeresp::test_step_info[siso_tf_peak1-ltisys-yfinal] - AssertionError: \r\nFAILED control/tests/timeresp_test.py::TestTimeresp::test_step_info[siso_tf_peak1-ltisys-no yfinal] - AssertionError: \r\n========================================= 2 failed, 2483 passed, 15 skipped, 3 xfailed, 1 warning in 93.49s (0:01:33) =========================================\r\n(control-dev) jpp@jpp-linux:~/github_repos/my_python_control/python-control$ /home/jpp/miniconda3/envs/control-dev/bin/python /home/jpp/github_repos/my_python_control/python-control/examples/step_info_example2.py\r\n```","author":{"url":"https://github.com/juanodecc","@type":"Person","name":"juanodecc"},"datePublished":"2021-03-30T12:23:08.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":2},"url":"https://github.com/598/python-control/issues/598"}

route-pattern/:user_id/:repository/issues/:id(.:format)
route-controllerissues
route-actionshow
fetch-noncev2:5ca7e9b0-69a8-bb39-095f-77072c069515
current-catalog-service-hash81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114
request-id951E:33B429:161ECA4:1DC4AE1:697A93EF
html-safe-nonce057daa11b26bacf4b681b2f9a59e77e43dbbb01414d6b5ee4367e064bb87651f
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5NTFFOjMzQjQyOToxNjFFQ0E0OjFEQzRBRTE6Njk3QTkzRUYiLCJ2aXNpdG9yX2lkIjoiMTk0NjkxMjU0NjgxMTk3NDYzOSIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmacb49ffd7cd0401a3a02f44804f59622f73d45bd5c7a8b746f3f080553fe46e265
hovercard-subject-tagrepository:22791752
github-keyboard-shortcutsrepository,issues,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///issues/show
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/python-control/python-control/issues/598
twitter:imagehttps://opengraph.githubassets.com/d9b299786e8e42910943bab5fbf6f296576f2bc82adb0eb97126c354fdf0a23f/python-control/python-control
twitter:cardsummary_large_image
og:imagehttps://opengraph.githubassets.com/d9b299786e8e42910943bab5fbf6f296576f2bc82adb0eb97126c354fdf0a23f/python-control/python-control
og:image:alt The Python Control Systems Library is a Python module that implements basic operations for analysis and design of feedback control systems. - python-control/python-control
og:image:width1200
og:image:height600
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
None0912f2a9aa0160e08239520d461a4b4c4ce1caa972a8370b7442b94a38a194c5
turbo-cache-controlno-cache
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
disable-turbofalse
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
releasef8f5270c10a913bfa56f2dad4b864f1cda383754
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/python-control/python-control/issues/598#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fpython-control%2Fpython-control%2Fissues%2F598
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%2Fissues%2F598
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%2Fissues%2Fshow&source=header-repo&source_repo=python-control%2Fpython-control
Reloadhttps://github.com/python-control/python-control/issues/598
Reloadhttps://github.com/python-control/python-control/issues/598
Reloadhttps://github.com/python-control/python-control/issues/598
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
New issuehttps://github.com/login?return_to=https://github.com/python-control/python-control/issues/598
New issuehttps://github.com/login?return_to=https://github.com/python-control/python-control/issues/598
#600https://github.com/python-control/python-control/pull/600
This system broke step_info function testhttps://github.com/python-control/python-control/issues/598#top
#600https://github.com/python-control/python-control/pull/600
https://github.com/juanodecc
https://github.com/juanodecc
juanodecchttps://github.com/juanodecc
on Mar 30, 2021https://github.com/python-control/python-control/issues/598#issue-844458934
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.