Mercurial > repos > mbernt > baseline_toxicity_calculator
annotate qsar1.py @ 0:ce46f2008024 draft default tip
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tools/tox_tools/baseline_calculator commit 008f820fb9b8ec547e00205f809f982b8f4b8318
| author | mbernt | 
|---|---|
| date | Tue, 09 Apr 2024 07:51:18 +0000 | 
| parents | |
| children | 
| rev | line source | 
|---|---|
| 
0
 
ce46f2008024
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tools/tox_tools/baseline_calculator commit 008f820fb9b8ec547e00205f809f982b8f4b8318
 
mbernt 
parents:  
diff
changeset
 | 
1 import argparse | 
| 
 
ce46f2008024
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tools/tox_tools/baseline_calculator commit 008f820fb9b8ec547e00205f809f982b8f4b8318
 
mbernt 
parents:  
diff
changeset
 | 
2 import re | 
| 
 
ce46f2008024
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tools/tox_tools/baseline_calculator commit 008f820fb9b8ec547e00205f809f982b8f4b8318
 
mbernt 
parents:  
diff
changeset
 | 
3 | 
| 
 
ce46f2008024
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tools/tox_tools/baseline_calculator commit 008f820fb9b8ec547e00205f809f982b8f4b8318
 
mbernt 
parents:  
diff
changeset
 | 
4 import pandas as pd | 
| 
 
ce46f2008024
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tools/tox_tools/baseline_calculator commit 008f820fb9b8ec547e00205f809f982b8f4b8318
 
mbernt 
parents:  
diff
changeset
 | 
5 | 
| 
 
ce46f2008024
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tools/tox_tools/baseline_calculator commit 008f820fb9b8ec547e00205f809f982b8f4b8318
 
mbernt 
parents:  
diff
changeset
 | 
6 parser = argparse.ArgumentParser(description='Calculate baseline toxicity for different aquatic species') | 
| 
 
ce46f2008024
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tools/tox_tools/baseline_calculator commit 008f820fb9b8ec547e00205f809f982b8f4b8318
 
mbernt 
parents:  
diff
changeset
 | 
7 parser.add_argument('--function', type=str, choices=['calculate_baseline', 'apply_linear_functions'], | 
| 
 
ce46f2008024
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tools/tox_tools/baseline_calculator commit 008f820fb9b8ec547e00205f809f982b8f4b8318
 
mbernt 
parents:  
diff
changeset
 | 
8 help='Function to execute') | 
| 
 
ce46f2008024
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tools/tox_tools/baseline_calculator commit 008f820fb9b8ec547e00205f809f982b8f4b8318
 
mbernt 
parents:  
diff
changeset
 | 
9 parser.add_argument('--csv_input', type=argparse.FileType('r'), help='Path to the input csv file') | 
| 
 
ce46f2008024
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tools/tox_tools/baseline_calculator commit 008f820fb9b8ec547e00205f809f982b8f4b8318
 
mbernt 
parents:  
diff
changeset
 | 
10 parser.add_argument('--functions_csv', type=argparse.FileType('r'), default=None, | 
| 
 
ce46f2008024
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tools/tox_tools/baseline_calculator commit 008f820fb9b8ec547e00205f809f982b8f4b8318
 
mbernt 
parents:  
diff
changeset
 | 
11 help='Path to the csv file containing functions (only for apply_linear_functions)') | 
| 
 
ce46f2008024
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tools/tox_tools/baseline_calculator commit 008f820fb9b8ec547e00205f809f982b8f4b8318
 
mbernt 
parents:  
diff
changeset
 | 
12 parser.add_argument('--output', type=argparse.FileType('w'), help='Path for the output csv file') | 
| 
 
ce46f2008024
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tools/tox_tools/baseline_calculator commit 008f820fb9b8ec547e00205f809f982b8f4b8318
 
mbernt 
parents:  
diff
changeset
 | 
13 args = parser.parse_args() | 
| 
 
ce46f2008024
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tools/tox_tools/baseline_calculator commit 008f820fb9b8ec547e00205f809f982b8f4b8318
 
mbernt 
parents:  
diff
changeset
 | 
14 | 
| 
 
ce46f2008024
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tools/tox_tools/baseline_calculator commit 008f820fb9b8ec547e00205f809f982b8f4b8318
 
mbernt 
parents:  
diff
changeset
 | 
15 if args.function == 'calculate_baseline': | 
| 
 
ce46f2008024
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tools/tox_tools/baseline_calculator commit 008f820fb9b8ec547e00205f809f982b8f4b8318
 
mbernt 
parents:  
diff
changeset
 | 
16 df = pd.read_csv(args.csv_input) | 
| 
 
ce46f2008024
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tools/tox_tools/baseline_calculator commit 008f820fb9b8ec547e00205f809f982b8f4b8318
 
mbernt 
parents:  
diff
changeset
 | 
17 df.iloc[:, 0] = df.iloc[:, 0].astype(int) | 
| 
 
ce46f2008024
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tools/tox_tools/baseline_calculator commit 008f820fb9b8ec547e00205f809f982b8f4b8318
 
mbernt 
parents:  
diff
changeset
 | 
18 df['Caenorhabditis elegans [mol/L]'] = 10 ** (-(0.81 * df.iloc[:, 0] + 1.15)) | 
| 
 
ce46f2008024
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tools/tox_tools/baseline_calculator commit 008f820fb9b8ec547e00205f809f982b8f4b8318
 
mbernt 
parents:  
diff
changeset
 | 
19 df['Daphia magna [mol/L]'] = 10 ** (-(0.82 * df.iloc[:, 0] + 1.48)) | 
| 
 
