annotate pipeline_source_classes.py @ 0:a35056104c2c draft default tip

planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
author astroteam
date Fri, 13 Jun 2025 13:26:36 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
1 import pandas as pd
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
2 import re
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
3
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
4
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
5 def rule_based_class_detector(simbad_node_file, text_id_text):
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
6 df = pd.read_csv(simbad_node_file)
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
7 pattern_list = list(df["Description"].values)
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
8
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
9 classes = []
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
10
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
11 for pattern in pattern_list:
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
12 for m in re.finditer(f"\\b{pattern.lower()}\\b", text_id_text):
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
13 source_ = m.group(0)
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
14 classes.append(source_)
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
15
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
16 return classes
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
17
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
18
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
19 def source_class(df_in, simbad_node_file):
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
20 out_class_list = []
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
21 if len(df_in) > 0:
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
22 df_dict = pd.read_csv(simbad_node_file)
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
23
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
24 class_list = []
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
25
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
26 otypes_ = df_in["OTYPE"].values
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
27 for otypes in otypes_:
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
28 if otypes is not None:
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
29 for otype in set(otypes.split("|")):
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
30 class_list.append(otype)
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
31
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
32 for otype in set(class_list):
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
33 if "?" in otype:
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
34 out_class_list.append(otype)
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
35 classes = df_dict["Description"][df_dict["Id"] == otype].values
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
36 if len(classes) != 0:
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
37 out_class_list.append(classes[0])
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
38
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
39 return out_class_list
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
40
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
41
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
42 def detect_source_classes(text_id, text_id_text, df_sources, simbad_node_file):
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
43 classes_1 = rule_based_class_detector(simbad_node_file, text_id_text.lower())
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
44 classes_2 = source_class(df_sources, simbad_node_file)
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
45 classes = classes_1 + classes_2
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
46
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
47 if len(classes) != 0:
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
48 out_classes = list(set(classes))
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
49
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
50 dict_data = {"TEXT_ID": [text_id] * len(out_classes), "Source Classes": out_classes}
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
51 df_data = pd.DataFrame(dict_data)
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
52 return df_data
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
53
a35056104c2c planemo upload for repository https://github.com/esg-epfl-apc/tools-astro/tree/main/tools commit da42ae0d18f550dec7f6d7e29d297e7cf1909df2
astroteam
parents:
diff changeset
54 return pd.DataFrame()