Importing Package

We import the package mineralML in Python.

import mineralML as mm

Importing Data

We walk through an implementation of mineralML here. Create this following file structure locally:

mineralML/
├── Chemistry.csv
└── mineralML_neuralnetwork.py

The following columns are required for this Chemistry file:

  • Sample or Sample Name

  • SiO₂

  • TiO₂

  • Al₂O₃

  • FeOₜ

  • MnO

  • MgO

  • CaO

  • Na₂O

  • K₂O

  • Cr₂O₃

  • P₂O₅

For example, here an example containing the mineral composition data in the desired input format. You can use the ChemistryTemplate.csv from the Training_Data bit of the GitHub repository to create your own. For oxides that were not analyzed or not detected, enter 0 into the cell or alternatively mineralML will fill in these empty cells with 0 values when you use the function mm.prep_df.

Sample Name

SiO2

TiO2

Al2O3

FeOt

MnO

MgO

CaO

Na2O

K2O

P2O5

Cr2O3

Mineral

0

Z2099

42.96

1.8

14.33

4.07

0.07

17.39

12.03

3.1

0.03

nan

0.65

Amphibole

3172

SG-09-32_12

0.17

nan

nan

0.7

nan

0.13

54.32

nan

nan

40.97

nan

Apatite

4907

IgnA-2

36.9

2.31

16.4

8.2

0.08

20.6

0.03

0.71

8.79

nan

0.09

Biotite

8137

REG55-calcite-1

0

0

0

0.07

0.0457

0.0526

57.0312

0.0046

0.0216

nan

0.1757

Carbonate

9148

zk803-31-01-01

29.41

0.03

18.6

33.22

0.08

6.7

0.1

0.03

0.26

nan

nan

Chlorite

10473

17MMSG37_cpx4-1

46.8911

2.8722

6.5948

8.4685

0.1886

13.884

20.2569

0.3403

nan

nan

0.0908

Pyroxene (Cpx)

21383

CL09MB009 C2 ep 20

37.38

0.01

21.29

15.3507

0.29

0.06

23.19

0

0

nan

nan

Epidote

22647

Lw-Ec_GR1_core

38.52

0.04

21.84

27.07

1.49

5.58

5.82

0.03

0

nan

0

Garnet

27666

REG-18_kalsilite-1

37.02

0

31.43

0.35

0

0

0

0.04

29.61

nan

0.0069

Kalsilite

28666

DG-44

65.0797

nan

18.8768

0

nan

nan

0.0664

2.4138

13.194

nan

nan

Feldspar (Alkali)

34677

VS219_129 / 1 . Leu

54.7008

0.113

23.0378

0.5208

0.0064

0.0493

nan

0.0205

21.7093

nan

nan

Leucite

39803

S80_7 / 2 .

41.0155

0.0521

5.6907

5.2198

0.131

6.6045

28.6936

3.7814

0.1842

nan

nan

Melilite

40939

WS5_37

44.8

0.24

35.12

0.269

0.04

3.22

0.16

0.15

10.57

nan

0

Muscovite

42090

10_N_1

42.033

nan

32.705

0

nan

nan

0.105

15.507

7.859

nan

nan

Nepheline

43110

CN_C_Ol1

39.846

2e-05

0.01915

17.3987

0.243865

43.1267

0.21963

0.01495

0.007775

0.013685

nan

Olivine

65125

L04_N1_1

56.08

0.2769

1.868

7.21

0.1732

34.17

0.517

nan

nan

nan

0.4681

Orthopyroxene

70895

K8_plag1_rtoc

46.6657

0.0297

32.4782

0.5769

0.0013

0.2178

16.8384

1.7939

0.0031

nan

nan

Plagioclase

25650

UC1250

0.0424

49.1927

0.0757

43.9452

1.6045

2.8229

0.0139

nan

nan

nan

0.0148

Rhombohedral-Oxide

90207

E2718C-1

0.0091

98.4337

0.0236

0.2144

0.0089

nan

nan

nan

nan

nan

0.1976

Rutile

91925

OM15-6

41.2574

nan

1.34979

4.38996

nan

39.5454

nan

nan

nan

nan

0.26425

Serpentine

89207

OM08-206A_2

99.7

0

0

0.3

0.03

0

0

0.01

0.02

nan

0

SiO2-Polymorph

36205

UC1080

0.16

16.572

0.941

74.515

0.565

0.851

0.037

nan

nan

nan

0.012

Spinel-Group

96256

REG-19-titanite-1

29.3211

33.0262

1.3941

2.90473

0.0339

0.076

26.5311

0.1435

0.0327

nan

0

Titanite

104307

Tourmaline1

36.47

0.82

30.79

4.13

nan

9.52

0.74

2.36

nan

nan

nan

Tourmaline

105329

Zrn-I

32.816

0.005

0

0.007

nan

nan

0

0.008

nan

0.027

nan

Zircon

106329

20B-04

49.96

1.59

13.73

11.8

0.21

7.27

11.88

2.27

0.25

0.18

nan

Glass

For the mineral composition, mineralML asks that users provide Fe as FeOt. To avoid ambiguity, the Chemistry file handles this by providing only one column for FeOt.

We use the os package in Python to facilitate navigation to various files. To load the Chemistry file, you must provide the path to the CSV.

path = os.getcwd() + '/Chemistry.csv'
df_load = mm.load_df(path)
df = mm.prep_df(df_load)

mm.load_df returns df_load, an initial dataframe of all of all samples and their chemistry. mm.prep_df then prepares the loaded dataframe by filling in any nan values, ensuring all required oxide columns are present, optionally converting all Fe to FeOt and dropping rows with fewer than n oxides.

Data Import Complete

That is all for loading your mineral chemical compositions! You are ready to get rolling with mineralML. See the example in ML Predictions for Tabular Data (mineralML_neuralnetwork.ipynb), under the big examples heading, to see how to run mineralML and export files.