Science Score: 54.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
✓Committers with academic emails
1 of 3 committers (33.3%) from academic institutions -
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (11.3%) to scientific vocabulary
Keywords
Repository
A mirror and a fork of PyChem
Basic Info
- Host: GitHub
- Owner: KOLANICH-mirrors
- License: gpl-3.0
- Language: Python
- Default Branch: master
- Homepage: https://sourceforge.net/projects/pychem/
- Size: 21.7 MB
Statistics
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 0
Topics
Metadata Files
ReadMe.md
PyChem
~~wheel (GitLab)~~
wheel (GHA via nightly.link)
~~~~
~~
~~
License
This software originally comes without a license full text, but within its source code it is written Licence: GNU General Public Licence and https://pypi.org/project/PyChem/ exposes OSI Approved :: GNU General Public License (GPL) "Trove classifier". In my opinion, the public release of source code, the license notices in the source code and the Trove classifiers on PyPI clearly carry author's intent to license the software under a GNU General Public License.
When the last release of the software was created (2010 year), there used to be 3 versions of GNU GPL in existence: 1, 2, and 3. In GNU GPL license texts from FSF website it used to be said:
If the Program does not specify a version number of the license, you may choose any version ever published by the Free Software Foundation.If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation.
So we consider this software as licensed under GNU GENERAL PUBLIC LICENSE Version 3, SPDX identifier GPL-3.0-or-later.
Modifications
This repo contains a modified version of software. Insignificant changes were applied to original commits in order to reduce "diff noise", reduce size of diffs, simplify code comprehension and debugging.
- The repo was imported from SourceForge CVS. Unfortunately only non-TLS access was provided by SF, which exposes us to MiTM attacks while fetching the source code.
- Repo was converted into git using
cvs2gitandgit fast-import. - Directory layout was changed.
CVSROOTwas removed. The files were transferred intoPyChemsubdir. - Source code was bulk-converted into Python 3 using
2to3 -nw. - Indentation was converted into tabs for Python files.
reposurgeon% path rename %^PyChem/(docs|examples)\/(.+)$% \1/\2reposurgeon% path rename %^PyChem/(setup_win32\.py|setup_standalone\.py)$% \1reposurgeon% path rename %^PyChem/PyChemApp\.py$% PyChem/__main__.py- Reformated using
isortandantiflash. - Imports of legacy
wxWidgetsAPI was replaced with modern ones. ```bash #!/usr/bin/env bash
rpl -F "lib.customtreectrl" "lib.agw.customtreectrl" "/*.py" rpl -F "lib.foldpanelbar" "lib.agw.foldpanelbar" "/.py" rpl -F "lib.buttonpanel" "lib.agw.buttonpanel" "/.py" rpl -F "cluster.treecluster" "treecluster" "/*.py" rpl -F "cluster.kcluster" "kcluster" "/.py" rpl -F "wx.AboutBox" "wx.adv.AboutBox" "/.py" rpl -F "wx.AboutDialogInfo" "wx.adv.AboutDialogInfo" "/*.py" rpl "\bwx.NewId\b" "wx.NewIdRef" "/.py" rpl "\bSetToolTipString\b" "SetToolTip" ".//.py" rpl "(\w+)COLOR" '\1COLOUR' ".//*.py" rpl -F "wx.SashWindow" "wx.adv.SashWindow" ".//.py" rpl -F "wx.SW3D" "wx.adv.SW3D" ".//.py" rpl -F "wx.SAVE" "wx.FDSAVE" "*/.py" rpl -F "wx.OVERWRITEPROMPT" "wx.FDOVERWRITEPROMPT" "/*.py" rpl -F "InsertStringItem" "InsertItem" "/.py" rpl -F "SetStringItem" "SetItem" "/.py"
rpl "(\w+).SetFontSizeLegend(" "\1.fontSizeLegend = (" "/*.py" rpl "(\w+).SetEnableLegend(" "\1.enableLegend = (" "/.py" rpl "(\w+).SetYSpec(" "\1.ySpec = (" "/.py" rpl "(\w+).SetXSpec(" "\1.xSpec = (" "/*.py" rpl "(\w+).SetFontSizeAxis(" "\1.fontSizeAxis = (" "/.py" rpl "(\w+).SetFontSizeTitle(" "\1.fontSizeTitle = (" "/.py" rpl "(\w+).SetEnableZoom(" "\1.enableZoom = (" "*/.py"
rpl -F 'scipy.array' 'np.array' "/*.py" rpl -F "scipy.io.arrayimport.strarray" "str_array" "/.py" rpl -F "import scipy.io" "" "/.py" rpl 'attr["(\w+)"]' "\1" "*/.py" rpl "attr['(\w+)']" "\1" "/*.py" rpl -F ".getchildren()" "" "/*.py"
rpl "exec(\"self.\" + item.tag + \".(\w+)(\" + (.+?))')" "getByPath(self, item.tag).\1(exec(\2'))" "/*.py" rpl "exec(\"self.\" + item.tag + \".(\w+)(\" + (.+?))\")" "getByPath(self, item.tag).\1(exec(\2\"))" "/.py" rpl "exec(\"(\w+) = self.\" + item.tag)" "\1 = getByPath(self, item.tag)" "/.py" rpl "exec('([^\"]+)[\"' + (.+?) + '\"]([^\"])')" "\1[\2]\3" "/.py" rpl "exec(\"(\w+) = ET.SubElement(\" + (\w+) + ', \"(\w+)\")')" "\1 = ET.SubElement(locals()[\2], \"\3\")" "/*.py" rpl "exec(\"expSetup.ResizeGrids(self.\" + item.tag + \", r, (.+?))\")" 'expSetup.ResizeGrids(getByPath(self, item.tag), r, \1)' "/.py" rpl "exec('expSetup.ResizeGrids(self.' + item.tag + ', r, (.+?))')" 'expSetup.ResizeGrids(getByPath(self, item.tag), r, \1)' "/.py" rpl -F "',\"'" "',' + '\"'" "/*.py" rpl "exec(\"(.+?)self.\" + (\w+) + \"(.+?)\")" "\1getByPath(self, \2)\3" "/.py" rpl "exec((\w+) + '= ET.SubElement((\w+), \"' + (\w+) + '\")')" "locals()[\1] = ET.SubElement(\2, \3)" "/.py" rpl "exec(\"(\w+) = ET.SubElement(\" + (\w+) + ',\"(\w+)\")')" "\1 = ET.SubElement(locals()[\2], \"\3\")" "/*.py" rpl "exec((\w+) + '([^']+)')" "locals()[\1]\2" "/.py" rpl "exec((\w+) + ' = ET.SubElement((\w+), \"' + (\w+) + '\")')" "locals()[\1] = ET.SubElement(\2, \3)" "/.py" rpl "exec((\w+) + \".(\w+) = ([^\"]+?)self.\" + (\w+) + \"([^\"]+)\")" "locals()[\1].\2 = \3getByPath(self, \4)\5" "/*.py" rpl "exec((\w+) + \"([^\"]+?)\")" "locals()[\1]\2" "/.py" rpl "exec(\"(\w+)\" + (\w+) + ' = ET.SubElement((\w+), \"' + (\w+) + '\")')" "locals()[\"\1\" + \2] = ET.SubElement(\3, \4)" "/.py" rpl "exec(\"(\w+)\" + (\w+) + '([^']+)')" "locals()[\"\1\" + \2]\3" "/*.py" rpl "exec((\w+) + \"([^\"]+)\" + (\w+) + \"([^\"]+)\")" "locals()[name].text = getByPath(self, each).GetValue()" "/.py" rpl "exec(\"(\w+)\" + (\w+) + \"([^\"]+)\")" "locals()[\"\1\" + \2]\3" "/.py" rpl "exec('(\w+) = (\w+)(([^[]+)[\"' + (\w+) + '\"]([^)]+))')" "\1 = \2(\3[\4]\5)" "/*.py" rpl "exec('(\w+) = ([\w.]+)(' + (\w+) + ',\"(\w+)\")')" "\1 = \2(locals()[\3],\"\4\")" "/.py" rpl "exec(\"(\w+) = ([\w.]+)['\" + (\w+) + \"']\")" "\1 = \2[\3]" "/.py" rpl "exec(\"(\w+).\" + ([^\"]+) + \"([^\"]+)\")" "getByPath(\1, \2)\3" "/.py" rpl "exec(\"([\w.]+)(((?:[\w]+.)+)(\w+)\"([^\"]+?)\s+\s*\"([^\"]+)\")" "\1(getByPath(\2, \"\3\"\4)\5" "/.py" rpl "([a-zA-Z]+).," "\1," "/.py" # fixes after the previous command
rpl "string.split(([^,]+), ([^)]+))" "\1.split(\2)" ".//*.py" rpl 'bp.ButtonPanel.init(self, parent=prnt, id=-1, text="([\w ]+)", style=bp.BPUSEGRADIENT,' 'bp.ButtonPanel.init(self, parent=prnt, id=-1, text="\1", agwStyle=bp.BPUSEGRADIENT,' ".//.py" rpl 'bp.ButtonPanel.init(self, parent=prnt, id=-1, text="GA-" + self.type, style=bp.BPUSEGRADIENT,' 'bp.ButtonPanel.init(self, parent=prnt, id=-1, text="GA-" + self.type, agwStyle=bp.BPUSEGRADIENT,' ".//.py" rpl "string.lower(([^)]+))" "\1.lower()" "./*/.py"
rpl -F 'string.join(("The following error occured:\n\n", error), "")' '"".join(("The following error occured:\n\n", error))' ".//*.py" rpl -F 'string.join((confmat, "\n"), "")' '"".join((confmat, "\n"))' ".//.py" rpl -F 'string.join((confmat, "\t", str(i + 1)), "")' '"".join((confmat, "\t", str(i + 1)))' ".//.py" rpl -F 'string.join((centres, "% .2f" % centroids[i, j], "\n"), "")' '"".join((centres, "% .2f" % centroids[i, j], "\n"))' ".//*.py" rpl -F 'string.join((centres, str(i + 1), "\t\t", "% .2f" % centroids[i, j], "\t"), "")' '"".join((centres, str(i + 1), "\t\t", "% .2f" % centroids[i, j], "\t"))' ".//.py" rpl -F 'string.join((centres, str(i + 1), "\t\t", "% .2f" % centroids[i, j], "\t"), "")' '"".join((centres, str(i + 1), "\t\t", "% .2f" % centroids[i, j], "\t"))' ".//.py" rpl -F 'string.join(("Principal component", str(i)), " ")' '" ".join(("Principal component", str(i)))' ".//*.py" rpl -F 'string.join(("Extracting factor...", str(xi + 1)), " ")' '" ".join(("Extracting factor...", str(xi + 1)))' ".//.py" rpl -F 'string.join(("/", workspace), "")' '"".join(("/", workspace))' ".//.py" rpl -F 'string.join((centres, "\n"), "")' '"".join((centres, "\n"))' "./*/.py"
rpl -F 'string.join((str(Var), "vars"), " ")' '" ".join((str(Var), "vars"))' ".//*.py" rpl -F 'string.join((confmat, "\t", str(confarr[i, j])), "")' '"".join((confmat, "\t", str(confarr[i, j])))' ".//.py" rpl -F 'string.join(("Variable", str(Vars + varFrom)), " ")' '" ".join(("Variable", str(Vars + varFrom)))' ".//.py" rpl -F 'string.join(("Run", str(Runs + 1)), " ")' '" ".join(("Run", str(Runs + 1)))' ".//*.py" rpl -F 'string.join(("Generation", str(count)), " ")' '" ".join(("Generation", str(count)))' ".//.py" rpl -F 'string.join((confmat, str(i + 1), "\t\t", str(confarr[i, j])), "")' '"".join((confmat, str(i + 1), "\t\t", str(confarr[i, j])))' ".//.py" rpl -F 'string.join((centres, "% .2f" % centroids[i, j], "\t"), "")' '"".join((centres, "% .2f" % centroids[i, j], "\t"))' ".//*.py" rpl -F 'string.join((centres, "\t", str(i + 1)), "")' '"".join((centres, "\t", str(i + 1)))' ".//*.py"
rpl -F 'string.join(("PLS Predictions:", str(attr["factors"] + 1), "factors, RMS(Indep. Test)", "%.2f" % _attr["RMSEPT"]), " ")' '" ".join(("PLS Predictions:", str(attr["factors"] + 1), "factors, RMS(Indep. Test)", "%.2f" % attr["RMSEPT"]))' ".//*.py" rpl -F 'string.join((title, "\n-----------------------\n\n", "No. clusters\t\tError\t\tNo. optimal soln.\n", "----------------\t\t--------\t\t------------------------\n", str(max(self.clusterid) + 1), "\t\t\t", "% .2f" % error, "\t\t", str(nfound)), "")' '"".join((title, "\n-----------------------\n\n", "No. clusters\t\tError\t\tNo. optimal soln.\n", "----------------\t\t--------\t\t------------------------\n", str(max(self.clusterid) + 1), "\t\t\t", "% .2f" % error, "\t\t", str(nfound)))' ".//.py" rpl -F 'string.join((summary, centres, confmat), "")' '"".join((summary, centres, confmat))' ".//.py" rpl -F 'string.join((str(vars + _attr["varfrom"]), " variables"), "")' '"".join((str(vars + _attr["varfrom"]), " variables"))' "./*/.py" rpl -F 'string.join(("#", str(IterCount + 1), " ", str(scipy.take(scipy.reshape(self.data["indlabelsfull"], (len(self.data["indlabelsfull"]),)), RunLabel)), " ", "%.2f" % (gaScoreList[idx[(vars * (attr["runs"] + 1)) + runs]])), "")' '"".join(("#", str(IterCount + 1), " ", str(scipy.take(scipy.reshape(self.data["indlabelsfull"], (len(self.data["indlabelsfull"]),)), RunLabel)), " ", "%.2f" % (gaScoreList[idx[(vars * (_attr["runs"] + 1)) + runs]])))' ".//*.py" rpl -F 'string.join((axis, yL), " ")' '" ".join((axis, yL))' ".//.py" rpl -F 'string.join((axis, str(col1 + 1)), " ")' '" ".join((axis, str(col1 + 1)))' ".//.py" rpl -F 'string.join((axis, xL), " ")' '" ".join((axis, xL))' ".//*.py" rpl -F 'string.join((axis, str(col2 + 1)), " ")' '" ".join((axis, str(col2 + 1)))' ".//*.py"
rpl -F 'string.replace(data, "]]", "")' 'data.replace("]]", "")' ".//*.py" rpl -F 'string.replace(data, " \n ", " ")' 'data.replace(" \n ", " ")' ".//.py" rpl -F 'string.replace(data, "\n ", " ")' 'data.replace("\n ", " ")' ".//.py" rpl -F 'string.replace(data, "]\n [ ", "\n")' 'data.replace("]\n [ ", "\n")' ".//*.py" rpl -F 'string.replace(str(self.data["raw"]), "[[ ", "")' 'str(self.data["raw"]).replace("[[ ", "")' ".//*.py"
rpl -F "string.join((\".//Workspaces/\",workspace),'')" '"".join((".//Workspaces/",workspace))' ".//*.py" rpl -F 'string.join(("#", str(IterCount + 1), " ", str(scipy.take(scipy.reshape(self.data["indlabelsfull"], (len(self.data["indlabelsfull"]),)), RunLabel)), " ", "%.2f" % (gaScoreList[Count + mch])), "")' '"".join(("#", str(IterCount + 1), " ", str(scipy.take(scipy.reshape(self.data["indlabelsfull"], (len(self.data["indlabelsfull"]),)), RunLabel)), " ", "%.2f" % (gaScoreList[Count + mch])))' ".//.py" rpl -F 'string.join(("#", str(IterCount + 1), " ", str(scipy.take(scipy.reshape(self.data["indlabels"], (len(self.data["indlabels"]),)), RunLabel)), " " "%.2f" % (gaScoreList[Count + mch])), "")' '"".join(("#", str(IterCount + 1), " ", str(scipy.take(scipy.reshape(self.data["indlabels"], (len(self.data["indlabels"]),)), RunLabel)), " " "%.2f" % (gaScoreList[Count + mch])))' ".//.py" rpl -F 'string.join(("PLS Model:", str(factors + 1), "factors, RMS(Indep. Test)", "%.3f" % RMSEPT), " ")' '" ".join(("PLS Model:", str(factors + 1), "factors, RMS(Indep. Test)", "%.3f" % RMSEPT))' ".//*.py" rpl -F 'string.join(("PLS Predictions:", str(factors + 1), "factors, RMS(Indep. Test)", "%.3f" % RMSEPT), " ")' '" ".join(("PLS Predictions:", str(factors + 1), "factors, RMS(Indep. Test)", "%.3f" % RMSEPT))' ".//.py" rpl -F 'string.join(("Extracting factor...", str(x + 1)), " ")' '" ".join(("Extracting factor...", str(x + 1)))' ".//.py"
rpl -F 'string.join((title, "\n-------------\n\n", "No. clusters\t\tError\t\tNo. optimal soln.\n", "----------------\t\t--------\t\t------------------------\n", str(max(self.clusterid) + 1), "\t\t\t", "% .2f" % error, "\t\t", str(nfound)), "")' '"".join((title, "\n-------------\n\n", "No. clusters\t\tError\t\tNo. optimal soln.\n", "----------------\t\t--------\t\t------------------------\n", str(max(self.clusterid) + 1), "\t\t\t", "% .2f" % error, "\t\t", str(nfound)))' "./*/.py"
rpl -F 'string.replace(data, " \n ", " ")' 'data.replace(" \n ", " ")' ".//*.py" rpl -F 'string.replace(data, "\n ", " ")' 'data.replace("\n ", " ")' ".//.py" rpl -F 'string.replace(data, " ", " ")' 'data.replace(" ", " ")' ".//.py" rpl -F "'%.2f' %tstgerr),'')" "'%.2f' %tstgerr))" ".//*.py" rpl -F "OlsResults = string.join((" 'OlsResults = "".join((' ".//*.py" ```
Owner
- Name: KOLANICH's mirrors of third-party projects, often discontinued ones.
- Login: KOLANICH-mirrors
- Kind: organization
- Repositories: 2
- Profile: https://github.com/KOLANICH-mirrors
Citation (CITATION.cff)
cff-version: 1.2.0
title: PyChem fork
license: GPL-3.0-or-later
repository-code: https://github.com/KOLANICH-mirrors/PyChem.py
url: https://pychem.sourceforge.net/
message: It is a fork of abandonware PyChem.
repository: https://sourceforge.net/projects/pychem/
identifiers:
- type: url
value: https://pypi.org/project/PyChem/
description: PyPI
preferred-citation:
type: article
title: 'PYCHEM: a multivariate analysis package for python'
issn: 1367-4803
languages: [en]
authors:
- &rmj01
given-names: Roger
family-names: Jarvis M
alias: rmj01
email: Roger.Jarvis@manchester.ac.uk
affiliation: &shared_affiliation |
School of Chemistry, The University of Manchester, PO Box 88, Sackville Street, Manchester M60 1QD, UK
Manchester Interdisciplinary Biocentre, 131 Princess Street, Manchester M1 7DN, UK
#affiliation: &shared_affiliation
# - name: School of Chemistry, The University of Manchester
# city: Manchester
# country: UK
# location: PO Box 88, Sackville Street, M60 1QD
# - name: Manchester Interdisciplinary Biocentre
# city: Manchester
# country: UK
# location: 131 Princess Street, M1 7DN
# orcid:
- &dvd
given-names: David
family-names: Broadhurst
affiliation: *shared_affiliation
# orcid:
- &hln
given-names: Helen
family-names: Johnson
#email: hej93@aber.ac.uk # not from that affiliation
affiliation: Faculty of Life Sciences, University of Manchester, Stopford Building, Oxford Road, Manchester M13 9PT, UK
#affiliation:
# - name: Faculty of Life Sciences, University of Manchester
# city: Manchester
# country: UK
# location: Stopford Building, Oxford Road, M13 9PT
# orcid:
- &noel
given-names: Noel
family-names: O'Boyle M
#email: oel.oboyle2@mail.dcu.ie # not from that affiliation
affiliation: Unilever Centre for Molecular Science Informatics, Department of Chemistry, University of Cambridge, Lensfield Road, CB2 1EW, UK
#affiliation:
# - name: Unilever Centre for Molecular Science Informatics, Department of Chemistry, University of Cambridge
# city: Cambridge
# country: UK
# location: Lensfield Road, CB2 1EW
# orcid:
- &rrg
given-names: Royston
family-names: Goodacre
#email: rrg@aber.ac.uk # not from that affiliation
affiliation: *shared_affiliation
# orcid:
doi: 10.1093/bioinformatics/btl416
journal: Bioinformatics
month: 7
start: 2565
end: 2566
issue: 20
volume: 22
year: 2006
publisher:
name: Oxford University Press (OUP)
#date: 2022-12-23
editors:
- given-names: Martin
family-names: Bishop
url: https://academic.oup.com/bioinformatics/article-pdf/22/20/2565/580465/btl416.pdf
abstract: |
We have implemented a multivariate statistical analysis toolbox, with an optional standalone graphical user interface (GUI), using the Python scripting language. This is a free and open source project that addresses the need for a multivariate analysis toolbox in Python. Although the functionality provided does not cover the full range of multivariate tools that are available, it has a broad complement of methods that are widely used in the biological sciences. In contrast to tools like MATLAB, PyChem 2.0.0 is easily accessible and free, allows for rapid extension using a range of Python modules and is part of the growing amount of complementary and interoperable scientific software in Python based upon SciPy. One of the attractions of PyChem is that it is an open source project and so there is an opportunity, through collaboration, to increase the scope of the software and to continually evolve a user-friendly platform that has applicability across a wide range of analytical and post-genomic disciplines.
AVAILABILITY: http://sourceforge.net/projects/pychem
authors:
- *rmj01
- *dvd
- *hln
- *noel
- *rrg
GitHub Events
Total
Last Year
Committers
Last synced: almost 2 years ago
Top Committers
| Name | Commits | |
|---|---|---|
| Roger Jarvis | R****s@m****k | 49 |
| KOLANICH | k****n@m****u | 37 |
| KOLANICH | K****H | 1 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: almost 2 years ago
All Time
- Total issues: 0
- Total pull requests: 0
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Total issue authors: 0
- Total pull request authors: 0
- Average comments per issue: 0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 0
- Pull requests: 0
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Issue authors: 0
- Pull request authors: 0
- Average comments per issue: 0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0