-
Notifications
You must be signed in to change notification settings - Fork 34
Expand file tree
/
Copy pathidentifier.rs
More file actions
103 lines (91 loc) · 2.51 KB
/
Copy pathidentifier.rs
File metadata and controls
103 lines (91 loc) · 2.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
use feos_core::parameter::{Identifier, IdentifierOption};
use pyo3::prelude::*;
use serde::{Deserialize, Serialize};
/// Identifier to match on while reading parameters from files.
#[pyclass(name = "IdentifierOption", eq, eq_int)]
#[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq)]
pub enum PyIdentifierOption {
Cas,
Name,
IupacName,
Smiles,
Inchi,
Formula,
}
impl From<IdentifierOption> for PyIdentifierOption {
fn from(value: IdentifierOption) -> Self {
use IdentifierOption::*;
match value {
Cas => Self::Cas,
Name => Self::Name,
IupacName => Self::IupacName,
Smiles => Self::Smiles,
Inchi => Self::Inchi,
Formula => Self::Formula,
}
}
}
impl From<PyIdentifierOption> for IdentifierOption {
fn from(value: PyIdentifierOption) -> Self {
use PyIdentifierOption::*;
match value {
Cas => Self::Cas,
Name => Self::Name,
IupacName => Self::IupacName,
Smiles => Self::Smiles,
Inchi => Self::Inchi,
Formula => Self::Formula,
}
}
}
/// Different common identifiers for chemicals.
#[pyclass(name = "Identifier")]
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PyIdentifier(pub Identifier);
#[pymethods]
impl PyIdentifier {
#[new]
#[pyo3(
text_signature = "(cas=None, name=None, iupac_name=None, smiles=None, inchi=None, formula=None)",
signature = (cas=None, name=None, iupac_name=None, smiles=None, inchi=None, formula=None)
)]
fn py_new(
cas: Option<&str>,
name: Option<&str>,
iupac_name: Option<&str>,
smiles: Option<&str>,
inchi: Option<&str>,
formula: Option<&str>,
) -> Self {
Self(Identifier::new(
cas, name, iupac_name, smiles, inchi, formula,
))
}
#[getter]
fn get_cas(&self) -> Option<String> {
self.0.cas.clone()
}
#[getter]
fn get_name(&self) -> Option<String> {
self.0.name.clone()
}
#[getter]
fn get_iupac_name(&self) -> Option<String> {
self.0.iupac_name.clone()
}
#[getter]
fn get_smiles(&self) -> Option<String> {
self.0.smiles.clone()
}
#[getter]
fn get_inchi(&self) -> Option<String> {
self.0.inchi.clone()
}
#[getter]
fn get_formula(&self) -> Option<String> {
self.0.formula.clone()
}
fn __repr__(&self) -> String {
self.0.to_string()
}
}