{"id":38513780,"url":"https://github.com/robertopreste/mitoviz","last_synced_at":"2026-01-17T06:25:07.059Z","repository":{"id":36792991,"uuid":"230296278","full_name":"robertopreste/mitoviz","owner":"robertopreste","description":"Python package to plot variants on the human mitochondrial genome.","archived":false,"fork":false,"pushed_at":"2024-11-23T10:34:52.000Z","size":86674,"stargazers_count":3,"open_issues_count":12,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-09-28T14:25:29.062Z","etag":null,"topics":["bioinformatics","mitochondria","python3","variants","visualization"],"latest_commit_sha":null,"homepage":"https://mitoviz.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/robertopreste.png","metadata":{"files":{"readme":"README.rst","changelog":"HISTORY.rst","contributing":"CONTRIBUTING.rst","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.rst","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-12-26T16:42:17.000Z","updated_at":"2025-09-03T03:16:47.000Z","dependencies_parsed_at":"2023-01-17T04:50:42.183Z","dependency_job_id":"9b3e19ea-44eb-4253-a9c4-1c74cadfb78f","html_url":"https://github.com/robertopreste/mitoviz","commit_stats":{"total_commits":207,"total_committers":3,"mean_commits":69.0,"dds":"0.13043478260869568","last_synced_commit":"80d01c9773e37227baa43984bc5d8bb692d894de"},"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/robertopreste/mitoviz","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robertopreste%2Fmitoviz","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robertopreste%2Fmitoviz/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robertopreste%2Fmitoviz/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robertopreste%2Fmitoviz/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/robertopreste","download_url":"https://codeload.github.com/robertopreste/mitoviz/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robertopreste%2Fmitoviz/sbom","scorecard":{"id":780417,"data":{"date":"2025-08-11","repo":{"name":"github.com/robertopreste/mitoviz","commit":"80d01c9773e37227baa43984bc5d8bb692d894de"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.2,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Code-Review","score":6,"reason":"Found 6/10 approved changesets -- score normalized to 6","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":5,"reason":"5 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-qr4w-53vh-m672","Warn: Project is vulnerable to: PYSEC-2023-183","Warn: Project is vulnerable to: PYSEC-2020-73","Warn: Project is vulnerable to: PYSEC-2023-228 / GHSA-mq26-g339-26xf","Warn: Project is vulnerable to: PYSEC-2022-43017 / GHSA-qwmp-2cf2-g9g6"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 28 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-23T04:46:30.360Z","repository_id":36792991,"created_at":"2025-08-23T04:46:30.360Z","updated_at":"2025-08-23T04:46:30.360Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28502220,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T04:31:57.058Z","status":"ssl_error","status_checked_at":"2026-01-17T04:31:45.816Z","response_time":85,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bioinformatics","mitochondria","python3","variants","visualization"],"created_at":"2026-01-17T06:25:06.984Z","updated_at":"2026-01-17T06:25:07.043Z","avatar_url":"https://github.com/robertopreste.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"=======\nmitoviz\n=======\n\n\n.. image:: https://img.shields.io/pypi/v/mitoviz.svg\n        :target: https://pypi.python.org/pypi/mitoviz\n\n.. image:: https://www.repostatus.org/badges/latest/active.svg\n   :alt: Project Status: Active – The project has reached a stable, usable state and is being actively developed.\n   :target: https://www.repostatus.org/#active\n\n.. image:: https://travis-ci.com/robertopreste/mitoviz.svg?branch=master\n        :target: https://travis-ci.com/robertopreste/mitoviz\n\n.. image:: https://codecov.io/gh/robertopreste/mitoviz/branch/master/graph/badge.svg\n    :target: https://codecov.io/gh/robertopreste/mitoviz\n\n.. image:: https://readthedocs.org/projects/mitoviz/badge/?version=latest\n        :target: https://mitoviz.readthedocs.io/en/latest/?badge=latest\n        :alt: Documentation Status\n\n\nPlot variants on the human mitochondrial genome.\n\n\n* Free software: MIT license\n* Documentation: https://mitoviz.readthedocs.io\n* GitHub repo: https://github.com/robertopreste/mitoviz\n\n\nFeatures\n========\n\nmitoviz is a simple python package to plot human mitochondrial variants on a graphical\nrepresentation of the human mitochondrial genome. It currently supports plotting variants\nstored in VCF and tabular files, as well as from general ``pandas`` dataframes when importing\nmitoviz in Python.\n\nVariants are shown according to their heteroplasmic fraction (HF), plotting variants with\nHF = 1.0 on the outer border of the mitochondrial circle, those with HF = 0.0 on the inner\nborder and all the others in between, according to their actual HF value.\n\n.. image:: https://github.com/robertopreste/mitoviz_testimgs/raw/master/images/sample_hf.png\n  :alt: Mitochondrial plot with HF\n\nIf the HF information is not available, variants will all be shown in the middle of the\nmitochondrial circle.\n\nA linear representation of the mitochondrial genome can also be plotted; in this case,\nvariants are shown using a *lollipop plot* style, with the height of the marker reflecting\ntheir HF.\n\n.. image:: https://github.com/robertopreste/mitoviz_testimgs/raw/master/images/sample_linear_hf.png\n  :alt: Mitochondrial linear plot with HF\n\nVariants with no HF information will be shown as if their HF was 0.5.\n\nUsage\n=====\n\nmitoviz can be used both from the command line and as a python module.\n\nCommand Line\n------------\n\nGiven a VCF file with human mitochondrial variants (``sample.vcf``), plotting them is fairly\nsimple:\n\n.. code-block:: console\n\n    $ mitoviz sample.vcf\n\nAn image named ``mitoviz.png`` will be created in the current directory; if you want to provide a\nspecific filename where the plot will be saved, just add the ``--output`` option with the desired\npath:\n\n.. code-block:: console\n\n    $ mitoviz sample.vcf --output my_mt_plot.png\n\nLinear plots can be created using the ``--linear`` option:\n\n.. code-block:: console\n\n    $ mitoviz sample.vcf --linear\n\nPolar and linear interactive plots can also be created by adding the ``--interactive`` option, and\nwill be saved to an HTML file:\n\n.. code-block:: console\n\n    $ mitoviz sample.vcf --interactive\n\nIt is also possible to plot variants stored in a tabular file, such as CSV or TSV formats; mitoviz\nwill automatically recognise them, treating the file as comma-separated by default. If a different\nseparator is used (as in the case of TSV files), just specify it with the ``--sep`` option:\n\n.. code-block:: console\n\n    $ mitoviz sample.tsv --sep \"\\t\"\n\nIf you just need to create an empty mitochondrial plot, we've got you covered: use the\n``mitoviz-base`` command and provide one or more options like ``--linear``, ``--interactive``,\n``--legend``, ``--split``, ``--output``, based on your needs.\n\nPython Module\n-------------\n\nImport mitoviz and use its ``plot_vcf`` function to use it in your own script:\n\n.. code-block:: python\n\n    from mitoviz import plot_vcf\n\n    my_plot = plot_vcf(\"sample.vcf\")\n\nIn this case, no plot will be shown until a call to ``plt.show()`` is made. It is possible to\nsave the resulting plot using the ``save`` option and to provide a specific file where the plot\nwill be saved using the ``output`` option:\n\n.. code-block:: python\n\n    plot_vcf(\"sample.vcf\", save=True, output=\"my_mt_plot.png\")\n\nBy default, a polar plot is returned; linear plots are easily created using the ``linear`` option:\n\n.. code-block:: python\n\n    plot_vcf(\"sample.vcf\", save=True, linear=True)\n\nInteractive plots can be created with the ``interactive`` option, and can be either saved to an\nHTML file or inspected in a Jupyter notebook:\n\n.. code-block:: python\n\n    # Show the interactive plot (works in a Jupyter notebook)\n    plot_vcf(\"sample.vcf\", interactive=True)\n    # Save the interactive plot to an HTML file\n    plot_vcf(\"sample.vcf\", interactive=True, save=True)\n\nA similar function to plot variants contained in a pandas DataFrame is available as ``plot_df``.\nSupposing you have a pandas DataFrame with human mitochondrial variants named ``variants_df``, it\nis possible to plot them as follows:\n\n.. code-block:: python\n\n    from mitoviz import plot_df\n\n    plot_df(variants_df)\n\nVariants stored in tabular files can be plotted using ``plot_table``, which accepts the same\noptions available for ``plot_vcf`` and ``plot_df``, with the addition of ``sep``, which is used to\nspecify the column separator. By default, the comma is used as column delimiter:\n\n.. code-block:: python\n\n    from mitoviz import plot_table\n\n    # plotting a CSV file\n    plot_table(\"sample.csv\")\n    # plotting a TSV (tab-separated) file\n    plot_table(\"sample.tsv\", sep=\"\\t\")\n\n``plot_table`` also accept additional keyword options, which will be passed to ``pandas.read_table``\nwhen processing the given input file:\n\n.. code-block:: python\n\n    plot_table(\"sample.tsv\", sep=\"\\t\", comment=\"#\", skiprows=0)\n\nIf you just need to create an empty mitochondrial plot, the ``plot_base`` function allows to do so,\nand accepts the ``linear``, ``interactive``, ``legend``, ``split``, ``output`` and ``save``\narguments to further tweak its behaviour.\n\nPlease refer to the Usage_ section of the documentation for further information.\n\nInstallation\n============\n\n**PLEASE NOTE: HmtNote only supports Python \u003e= 3.6!**\n\nThe preferred installation method for mitoviz is using ``pip``:\n\n.. code-block:: console\n\n    $ pip install mitoviz\n\nPlease refer to the Installation_ section of the documentation for further information.\n\nCredits\n=======\n\nThis package was created with Cookiecutter_ and the `cc-pypackage`_ project template.\n\n.. _Cookiecutter: https://github.com/audreyr/cookiecutter\n.. _`cc-pypackage`: https://github.com/robertopreste/cc-pypackage\n.. _Usage: https://mitoviz.readthedocs.io/en/latest/usage.html\n.. _Installation: https://mitoviz.readthedocs.io/en/latest/installation.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobertopreste%2Fmitoviz","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frobertopreste%2Fmitoviz","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobertopreste%2Fmitoviz/lists"}