Topsis-Sommit-102303184 0.0.1__tar.gz → 0.0.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,91 @@
1
+ Metadata-Version: 2.4
2
+ Name: Topsis-Sommit-102303184
3
+ Version: 0.0.3
4
+ Summary: TOPSIS implementation using Python
5
+ Author: Sommit
6
+ Author-email: sommit312@gmail.com
7
+ Keywords: topsis,mcdm,decision making,ranking
8
+ Classifier: Development Status :: 3 - Alpha
9
+ Classifier: Intended Audience :: Education
10
+ Classifier: Programming Language :: Python :: 3
11
+ Classifier: Operating System :: Microsoft :: Windows
12
+ Classifier: Operating System :: Unix
13
+ Classifier: Operating System :: MacOS
14
+ Requires-Python: >=3.7
15
+ Description-Content-Type: text/markdown
16
+ License-File: LICENSE
17
+ Requires-Dist: pandas
18
+ Requires-Dist: numpy
19
+ Dynamic: author
20
+ Dynamic: author-email
21
+ Dynamic: classifier
22
+ Dynamic: description
23
+ Dynamic: description-content-type
24
+ Dynamic: keywords
25
+ Dynamic: license-file
26
+ Dynamic: requires-dist
27
+ Dynamic: requires-python
28
+ Dynamic: summary
29
+
30
+ # Topsis-Sommit-102303184
31
+
32
+ A Python package to perform TOPSIS (Technique for Order Preference by Similarity to Ideal Solution) for multi-criteria decision making using the command line.
33
+
34
+ ## Installation
35
+
36
+ Install the package from PyPI:
37
+
38
+ ```bash
39
+ pip install Topsis-Sommit-102303184
40
+ ```
41
+
42
+ ## Usage
43
+
44
+ Run TOPSIS from the command line as follows:
45
+
46
+ ```bash
47
+ topsis <InputDataFile> <Weights> <Impacts> <ResultFileName>
48
+ ```
49
+
50
+ ### Example
51
+
52
+ ```bash
53
+ topsis data.csv "1,1,1,2" "+,+,-,+" result.csv
54
+ ```
55
+
56
+ ## Input File Format
57
+
58
+ - Input file must be a CSV file
59
+ - First column contains alternatives (names)
60
+ - Remaining columns contain numerical criteria values
61
+
62
+ ### Sample Input (`data.csv`)
63
+
64
+ ```
65
+ Model,P1,P2,P3,P4
66
+ M1,250,16,12,5
67
+ M2,200,18,8,4
68
+ M3,300,14,10,6
69
+ ```
70
+
71
+ ## Parameters
72
+
73
+ - **InputDataFile**: Path to input CSV file
74
+ - **Weights**: Comma-separated numerical weights
75
+ - **Impacts**: Comma-separated impacts (`+` for benefit, `-` for cost)
76
+ - **ResultFileName**: Name of output CSV file
77
+
78
+ ## Output
79
+
80
+ The output CSV file will contain:
81
+ - **Topsis Score**
82
+ - **Rank** (1 indicates the best alternative)
83
+
84
+ ## Author
85
+
86
+ Sommit
87
+ Roll No: 102303184
88
+
89
+ ## License
90
+
91
+ MIT License
@@ -0,0 +1,62 @@
1
+ # Topsis-Sommit-102303184
2
+
3
+ A Python package to perform TOPSIS (Technique for Order Preference by Similarity to Ideal Solution) for multi-criteria decision making using the command line.
4
+
5
+ ## Installation
6
+
7
+ Install the package from PyPI:
8
+
9
+ ```bash
10
+ pip install Topsis-Sommit-102303184
11
+ ```
12
+
13
+ ## Usage
14
+
15
+ Run TOPSIS from the command line as follows:
16
+
17
+ ```bash
18
+ topsis <InputDataFile> <Weights> <Impacts> <ResultFileName>
19
+ ```
20
+
21
+ ### Example
22
+
23
+ ```bash
24
+ topsis data.csv "1,1,1,2" "+,+,-,+" result.csv
25
+ ```
26
+
27
+ ## Input File Format
28
+
29
+ - Input file must be a CSV file
30
+ - First column contains alternatives (names)
31
+ - Remaining columns contain numerical criteria values
32
+
33
+ ### Sample Input (`data.csv`)
34
+
35
+ ```
36
+ Model,P1,P2,P3,P4
37
+ M1,250,16,12,5
38
+ M2,200,18,8,4
39
+ M3,300,14,10,6
40
+ ```
41
+
42
+ ## Parameters
43
+
44
+ - **InputDataFile**: Path to input CSV file
45
+ - **Weights**: Comma-separated numerical weights
46
+ - **Impacts**: Comma-separated impacts (`+` for benefit, `-` for cost)
47
+ - **ResultFileName**: Name of output CSV file
48
+
49
+ ## Output
50
+
51
+ The output CSV file will contain:
52
+ - **Topsis Score**
53
+ - **Rank** (1 indicates the best alternative)
54
+
55
+ ## Author
56
+
57
+ Sommit
58
+ Roll No: 102303184
59
+
60
+ ## License
61
+
62
+ MIT License
@@ -0,0 +1,71 @@
1
+ import sys
2
+ import pandas as pd
3
+ import numpy as np
4
+
5
+ def main():
6
+ if len(sys.argv) != 5:
7
+ print("Error: Incorrect number of parameters")
8
+ sys.exit(1)
9
+
10
+ input_file = sys.argv[1]
11
+ weights = sys.argv[2].split(',')
12
+ impacts = sys.argv[3].split(',')
13
+ output_file = sys.argv[4]
14
+
15
+ try:
16
+ df = pd.read_csv(input_file)
17
+ except:
18
+ print("Error: File not found")
19
+ sys.exit(1)
20
+
21
+ if df.shape[1] < 3:
22
+ print("Error: Input file must contain three or more columns")
23
+ sys.exit(1)
24
+
25
+ data = df.iloc[:, 1:]
26
+
27
+ try:
28
+ data = data.astype(float)
29
+ except:
30
+ print("Error: From 2nd to last columns must contain numeric values only")
31
+ sys.exit(1)
32
+
33
+ if len(weights) != data.shape[1] or len(impacts) != data.shape[1]:
34
+ print("Error: Number of weights, impacts and columns must be same")
35
+ sys.exit(1)
36
+
37
+ for i in impacts:
38
+ if i not in ['+', '-']:
39
+ print("Error: Impacts must be either + or -")
40
+ sys.exit(1)
41
+
42
+ weights = np.array(weights, dtype=float)
43
+
44
+ norm = np.sqrt((data ** 2).sum())
45
+ normalized_data = data / norm
46
+ weighted_data = normalized_data * weights
47
+
48
+ ideal_best = []
49
+ ideal_worst = []
50
+
51
+ for i in range(len(impacts)):
52
+ if impacts[i] == '+':
53
+ ideal_best.append(weighted_data.iloc[:, i].max())
54
+ ideal_worst.append(weighted_data.iloc[:, i].min())
55
+ else:
56
+ ideal_best.append(weighted_data.iloc[:, i].min())
57
+ ideal_worst.append(weighted_data.iloc[:, i].max())
58
+
59
+ ideal_best = np.array(ideal_best)
60
+ ideal_worst = np.array(ideal_worst)
61
+
62
+ distance_best = np.sqrt(((weighted_data - ideal_best) ** 2).sum(axis=1))
63
+ distance_worst = np.sqrt(((weighted_data - ideal_worst) ** 2).sum(axis=1))
64
+
65
+ topsis_score = distance_worst / (distance_best + distance_worst)
66
+
67
+ df["Topsis Score"] = topsis_score
68
+ df["Rank"] = topsis_score.rank(ascending=False)
69
+
70
+ df.to_csv(output_file, index=False)
71
+ print("Result saved to", output_file)
@@ -0,0 +1,91 @@
1
+ Metadata-Version: 2.4
2
+ Name: Topsis-Sommit-102303184
3
+ Version: 0.0.3
4
+ Summary: TOPSIS implementation using Python
5
+ Author: Sommit
6
+ Author-email: sommit312@gmail.com
7
+ Keywords: topsis,mcdm,decision making,ranking
8
+ Classifier: Development Status :: 3 - Alpha
9
+ Classifier: Intended Audience :: Education
10
+ Classifier: Programming Language :: Python :: 3
11
+ Classifier: Operating System :: Microsoft :: Windows
12
+ Classifier: Operating System :: Unix
13
+ Classifier: Operating System :: MacOS
14
+ Requires-Python: >=3.7
15
+ Description-Content-Type: text/markdown
16
+ License-File: LICENSE
17
+ Requires-Dist: pandas
18
+ Requires-Dist: numpy
19
+ Dynamic: author
20
+ Dynamic: author-email
21
+ Dynamic: classifier
22
+ Dynamic: description
23
+ Dynamic: description-content-type
24
+ Dynamic: keywords
25
+ Dynamic: license-file
26
+ Dynamic: requires-dist
27
+ Dynamic: requires-python
28
+ Dynamic: summary
29
+
30
+ # Topsis-Sommit-102303184
31
+
32
+ A Python package to perform TOPSIS (Technique for Order Preference by Similarity to Ideal Solution) for multi-criteria decision making using the command line.
33
+
34
+ ## Installation
35
+
36
+ Install the package from PyPI:
37
+
38
+ ```bash
39
+ pip install Topsis-Sommit-102303184
40
+ ```
41
+
42
+ ## Usage
43
+
44
+ Run TOPSIS from the command line as follows:
45
+
46
+ ```bash
47
+ topsis <InputDataFile> <Weights> <Impacts> <ResultFileName>
48
+ ```
49
+
50
+ ### Example
51
+
52
+ ```bash
53
+ topsis data.csv "1,1,1,2" "+,+,-,+" result.csv
54
+ ```
55
+
56
+ ## Input File Format
57
+
58
+ - Input file must be a CSV file
59
+ - First column contains alternatives (names)
60
+ - Remaining columns contain numerical criteria values
61
+
62
+ ### Sample Input (`data.csv`)
63
+
64
+ ```
65
+ Model,P1,P2,P3,P4
66
+ M1,250,16,12,5
67
+ M2,200,18,8,4
68
+ M3,300,14,10,6
69
+ ```
70
+
71
+ ## Parameters
72
+
73
+ - **InputDataFile**: Path to input CSV file
74
+ - **Weights**: Comma-separated numerical weights
75
+ - **Impacts**: Comma-separated impacts (`+` for benefit, `-` for cost)
76
+ - **ResultFileName**: Name of output CSV file
77
+
78
+ ## Output
79
+
80
+ The output CSV file will contain:
81
+ - **Topsis Score**
82
+ - **Rank** (1 indicates the best alternative)
83
+
84
+ ## Author
85
+
86
+ Sommit
87
+ Roll No: 102303184
88
+
89
+ ## License
90
+
91
+ MIT License
@@ -1,4 +1,5 @@
1
1
  LICENSE
