Mercurial > repos > siwaa > carboseq_s
comparison csopraSplitInput.py @ 5:3e7978af2ba2 draft
"planemo upload for repository https://forgemia.inra.fr/carboseq/record-projet-carboseq/-/tree/5f761ea7dab0a6f8c978cbbe4946e16edc6d032e/toos/CarboSeqSimulator commit 5f761ea7dab0a6f8c978cbbe4946e16edc6d032e-dirty"
author | siwaa |
---|---|
date | Wed, 28 Aug 2024 14:53:30 +0000 |
parents | |
children | 20886bc40659 |
comparison
equal
deleted
inserted
replaced
4:a069fc43b0b1 | 5:3e7978af2ba2 |
---|---|
1 import pandas as pd | |
2 import os | |
3 import shutil | |
4 import math | |
5 import sys | |
6 | |
7 def split_csv(input_folder, output_folder, max_chunck_size): | |
8 unit_path = input_folder + "/units.csv" | |
9 soil_path = input_folder + "/soil.csv" | |
10 crop_path = input_folder + "/crop.csv" | |
11 | |
12 os.mkdir(output_folder) | |
13 | |
14 dfs = pd.read_csv(soil_path) | |
15 dfc = pd.read_csv(crop_path) | |
16 | |
17 max_ID = dfs.loc[dfs['ID'].idxmax()]['ID'] | |
18 | |
19 step = max_chunck_size | |
20 | |
21 nb_split = math.ceil(max_ID / max_chunck_size) | |
22 | |
23 print(max_ID) | |
24 | |
25 print(nb_split) | |
26 | |
27 for i in range(1,nb_split + 1): | |
28 | |
29 dfSplit = pd.DataFrame() | |
30 dfSplit = dfs.loc[((dfs['ID'] >= (((i-1) * step)) + 1) & (dfs['ID'] <= ((((i-1) * step)) + step )))] | |
31 | |
32 dfcSplit = pd.DataFrame() | |
33 dfcSplit = dfc.loc[((dfc['ID'] >= (((i-1) * step)) + 1) & (dfc['ID'] <= ((((i-1) * step)) + step )))] | |
34 | |
35 os.mkdir(os.path.join(output_folder, f"{input_folder}_{i}")) | |
36 shutil.copy(unit_path, os.path.join(output_folder, f"{input_folder}_{i}")) | |
37 dfSplit.to_csv(os.path.join(output_folder, f"{input_folder}_{i}", "soil.csv"), index=False) | |
38 dfcSplit.to_csv(os.path.join(output_folder, f"{input_folder}_{i}", "crop.csv"), index=False) | |
39 shutil.make_archive( os.path.join(output_folder,f"{input_folder}_{i}"), 'zip', os.path.join(output_folder, f"{input_folder}_{i}")) | |
40 | |
41 # Example usage | |
42 input_folder = "input" | |
43 output_folder = "outputs" | |
44 | |
45 input_file = sys.argv[1] | |
46 max_chunck_size = int(sys.argv[2]) | |
47 | |
48 shutil.unpack_archive(input_file, input_folder, 'zip') | |
49 | |
50 split_csv(input_folder, output_folder, max_chunck_size) |