This page was generated from docs/examples/parsing.ipynb. To start an interactive version: Binder badge

Parsing examples#

Some examples on parsing to and from supported formats. More info about all parsing methods can be found in the manual section.

Declare paths#

First, let's do all the necessary imports and generate the paths that we'll use for file import and export.

[1]:
%matplotlib inline

from pathlib import Path
import pygaps.parsing as pgp

# Get directory paths
base_path = Path.cwd() / 'data' / 'parsing'

# Find files
aif_file_paths = list((base_path / 'aif').rglob('*.aif'))
json_file_paths = list((base_path / 'json').rglob('*.json'))
xl_file_paths = list((base_path / 'excel').rglob('*.xls'))
csv_file_paths = list((base_path / 'csv').rglob('*.csv'))

Manufacturer import#

Many report files from various adsorption device manufacturers can be imported directly using pyGAPS. Here are some examples.

[2]:
cfld = base_path / "commercial"
dvssms = pgp.isotherm_from_commercial(cfld / "smsdvs" / "13X water 30c.xlsx", 'smsdvs', 'xlsx')
micromeritics = pgp.isotherm_from_commercial(cfld / "mic" / "Sample_C.xls", 'mic', 'xl')
belsorp_dat = pgp.isotherm_from_commercial(cfld / "bel" / "DUT-13-CH4-190K.DAT", 'bel', 'dat')
threeP_xl = pgp.isotherm_from_commercial(cfld / "3p" / "MOF_N2_77K.xlsx", '3p', 'xl')
quantachrome = pgp.isotherm_from_commercial(cfld / "qnt" / "DUT-6_N2_77K (Raw Analysis Data).txt", 'qnt', 'txt-raw')
Specified adsorbate is not in internal list (or name cannot be resolved to an existing one). Thermodynamic backend disabled for this gas/vapour.
No data collected for pressure_saturation in file c:\Users\pauli\git\pyGAPS\docs\examples\data\parsing\commercial\mic\Sample_C.xls.

AIF Parsing#

AIF Import#

Adsorption information files are fully supported in pyGAPS, both for import and exports. Isotherms can be imported from an .aif as:

[3]:
# Import all
isotherms = [pgp.isotherm_from_aif(path) for path in aif_file_paths]

# Display an example file
print(isotherms[1])
Material: DMOF
Adsorbate: ethane
Temperature: 298.15K
Units:
        Uptake in: cm3(STP)/g
        Pressure in: kPa
Other properties:
        user: single gas
        date: 2019-08-19T00:00:00
        instrument: BEL VC-05
        material_mass: 0.817
        material_batch: [Zn2(tm-bdc)2(dabco)]
        material_mass_unit: g

AIF Export#

Similarly, an isotherm can be exported as an AIF file or a string, depending on whether a path is passed. For this purpose use either the module pygaps.isotherm_to_aif() function or the convenience class function to_aif().

[4]:
# module function
for isotherm, path in zip(isotherms, aif_file_paths):
    pgp.isotherm_to_aif(isotherm, path)

# save to file with convenience function
isotherms[0].to_aif('isotherm.aif')

# string
isotherm_string = isotherms[0].to_aif()

JSON Parsing#

JSON Import#

Isotherms can be imported either from a json file or from a json string. The same function is used in both cases.

[5]:
# Import them
isotherms = [pgp.isotherm_from_json(path) for path in json_file_paths]

# Display an example file
print(isotherms[1])
Material: TEST
Adsorbate: n-butane
Temperature: 298.15K
Units:
        Uptake in: g/g
        Pressure in: bar
Other properties:
        iso_type: isotherm
        material_batch: TB

JSON Export#

Exporting to JSON can be done to a file or a string, depending on whether a path is passed. For this purpose use either the module pygaps.isotherm_to_json() function or the convenience class function to_json().

[6]:
# module function
for isotherm, path in zip(isotherms, json_file_paths):
    pgp.isotherm_to_json(isotherm, path, indent=4)

# save to file with convenience function
isotherms[0].to_json('isotherm.json')

# string
isotherm_string = isotherms[0].to_json()

Excel Parsing#

Excel does not have to be installed on the system in use.

Excel Import#

[7]:
# Import them
isotherms = [pgp.isotherm_from_xl(path) for path in xl_file_paths]

# Display an example file
print(isotherms[1])
Material: MCM-41
Adsorbate: nitrogen
Temperature: 77.0K
Units:
        Uptake in: mmol/g
        Pressure in: bar
Other properties:
        comment: None
        date: None
        lab: MADIREL
        instrument: Triflex
        project: None
        activation_temperature: 150.0
        user: PI
        iso_type: Isotherme
        material_batch: Test

[8]:
isotherms[1].plot()
../_images/examples_parsing_14_0.png

Excel Export#

[9]:
# Export each isotherm in turn
for isotherm, path in zip(isotherms, xl_file_paths):
    pgp.isotherm_to_xl(isotherm, path)

# save to file with convenience function
isotherms[0].to_xl('isotherm.xls')

CSV Parsing#

CSV Import#

Like JSON, isotherms can be imported either from a CSV file or from a CSV string. The same function is used in both cases.

[10]:
# Import them
isotherms = [pgp.isotherm_from_csv(path) for path in csv_file_paths]

# Display an example file
print(isotherms[0])
Material: HKUST-1(Cu)
Adsorbate: carbon dioxide
Temperature: 303.0K
Units:
        Uptake in: mmol/g
        Pressure in: bar
Other properties:
        material_batch: Test
        iso_type: Calorimetrie
        user: ADW
        machine: CV
        date: 21/05/2010 00:00
        activation_temperature: 150.0
        lab: MADIREL

CSV Export#

[11]:
# Export each isotherm in turn
for isotherm, path in zip(isotherms, csv_file_paths):
    pgp.isotherm_to_csv(isotherm, path)

# save to file with convenience function
isotherms[0].to_csv('isotherm.csv')

# string representation
isotherm_string = isotherms[0].to_csv()