2
+ README.md
2
3
  setup.py
3
4
  Topsis_Assignment/__init__.py
4
5
  Topsis_Assignment/topsis.py
@@ -0,0 +1,31 @@
1
+ from setuptools import setup, find_packages
2
+
3
+ setup(
4
+ name="Topsis-Sommit-102303184", # Package name on PyPI
5
+ version="0.0.3", # Bumped version for new upload
6
+ author="Sommit",
7
+ author_email="sommit312@gmail.com",
8
+ description="TOPSIS implementation using Python",
9
+ long_description=open("README.md", encoding="utf-8").read(),
10
+ long_description_content_type="text/markdown",
11
+ packages=find_packages(),
12
+ install_requires=[
13
+ "pandas",
14
+ "numpy"
15
+ ],
16
+ entry_points={
17
+ "console_scripts": [
18
+ "topsis=topsis.topsis:main" # Creates 'topsis' command in terminal
19
+ ]
20
+ },
21
+ keywords=["topsis", "mcdm", "decision making", "ranking"],
22
+ classifiers=[
23
+ "Development Status :: 3 - Alpha",
24
+ "Intended Audience :: Education",
25
+ "Programming Language :: Python :: 3",
26
+ "Operating System :: Microsoft :: Windows",
27
+ "Operating System :: Unix",
28
+ "Operating System :: MacOS",
29
+ ],
30
+ python_requires=">=3.7",
31
+ )
@@ -1,28 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: Topsis-Sommit-102303184
3
- Version: 0.0.1
4
- Summary: TOPSIS implementation using Python
5
- Author: Sommit
6
- Author-email: sommit312@gmail.com
7
- Keywords: python,topsis,mcdm,decision making,ranking
8
- Classifier: Development Status :: 3 - Alpha
9
- Classifier: Intended Audience :: Education
10
- Classifier: Programming Language :: Python :: 3
11
- Classifier: Operating System :: Unix
12
- Classifier: Operating System :: MacOS :: MacOS X
13
- Classifier: Operating System :: Microsoft :: Windows
14
- Description-Content-Type: text/markdown
15
- License-File: LICENSE
16
- Requires-Dist: pandas
17
- Requires-Dist: numpy
18
- Dynamic: author
19
- Dynamic: author-email
20
- Dynamic: classifier
21
- Dynamic: description
22
- Dynamic: description-content-type
23
- Dynamic: keywords
24
- Dynamic: license-file
25
- Dynamic: requires-dist
26
- Dynamic: summary
27
-
28
- A Python package to perform TOPSIS (Technique for Order Preference by Similarity to Ideal Solution) using command line.
@@ -1,69 +0,0 @@
1
- import sys
2
- import pandas as pd
3
- import numpy as np
4
-
5
- if len(sys.argv) != 5:
6
- print("Error: Incorrect number of parameters")
7
- sys.exit(1)
8
-
9
- input_file = sys.argv[1]
10
- weights = sys.argv[2].split(',')
11
- impacts = sys.argv[3].split(',')
12
- output_file = sys.argv[4]
13
-
14
- try:
15
- df = pd.read_csv(input_file)
16
- except:
17
- print("Error: File not found")
18
- sys.exit(1)
19
-
20
- if df.shape[1] < 3:
21
- print("Error: Input file must contain three or more columns")
22
- sys.exit(1)
23
-
24
- data = df.iloc[:, 1:]
25
-
26
- try:
27
- data = data.astype(float)
28
- except:
29
- print("Error: From 2nd to last columns must contain numeric values only")
30
- sys.exit(1)
31
-
32
- if len(weights) != data.shape[1] or len(impacts) != data.shape[1]:
33
- print("Error: Number of weights, impacts and columns must be same")
34
- sys.exit(1)
35
-
36
- for i in impacts:
37
- if i not in ['+', '-']:
38
- print("Error: Impacts must be either + or -")
39
- sys.exit(1)
40
-
41
- weights = np.array(weights, dtype=float)
42
-
43
- norm = np.sqrt((data ** 2).sum())
44
- normalized_data = data / norm
45
- weighted_data = normalized_data * weights
46
-
47
- ideal_best = []
48
- ideal_worst = []
49
-
50
- for i in range(len(impacts)):
51
- if impacts[i] == '+':
52
- ideal_best.append(weighted_data.iloc[:, i].max())
53
- ideal_worst.append(weighted_data.iloc[:, i].min())
54
- else:
55
- ideal_best.append(weighted_data.iloc[:, i].min())
56
- ideal_worst.append(weighted_data.iloc[:, i].max())
57
-
58
- ideal_best = np.array(ideal_best)
59
- ideal_worst = np.array(ideal_worst)
60
-
61
- distance_best = np.sqrt(((weighted_data - ideal_best) ** 2).sum(axis=1))
62
- distance_worst = np.sqrt(((weighted_data - ideal_worst) ** 2).sum(axis=1))
63
-
64
- topsis_score = distance_worst / (distance_best + distance_worst)
65
-
66
- df['Topsis Score'] = topsis_score
67
- df['Rank'] = topsis_score.rank(ascending=False)
68
-
69
- df.to_csv(output_file, index=False)
@@ -1,28 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: Topsis-Sommit-102303184
3
- Version: 0.0.1
4
- Summary: TOPSIS implementation using Python
5
- Author: Sommit
6
- Author-email: sommit312@gmail.com
7
- Keywords: python,topsis,mcdm,decision making,ranking
8
- Classifier: Development Status :: 3 - Alpha
9
- Classifier: Intended Audience :: Education
10
- Classifier: Programming Language :: Python :: 3
11
- Classifier: Operating System :: Unix
12
- Classifier: Operating System :: MacOS :: MacOS X
13
- Classifier: Operating System :: Microsoft :: Windows
14
- Description-Content-Type: text/markdown
15
- License-File: LICENSE
16
- Requires-Dist: pandas
17
- Requires-Dist: numpy
18
- Dynamic: author
19
- Dynamic: author-email
20
- Dynamic: classifier
21
- Dynamic: description
22
- Dynamic: description-content-type
23
- Dynamic: keywords
24
- Dynamic: license-file
25
- Dynamic: requires-dist
26
- Dynamic: summary
27
-
28
- A Python package to perform TOPSIS (Technique for Order Preference by Similarity to Ideal Solution) using command line.
@@ -1,31 +0,0 @@
1
- from setuptools import setup, find_packages
2
-
3
- VERSION = '0.0.1'
4
- DESCRIPTION = 'TOPSIS implementation using Python'
5
- LONG_DESCRIPTION = 'A Python package to perform TOPSIS (Technique for Order Preference by Similarity to Ideal Solution) using command line.'
6
-
7
- setup(
8
- name="Topsis-Sommit-102303184",
9
- version=VERSION,
10
- author="Sommit",
11
- author_email="sommit312@gmail.com",
12
- description=DESCRIPTION,
13
- long_description=LONG_DESCRIPTION,
14
- long_description_content_type="text/markdown",
15
- packages=find_packages(),
16
- install_requires=['pandas', 'numpy'],
17
- entry_points={
18
- 'console_scripts': [
19
- 'topsis=topsis.topsis:main'
20
- ]
21
- },
22
- keywords=['python', 'topsis', 'mcdm', 'decision making', 'ranking'],
23
- classifiers=[
24
- "Development Status :: 3 - Alpha",
25
- "Intended Audience :: Education",
26
- "Programming Language :: Python :: 3",
27
- "Operating System :: Unix",
28
- "Operating System :: MacOS :: MacOS X",
29
- "Operating System :: Microsoft :: Windows",
30
- ]
31
- )