ce46f2008024
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tools/tox_tools/baseline_calculator commit 008f820fb9b8ec547e00205f809f982b8f4b8318
 
mbernt 
parents:  
diff
changeset
 | 
20 df['Danio rerio [mol/L]'] = 10 ** (-(0.99 * df.iloc[:, 0] + 0.78)) | 
| 
 
ce46f2008024
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tools/tox_tools/baseline_calculator commit 008f820fb9b8ec547e00205f809f982b8f4b8318
 
mbernt 
parents:  
diff
changeset
 | 
21 df['Generic Human Cells [mol/L]'] = 0.026 / (10 ** df.iloc[:, 0]) * (1 + 10 ** (0.7 * df.iloc[:, 0] + 0.34) * 3 * 0.001 + 10 ** 3 * 0.07 * 0.001) | 
| 
 
ce46f2008024
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tools/tox_tools/baseline_calculator commit 008f820fb9b8ec547e00205f809f982b8f4b8318
 
mbernt 
parents:  
diff
changeset
 | 
22 df.to_csv(args.output, index=False) | 
| 
 
ce46f2008024
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tools/tox_tools/baseline_calculator commit 008f820fb9b8ec547e00205f809f982b8f4b8318
 
mbernt 
parents:  
diff
changeset
 | 
23 | 
| 
 
ce46f2008024
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tools/tox_tools/baseline_calculator commit 008f820fb9b8ec547e00205f809f982b8f4b8318
 
mbernt 
parents:  
diff
changeset
 | 
24 elif args.function == 'apply_linear_functions': | 
| 
 
ce46f2008024
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tools/tox_tools/baseline_calculator commit 008f820fb9b8ec547e00205f809f982b8f4b8318
 
mbernt 
parents:  
diff
changeset
 | 
25 df = pd.read_csv(args.csv_input) | 
| 
 
ce46f2008024
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tools/tox_tools/baseline_calculator commit 008f820fb9b8ec547e00205f809f982b8f4b8318
 
mbernt 
parents:  
diff
changeset
 | 
26 functions_df = pd.read_csv(args.functions_csv) | 
| 
 
ce46f2008024
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tools/tox_tools/baseline_calculator commit 008f820fb9b8ec547e00205f809f982b8f4b8318
 
mbernt 
parents:  
diff
changeset
 | 
27 | 
| 
 
ce46f2008024
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tools/tox_tools/baseline_calculator commit 008f820fb9b8ec547e00205f809f982b8f4b8318
 
mbernt 
parents:  
diff
changeset
 | 
28 def parse_and_apply_equation(equation, x_values): | 
| 
 
ce46f2008024
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tools/tox_tools/baseline_calculator commit 008f820fb9b8ec547e00205f809f982b8f4b8318
 
mbernt 
parents:  
diff
changeset
 | 
29 # Extract 'a' and 'b' from the equation (assuming the format 'ax+b' or 'ax-b') | 
| 
 
ce46f2008024
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tools/tox_tools/baseline_calculator commit 008f820fb9b8ec547e00205f809f982b8f4b8318
 
mbernt 
parents:  
diff
changeset
 | 
30 pattern = re.compile(r'([+-]?\d*\.?\d*)x([+-]\d+)?') | 
| 
 
ce46f2008024
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tools/tox_tools/baseline_calculator commit 008f820fb9b8ec547e00205f809f982b8f4b8318
 
mbernt 
parents:  
diff
changeset
 | 
31 match = pattern.search(equation) | 
| 
 
ce46f2008024
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tools/tox_tools/baseline_calculator commit 008f820fb9b8ec547e00205f809f982b8f4b8318
 
mbernt 
parents:  
diff
changeset
 | 
32 a = float(match.group(1)) if match.group(1) not in ('', '+', '-') else 1.0 | 
| 
 
ce46f2008024
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tools/tox_tools/baseline_calculator commit 008f820fb9b8ec547e00205f809f982b8f4b8318
 
mbernt 
parents:  
diff
changeset
 | 
33 b = float(match.group(2)) if match.group(2) else 0 | 
| 
 
ce46f2008024
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tools/tox_tools/baseline_calculator commit 008f820fb9b8ec547e00205f809f982b8f4b8318
 
mbernt 
parents:  
diff
changeset
 | 
34 return a * x_values + b | 
| 
 
ce46f2008024
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tools/tox_tools/baseline_calculator commit 008f820fb9b8ec547e00205f809f982b8f4b8318
 
mbernt 
parents:  
diff
changeset
 | 
35 | 
| 
 
ce46f2008024
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tools/tox_tools/baseline_calculator commit 008f820fb9b8ec547e00205f809f982b8f4b8318
 
mbernt 
parents:  
diff
changeset
 | 
36 for i, row in functions_df.iterrows(): | 
| 
 
ce46f2008024
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tools/tox_tools/baseline_calculator commit 008f820fb9b8ec547e00205f809f982b8f4b8318
 
mbernt 
parents:  
diff
changeset
 | 
37 func = row['function'] | 
| 
 
ce46f2008024
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tools/tox_tools/baseline_calculator commit 008f820fb9b8ec547e00205f809f982b8f4b8318
 
mbernt 
parents:  
diff
changeset
 | 
38 df[f'result_{i}'] = parse_and_apply_equation(func, df['logD']) | 
| 
 
ce46f2008024
planemo upload for repository https://github.com/bernt-matthias/mb-galaxy-tools/tools/tox_tools/baseline_calculator commit 008f820fb9b8ec547e00205f809f982b8f4b8318
 
mbernt 
parents:  
diff
changeset
 | 
39 df.to_csv(args.output, index=False) | 
