ROUGH DRAFT authorea.com/111541
Main Data History
Export
Show Index Toggle 0 comments
  •  Quick Edit
  • PyChemiaMaster Database

    Notes

    Steps to access the database and make queries:

    • ipython <enter>

      • import pychemia <enter>

      • pcdb=pychemia.db.PyChemiaDB(‘PyChemiaMasterDB’) <enter> ## to create and object of the Master database

      • pcdb.entries.count()
        ## gives the total number of entries in the database
        Out[3]: 319465

      • pcdb.entries.find_one() ## This finds one entry from the database
        Out[4]: Here, {} may not appear at some places in the output below...
        u’_id’: ObjectId(’56732c11b1df416eda4f901e’),
        u’properties’: u’blocks’: [u’f’],
        u’bravais’: u’angles’: [90.0, 90.0, 120.00000000000001],
        u’lengths’: [4.000801927465354, 4.000801927465354, 29.138496000000004]
        ,
        u’oqmd’: u’band_gap’: 0.0,
        u’calculation_id’: 3023,
        u’energy’: -12.30815317,
        u’energy_pa’: -4.10271772333333,
        u’entry_id’: 1514,
        u’settings’: u’algo’: u’fast’,
        u’ediff’: 0.0001,
        u’encut’: 520.0,
        u’epsilon’: 1.0,
        u’ibrion’: -1,
        u’idipol’: 0,
        u’isif’: 2,
        u’ismear’: -5,
        u’ispin’: 2,
        u’istart’: 0,
        u’lcharg’: True,
        u’ldipol’: False,
        u’lorbit’: 11,
        u’lreal’: False,
        u’lvtot’: True,
        u’lwave’: False,
        u’nbands’: 28,
        u’nelm’: 60,
        u’nelmin’: 5,
        u’nsw’: 0,
        u’potentials’: [u’name’: u’Ac’,
        u’paw’: True,
        u’us’: False,
        u’xc’: u’PBE’
        ],
        u’potim’: 0.5,
        u’prec’: u’med’,
        u’pstress’: 0.0,
        u’sigma’: 0.2
        ,
        u’spacegroup_number’: 166,
        u’structure_id’: 38386
        ,
        u’spacegroup’: u’crystal_system’: u’Trigonal’, u’number’: 166,
        u’spacegroup_number’: u’symprec’: 0.001, u’value’: 166
        ,
        u’status’: u’refined’: True,
        u’structure’: u’cell’: [[2.000400963732677, 1.154932034898248, 9.712832],
        [-2.000400963732677, 1.154932034898248, 9.712832],
        [0.0, -2.309864069796496, 9.712832]],
        u’density’: 5.124818399581233,
        u’formula’: u’Ac’,
        u’natom’: 3,
        u’nspecies’: 1,
        u’periodicity’: [True, True, True],
        u’positions’: [[2.000400963732676, 1.1549320348982473, 9.712832],
        [-5.551115123125783e-17, -1.1102230246251565e-16, 6.485522000000003],
        [0.0, -8.881784197001252e-16, 22.652974000000004]],
        u’reduced’: [[0.9999999999999997,
        1.4802973661668753e-16,
        1.4802973661668753e-16],
        [0.22257572937189352, 0.22257572937189354, 0.22257572937189363],
        [0.7774242706281065, 0.7774242706281065, 0.7774242706281068]],
        u’symbols’: [u’Ac’, u’Ac’, u’Ac’]

      • pcdb.entries.find({‘structure.nspecies’: 3}) <enter> ## returns a dictionary containing list of ternary compounds

      • pcdb.entries.find({‘structure.nspecies’: 3}).count() <enter> ## returns total number of ternary compounds
        236200

      • pcdb.entries.find({‘structure.nspecies’: 3, ‘properties.spacegroup.number’: 135}).count() <enter> ## returns total number of ternary compounds with 135 space group
        18

      to print all 18 ternary compounds with 135 space group

      • for x in pcdb.entries.find({’structure.nspecies’: 3, ’properties.spacegroup.number’: 135}):
        ....: print x[’structure’][’formula’]
        ....: print x[’properties’][’spacegroup’]

        MgO4Sb2
        u’crystal_system’: u’Tetragonal’, u’number’: 135
        FeO4Sb2
        u’crystal_system’: u’Tetragonal’, u’number’: 135
        As2CuO4
        u’crystal_system’: u’Tetragonal’, u’number’: 135
        O4Sb2Zn
        u’crystal_system’: u’Tetragonal’, u’number’: 135
        MnO4Sb2
        u’crystal_system’: u’Tetragonal’, u’number’: 135
        NiO4Sb2
        u’crystal_system’: u’Tetragonal’, u’number’: 135
        B2CY
        u’crystal_system’: u’Tetragonal’, u’number’: 135
        B2CHo
        u’crystal_system’: u’Tetragonal’, u’number’: 135
        ....
        ....
        ....
        and list goes on.........

      • pcdb.entries.find({’structure.nspecies’: 3, ’properties.spacegroup.number’: {’\(in': [130, 135]\)}}).count() ## Uses the OR operation to find count of all ternary structures with having either 135 or 130 space group symmetry.
        OUTPUT: 34

      Find all compounds having more than 2 elements and with space group 130 or 135.

      • In [23]: for x in pcdb.entries.find({’structure.nspecies’: {’\(gt': 2\}, 'properties.spacegroup.number': \{'\)in’: [130, 135]}}, {’structure.formula’: 1, ’_id’: 0
        print x
        u’structure’: u’formula’: u’F7Li3Th’
        u’structure’: u’formula’: u’MgO4Sb2’
        u’structure’: u’formula’: u’IK3O5’
        u’structure’: u’formula’: u’FeO4Sb2’
        u’structure’: u’formula’: u’BeF5K3’
        u’structure’: u’formula’: u’Bi2CuO4’
        u’structure’: u’formula’: u’As2CuO4’
        u’structure’: u’formula’: u’O5SiSr3’
        u’structure’: u’formula’: u’O4Sb2Zn’
        u’structure’: u’formula’: u’MnO4Sb2’
        u’structure’: u’formula’: u’NiO4Sb2’
        u’structure’: u’formula’: u’B2CY’
        u’structure’: u’formula’: u’B2CHo’
        u’structure’: u’formula’: u’B2CTm’
        .......
        .......
        .......

      List the compounds having more than 2 elements and containing ’Bi’ OR ’O’ atoms and with space group 130 or 135... also don’t show the ObjectID in the list... (basically, we set the projection of ’_id’ to ZERO)

      • for x in pcdb.entries.find({’structure.nspecies’: {’$gt’: 2}, ’structure.symbols’: {’$in’: [’Bi’, ’O’]}, ’properties.spacegroup.number’: {’$in’: [130, 135]}}, {’structure.formula’: 1, ’_id’: 0}):
        print x

        OUTPUT:
        u’structure’: u’formula’: u’MgO4Sb2’
        u’structure’: u’formula’: u’IK3O5’
        u’structure’: u’formula’: u’FeO4Sb2’
        u’structure’: u’formula’: u’Bi2CuO4’
        u’structure’: u’formula’: u’As2CuO4’
        u’structure’: u’formula’: u’O5SiSr3’
        u’structure’: u’formula’: u’O4Sb2Zn’
        u’structure’: u’formula’: u’MnO4Sb2’
        u’structure’: u’formula’: u’NiO4Sb2’
        u’structure’: u’formula’: u’AuBi2O5’
        u’structure’: u’formula’: u’O4Sn2Ti’
        u’structure’: u’formula’: u’Bi2O4Pd’
        u’structure’: u’formula’: u’O5PV’

      List the compounds having more than 2 elements and containing ’Bi’ AND ’O’ atoms and with space group 130 or 135... also don’t show the ObjectID in the list... (basically, we set the projection of ’_id’ to ZERO)

      • for x in pcdb.entries.find({’structure.nspecies’: ’$gt’: 2, ’$and’: [{’structure.symbols’: ’Bi’}, {’structure.symbols’: ’O’}], ’properties.spacegroup.number’: {’$in’: [130, 135]}}, {’structure.formula’: 1, ’_id’: 0}):
        print x

        OUTPUT:
        u’structure’: u’formula’: u’Bi2CuO4’
        u’structure’: u’formula’: u’AuBi2O5’
        u’structure’: u’formula’: u’Bi2O4Pd’

      List the compounds having more than 2 elements and containing ’Bi’ AND ’O’ atoms and with space group 130 or 135 or 221... also don’t show the ObjectID in the list... (basically, we set the projection of ’_id’ to ZERO)

      • for x in pcdb.entries.find({’structure.nspecies’: {’$gt’: 2}, ’$and’: [{’structure.symbols’: ’Bi’}, {’structure.symbols’: ’O’}], ’properties.spacegroup.number’: {’$in’: [130, 135, 221]}}, {’structure.formula’: 1, ’_id’: 0}):
        print x

        OUTPUT:
        u’structure’: u’formula’: u’Bi2CuO4’
        u’structure’: u’formula’: u’AuBi2O5’
        u’structure’: u’formula’: u’AlBiO3’
        u’structure’: u’formula’: u’BiGaO3’
        u’structure’: u’formula’: u’BiInO3’
        u’structure’: u’formula’: u’BiO3Sc’
        u’structure’: u’formula’: u’BiLi8O3’
        u’structure’: u’formula’: u’BiNa8O3’
        u’structure’: u’formula’: u’BiK8O3’
        u’structure’: u’formula’: u’BiO3Rb8’
        u’structure’: u’formula’: u’Bi2O4Pd’
        u’structure’: u’formula’: u’BiHgO3’
        ......
        ......
        ..... and many more ....


      • Find the total number of ternary structures having ’Co’ and ’O’ elements:–
        pcdb.entries.find(śtructure.nspecies: 3, $and: [śtructure.symbols: Ćo', śtructure.symbols: Ó']).count()
        Out[10]: 489






      Select a desired structure from the database and CREATE its POSCAR:–


      1. Get the Object ID of that structure.

      2. import bson

      3. use PyChemia to create POSCAR.



      follow the below steps to create poscar

      • for x in pcdb.entries.find({’structure.nspecies’: ’$gt’: 2}, ’$and’: [{’structure.symbols’: ’Bi’}, {’structure.symbols’: ’O’}], ’properties.spacegroup.number’: {’$in’: [130, 135]}}, {’structure.formula’: 1, ’_id’: 1}):
        print x ## here I am printing the ObjectID of structures
        OUTPUT:
        u’_id’: ObjectId(’56732c7ab1df416eda4f96b6’), u’structure’: u’formula’: u’Bi2CuO4’
        u’_id’: ObjectId(’56732efbb1df416eda4fbd8e’), u’structure’: u’formula’: u’AuBi2O5’
        u’_id’: ObjectId(’567330beb1df416eda4fdb47’), u’structure’: u’formula’: u’Bi2O4Pd’

      • import bson

      • bson.ObjectId(’56732c7ab1df416eda4f96b6’)

      • st=bson.ObjectId(’56732c7ab1df416eda4f96b6’)

      • ids=bson.ObjectId(’56732c7ab1df416eda4f96b6’)

      • pcdb.get_structure(ids)

        OUTPUT:–
        Out[39]: Structure(symbols=[u’Bi’, u’Bi’, u’Bi’, u’Bi’, u’Bi’, u’Bi’, u’Bi’, u’Bi’, u’Cu’, u’Cu’, u’Cu’, u’Cu’, u’O’, u’O’, u’O’, u’O’, u’O’, u’O’, u’O’, u’O’, u’O’, u’O’, u’O’, u’O’, u’O’, u’O’, u’O’, u’O’], cell=[8.12668366, 8.12668366, 5.471898352], positions=[[1.2499309150000046, 1.2499309150000046, 1.367974588], [6.876752744999995, 6.876752744999995, 1.367974588], [5.313272745000004, 2.813410914999995, 1.367974588], [2.813410914999995, 5.313272745000004, 1.367974588], [2.813410914999995, 2.813410914999995, 4.103923764], [5.313272745000004, 5.313272745000004, 4.103923764], [6.876752744999995, 1.2499309150000046, 4.103923764], [1.2499309150000046, 6.876752744999995, 4.103923764], [0.0, 4.06334183, 0.43821000000000004], [4.06334183, 0.0, 2.297739176], [4.06334183, 0.0, 5.033688352], [0.0, 4.06334183, 3.1741591760000003], [2.3658200000000003, 0.817711830000006, 4.905409999999998], [5.760863659999999, 7.308971829999994, 4.905409999999998], [6.42916183, 3.245629999999994, 3.3024375280000022], [1.6975218299999995, 4.881053660000005, 3.3024375280000022], [7.308971829999994, 5.760863659999999, 3.3024375280000022], [0.817711830000006, 2.3658200000000003, 3.3024375280000022], [4.881053660000005, 1.6975218299999995, 4.905409999999998], [3.245629999999994, 6.42916183, 4.905409999999998], [1.6975218299999995, 3.245629999999994, 0.5664883520000021], [6.42916183, 4.881053660000005, 0.5664883520000021], [5.760863659999999, 0.817711830000006, 2.169460823999998], [2.3658200000000003, 7.308971829999994, 2.169460823999998], [4.881053660000005, 6.42916183, 2.169460823999998], [3.245629999999994, 1.6975218299999995, 2.169460823999998], [7.308971829999994, 2.3658200000000003, 0.5664883520000021], [0.817711830000006, 5.760863659999999, 0.5664883520000021]], periodicity=True)


      • st=pcdb.get_structure(ids)

      • print st

        28

        Symb ( Positions ) [ Cell-reduced coordinates ]
        Bi ( 1.2499 1.2499 1.3680 ) [ 0.1538 0.1538 0.2500 ]
        Bi ( 6.8768 6.8768 1.3680 ) [ 0.8462 0.8462 0.2500 ]
        Bi ( 5.3133 2.8134 1.3680 ) [ 0.6538 0.3462 0.2500 ]
        Bi ( 2.8134 5.3133 1.3680 ) [ 0.3462 0.6538 0.2500 ]
        Bi ( 2.8134 2.8134 4.1039 ) [ 0.3462 0.3462 0.7500 ]
        Bi ( 5.3133 5.3133 4.1039 ) [ 0.6538 0.6538 0.7500 ]
        Bi ( 6.8768 1.2499 4.1039 ) [ 0.8462 0.1538 0.7500 ]
        Bi ( 1.2499 6.8768 4.1039 ) [ 0.1538 0.8462 0.7500 ]
        Cu ( 0.0000 4.0633 0.4382 ) [ 0.0000 0.5000 0.0801 ]
        Cu ( 4.0633 0.0000 2.2977 ) [ 0.5000 0.0000 0.4199 ]
        Cu ( 4.0633 0.0000 5.0337 ) [ 0.5000 0.0000 0.9199 ]
        Cu ( 0.0000 4.0633 3.1742 ) [ 0.0000 0.5000 0.5801 ]
        O ( 2.3658 0.8177 4.9054 ) [ 0.2911 0.1006 0.8965 ]
        O ( 5.7609 7.3090 4.9054 ) [ 0.7089 0.8994 0.8965 ]
        O ( 6.4292 3.2456 3.3024 ) [ 0.7911 0.3994 0.6035 ]
        O ( 1.6975 4.8811 3.3024 ) [ 0.2089 0.6006 0.6035 ]
        O ( 7.3090 5.7609 3.3024 ) [ 0.8994 0.7089 0.6035 ]
        O ( 0.8177 2.3658 3.3024 ) [ 0.1006 0.2911 0.6035 ]
        O ( 4.8811 1.6975 4.9054 ) [ 0.6006 0.2089 0.8965 ]
        O ( 3.2456 6.4292 4.9054 ) [ 0.3994 0.7911 0.8965 ]
        O ( 1.6975 3.2456 0.5665 ) [ 0.2089 0.3994 0.1035 ]
        O ( 6.4292 4.8811 0.5665 ) [ 0.7911 0.6006 0.1035 ]
        O ( 5.7609 0.8177 2.1695 ) [ 0.7089 0.1006 0.3965 ]
        O ( 2.3658 7.3090 2.1695 ) [ 0.2911 0.8994 0.3965 ]
        O ( 4.8811 6.4292 2.1695 ) [ 0.6006 0.7911 0.3965 ]
        O ( 3.2456 1.6975 2.1695 ) [ 0.3994 0.2089 0.3965 ]
        O ( 7.3090 2.3658 0.5665 ) [ 0.8994 0.2911 0.1035 ]
        O ( 0.8177 5.7609 0.5665 ) [ 0.1006 0.7089 0.1035 ]

        Periodicity: X Y Z

        Lattice vectors:
        8.1267 0.0000 0.0000
        0.0000 8.1267 0.0000
        0.0000 0.0000 5.4719


      • pychemia.code.vasp.write_poscar(st) ## Writes the POSCAR

      • cat POSCAR
        Cu Bi O
        1.0
        8.1266836599999994 0.0000000000000000 0.0000000000000000
        0.0000000000000000 8.1266836599999994 0.0000000000000000
        0.0000000000000000 0.0000000000000000 5.4718983520000002
        Cu Bi O
        4 8 16
        Direct
        0.1538057794906225 0.1538057794906225 0.2500000000000000
        0.8461942205093775 0.8461942205093775 0.2500000000000000
        0.6538057794906225 0.3461942205093775 0.2500000000000000
        0.3461942205093775 0.6538057794906225 0.2500000000000000
        0.3461942205093775 0.3461942205093775 0.7500000000000000
        0.6538057794906225 0.6538057794906225 0.7500000000000000
        0.8461942205093775 0.1538057794906225 0.7500000000000000
        0.1538057794906225 0.8461942205093775 0.7500000000000000
        0.0000000000000000 0.5000000000000000 0.0800837244792445
        0.5000000000000000 0.0000000000000000 0.4199162755207555
        0.5000000000000000 0.0000000000000000 0.9199162755207555
        0.0000000000000000 0.5000000000000000 0.5800837244792445
        0.2911175208707460 0.1006206054291039 0.8964731587543200
        0.7088824791292541 0.8993793945708961 0.8964731587543200
        0.7911175208707459 0.3993793945708961 0.6035268412456800
        0.2088824791292540 0.6006206054291039 0.6035268412456800
        0.8993793945708961 0.7088824791292541 0.6035268412456800
        0.1006206054291039 0.2911175208707460 0.6035268412456800
        0.6006206054291039 0.2088824791292540 0.8964731587543200
        0.3993793945708961 0.7911175208707459 0.8964731587543200
        0.2088824791292540 0.3993793945708961 0.1035268412456800
        0.7911175208707459 0.6006206054291039 0.1035268412456800
        0.7088824791292541 0.1006206054291039 0.3964731587543200
        0.2911175208707460 0.8993793945708961 0.3964731587543200
        0.6006206054291039 0.7911175208707459 0.3964731587543200
        0.3993793945708961 0.2088824791292540 0.3964731587543200
        0.8993793945708961 0.2911175208707460 0.1035268412456800
        0.1006206054291039 0.7088824791292541 0.1035268412456800



      Find the symmetry group number

      • sym=pychemia.symm.StructureSymmetry(st)

      • print sym.number() 130

      • sym.get_symmetry_dataset()


        <This prints all the symmetry operations and info about the crystal structure>

      • sym.refine_cell().natom 28

      • st.natom 28




      Find the structures with bandgap > 0 and cubic crystal symmetry

      • for x in pcdb.entries.find({’structure.nspecies’: 2, ’properties.spacegroup.crystal_system’: ’Cubic’, ’properties.oqmd.band_gap’: {’$gt’: 0.0}}, {’_id’: 0}):
        print x[’structure’][’formula’]

        OUTPUT:–
        FeS2
        F6Mo
        BaCl2
        CuI
        Co3O4
        MgO
        MnO
        NiO
        F4Si
        P2Pt
        As3Ir
        .... and many more....

    • pcdb.entries.find({’structure.nspecies’: 2, ’properties.spacegroup.crystal_system’: ’Cubic’, ’properties.oqmd.band_gap’: {’$gt’: 0.0}}, {’_id’: 0}).count()
      1131