PyQAlloy Basic Usage Examples

Welcome to a minimal Jupyter notebook that shows how to use the PyQAlloy package. It assumes you are using the default settings, i.e. the data collection you are running on is the current static image of the CURATED ULTERA HEA dataset used for abnormal data detection located in the ULTERA_internal MongoDB database. As of March 2023, that collection is CURATED_Dec2022.

Note, that to access it, you will need to create a credentials.json file in the pyqalloy package as described in install instructions in documentation. Alternatively, if you are not able to connect to the ULTERA server, e.g. on offline HPC, you can set up an in-memory MontyDB database (tht mimics MongoDB basic functions) as descibed in dev/jDummyDatabaseInMemory.ipynb notebook, you can find in the PyQAlloy GitHub repository, populating it with ULTERA Data from Zenodo repository at doi.org/10.5281/zenodo.7566415 or with your data conforming to the ULTERA schema standards.

Single Composition Scope

Set up the sC (single Composition) Analyzer Object

from pyqalloy.curation import analysis
import plotly.io as pio
pio.renderers.default = "svg"
sC = analysis.SingleCompositionAnalyzer()
Connected to the CURATED_Dec2022 in ULTERA_internal with 6073 data points detected.

Scan through all the compositions, looking for the ones that are close to 100 but not exactly 100. Request up to 10 results and then stop.

sC.scanCompositionsAround100(resultLimit=10, printOnFly=True)
DOI: 10.1016/j.msea.2017.04.111
F:   Cr19 Fe19 Co19 Ni37 Cu4 Al4
PF:  Cr18.6 Fe18.6 Co18.6 Ni36.3 Cu3.9 Al3.9
Raw:  Al4Co19Cr19Cu4Fe19Ni37
RF:  Cr4.75 Fe4.75 Co4.75 Ni9.25 Cu1 Al1
[19.0, 19.0, 19.0, 37.0, 4.0, 4.0]
-->  102.0

DOI: 10.3390/ma12071136
F:   Li38 Ca1 Mg48 Al15 Si1
PF:  Li36.9 Ca1 Mg46.6 Al14.6 Si1
Raw:  Al15Li38Mg48Ca1 Si1
RF:  Li38 Ca1 Mg48 Al15 Si1
[38.0, 1.0, 48.0, 15.0, 1.0]
-->  103.0

DOI: 10.1016/j.msea.2012.04.067  --> F9
F:   Hf1.4 Zr0.007 Ti0.4 Ta3.3 W9.4 Mo0.5 Cr8.1 Co9.3 Ni61.5 Al5.7 B0.017 C0.07
PF:  Hf1.4 Zr0 Ti0.4 Ta3.3 W9.4 Mo0.5 Cr8.1 Co9.3 Ni61.7 Al5.7 B0 C0.1
Raw:  Ni61.5 W9.4 Co9.3 Cr8.1 Al5.7 Ta3.3 Hf1.4 Ti0.4 Mo0.5 C0.07 B0.017 Zr0.007
RF:  Hf2.8 Zr0.01 Ti0.8 Ta6.6 W18.8 Mo1 Cr16.2 Co18.6 Ni123 Al11.4 B0.03 C0.14
[1.4, 0.007, 0.4, 3.3, 9.4, 0.5, 8.1, 9.3, 61.5, 5.7, 0.017, 0.07]
-->  99.694

DOI: 10.1016/j.ijfatigue.2018.08.029  --> T6
F:   Ti86.2 V3.15 Al10.2
PF:  Ti86.6 V3.2 Al10.2
Raw:  Ti86.2 Al10.2 V3.15
RF:  Ti27.37 V1 Al3.24
[86.2, 3.15, 10.2]
-->  99.55

DOI: 10.1016/j.actamat.2016.06.063
F:   Mo7 Cr23 Fe23 Co23 Ni23
PF:  Mo7.1 Cr23.2 Fe23.2 Co23.2 Ni23.2
Raw:  Co23Cr23Fe23Ni23Mo7
RF:  Mo1 Cr3.29 Fe3.29 Co3.29 Ni3.29
[7.0, 23.0, 23.0, 23.0, 23.0]
-->  99.0

DOI: 10.1016/j.actamat.2016.11.016
F:   Cr16 Fe16 Co16 Ni34.4 Al16
PF:  Cr16.3 Fe16.3 Co16.3 Ni35 Al16.3
Raw:  Al16Co16Cr16Fe16Ni34.4
RF:  Cr1 Fe1 Co1 Ni2.15 Al1
[16.0, 16.0, 16.0, 34.4, 16.0]
-->  98.4

DOI: 10.1016/j.matlet.2017.04.072
F:   Cr23 Fe23 Co23 Ni23 Al7
PF:  Cr23.2 Fe23.2 Co23.2 Ni23.2 Al7.1
Raw:  Al7Co23Cr23Fe23Ni23
RF:  Cr3.29 Fe3.29 Co3.29 Ni3.29 Al1
[23.0, 23.0, 23.0, 23.0, 7.0]
-->  99.0

DOI: 10.1016/j.msea.2016.11.019
F:   Cr26 Fe26 Ni26 Al23
PF:  Cr25.7 Fe25.7 Ni25.7 Al22.8
Raw:  Al23Cr26Fe26Ni26
RF:  Cr1.13 Fe1.13 Ni1.13 Al1
[26.0, 26.0, 26.0, 23.0]
-->  101.0

DOI: Liu_1999_ProcessingAndHighTemperature  --> F2
F:   Hf0.9 Mo91
PF:  Hf1 Mo99
Raw:  Mo91 Hf0.9
RF:  Hf1 Mo101.11
[0.9, 91.0]
-->  91.9

DOI: 10.1016/j.msea.2015.09.089
F:   Cr17 Fe17 Ni33 Cu17 Al17
PF:  Cr16.8 Fe16.8 Ni32.7 Cu16.8 Al16.8
Raw:  Al17Cr17Cu17Fe17Ni33
RF:  Cr1 Fe1 Ni1.94 Cu1 Al1
[17.0, 17.0, 33.0, 17.0, 17.0]
-->  101.0

DOI: 10.1155/2019/2157592
F:   Ti3 Mn28 Fe31 Ni15 Al24
PF:  Ti3 Mn27.7 Fe30.7 Ni14.9 Al23.8
Raw:  Fe31Mn28 Ni15Al24Ti3
RF:  Ti1 Mn9.33 Fe10.33 Ni5 Al8
[3.0, 28.0, 31.0, 15.0, 24.0]
-->  101.0

Re-initialize the sC object and run agin with custom settings (uncertainty=1, i.e. +/-1% passed as close enough to 100%). THere are quite a few you can modify to your needs.

sC = analysis.SingleCompositionAnalyzer()
sC.scanCompositionsAround100(resultLimit=10, printOnFly=True, uncertainty=1)
Connected to the CURATED_Dec2022 in ULTERA_internal with 6073 data points detected.
DOI: 10.1016/j.msea.2017.04.111
F:   Cr19 Fe19 Co19 Ni37 Cu4 Al4
PF:  Cr18.6 Fe18.6 Co18.6 Ni36.3 Cu3.9 Al3.9
Raw:  Al4Co19Cr19Cu4Fe19Ni37
RF:  Cr4.75 Fe4.75 Co4.75 Ni9.25 Cu1 Al1
[19.0, 19.0, 19.0, 37.0, 4.0, 4.0]
-->  102.0

DOI: 10.3390/ma12071136
F:   Li38 Ca1 Mg48 Al15 Si1
PF:  Li36.9 Ca1 Mg46.6 Al14.6 Si1
Raw:  Al15Li38Mg48Ca1 Si1
RF:  Li38 Ca1 Mg48 Al15 Si1
[38.0, 1.0, 48.0, 15.0, 1.0]
-->  103.0

DOI: 10.1016/j.actamat.2016.11.016
F:   Cr16 Fe16 Co16 Ni34.4 Al16
PF:  Cr16.3 Fe16.3 Co16.3 Ni35 Al16.3
Raw:  Al16Co16Cr16Fe16Ni34.4
RF:  Cr1 Fe1 Co1 Ni2.15 Al1
[16.0, 16.0, 16.0, 34.4, 16.0]
-->  98.4

DOI: Liu_1999_ProcessingAndHighTemperature  --> F2
F:   Hf0.9 Mo91
PF:  Hf1 Mo99
Raw:  Mo91 Hf0.9
RF:  Hf1 Mo101.11
[0.9, 91.0]
-->  91.9

DOI: 10.1134/S2070205120040231  --> T2
F:   Ta1 Nb0.103
PF:  Ta90.7 Nb9.3
Raw:  TaNb0.103
RF:  Ta9.71 Nb1
[1.0, 0.103]
-->  1.103

DOI: 10.1155/2019/2157592
F:   Ti0.8 Mn28 Fe31 Ni15 Al24
PF:  Ti0.8 Mn28.3 Fe31.4 Ni15.2 Al24.3
Raw:  Fe31Mn28 Ni15Al24Ti0.8
RF:  Ti1 Mn35 Fe38.75 Ni18.75 Al30
[0.8, 28.0, 31.0, 15.0, 24.0]
-->  98.8

DOI: 10.1016/j.jmst.2014.09.011
F:   Ti9 Cr18 Fe17 Ni33 Al18
PF:  Ti9.5 Cr18.9 Fe17.9 Ni34.7 Al18.9
Raw:  Al18Cr18Fe17Ni33Ti9
RF:  Ti1 Cr2 Fe1.89 Ni3.67 Al2
[9.0, 18.0, 17.0, 33.0, 18.0]
-->  95.0

DOI: 10.1016/j.actamat.2016.11.016
F:   Cr17 Fe17 Co17 Ni33.3 Al17
PF:  Cr16.8 Fe16.8 Co16.8 Ni32.9 Al16.8
Raw:  Al17Cr17Co17Fe17Ni33.3
RF:  Cr1 Fe1 Co1 Ni1.96 Al1
[17.0, 17.0, 17.0, 33.3, 17.0]
-->  101.3

DOI: 10.1134/S0031918X17060084
F:   V13 Cr17 Mn17 Fe17 Co17 Ni17
PF:  V13.3 Cr17.3 Mn17.3 Fe17.3 Co17.3 Ni17.3
Raw:  Co17Cr17Fe17Mn17Ni17V13
RF:  V1 Cr1.31 Mn1.31 Fe1.31 Co1.31 Ni1.31
[13.0, 17.0, 17.0, 17.0, 17.0, 17.0]
-->  98.0

DOI: 10.1134/S2070205120040231  --> T2
F:   Ta1 W0.05
PF:  Ta95.2 W4.8
Raw:  TaW0.05
RF:  Ta20 W1
[1.0, 0.05]
-->  1.05

DOI: 10.1155/2019/2157592
F:   Mn28 Fe31 Ni15 Al24
PF:  Mn28.6 Fe31.6 Ni15.3 Al24.5
Raw:  Fe31Mn28 Ni15Al24
RF:  Mn1.87 Fe2.07 Ni1 Al1.6
[28.0, 31.0, 15.0, 24.0]
-->  98.0

Now, run, but only look at compositions that a specific researcher uploaded by initilizing the sC with a name specified. This time the printOnFly is set to False, so that the results are not printed on the fly, but rather stored in a list.

sC = analysis.SingleCompositionAnalyzer(name='Adam Krajewski')
sC.scanCompositionsAround100(printOnFly=False, resultLimit=10, uncertainty=0.21)
Connected to the CURATED_Dec2022 in ULTERA_internal with 6073 data points detected.

And now, save that list for later analysis!

sC.writeResultsToFile('singleComp_Adam.txt')

Single DOI

Set up the sDOI (single DOI) Analyzer Object and initialize it with a DOI of interest.

doi = '10.1016/j.jallcom.2008.11.059'
sDOI = analysis.SingleDOIAnalyzer(doi=doi)
Connected to the CURATED_Dec2022 in ULTERA_internal with 6073 data points detected.
********  Analyzer Initialized  ********

Helper function to get all the DOIs that are present in the collection.

doiList = sDOI.get_allDOIs()

Analyze distances between all the compositions in the publication. And print abnormalities.

sDOI.analyze_nnDistances()
sDOI.print_nnDistances()
0.0866    |  0.9524     <-- Ti0.5Al0.5Cr1Fe1Co1Cu0.5Ni1
0.0909    |  1.0        <-- Ti0.5Al0.75Cr1Fe1Co1Cu0.25Ni1
0.0823    |  0.9048     <-- Ti0.5Al0.25Cr1Fe1Co1Cu0.75Ni1
0.0909    |  1.0        <-- Ti0.5Cr1Fe1Co1Cu1Ni1
0.0823    |  0.9048     <-- Ti0.5Al0.25Cr1Fe1Co1Cu0.5Ni1

You can also set the name of the researcher to get the same results, but only for the stusies they contributed to.

sDOI.setName('Zi-Kui')
sDOI.analyze_nnDistances()
sDOI.print_nnDistances()
Skipping 10.1016/j.jallcom.2008.11.059. Specified researcher (Zi-Kui) not present in the group ({'Adam Krajewski'})
sDOI.setName('Adam Krajewski')
sDOI.analyze_nnDistances()
sDOI.print_nnDistances()
0.0866    |  0.9524     <-- Ti0.5Al0.5Cr1Fe1Co1Cu0.5Ni1
0.0909    |  1.0        <-- Ti0.5Al0.75Cr1Fe1Co1Cu0.25Ni1
0.0823    |  0.9048     <-- Ti0.5Al0.25Cr1Fe1Co1Cu0.75Ni1
0.0909    |  1.0        <-- Ti0.5Cr1Fe1Co1Cu1Ni1
0.0823    |  0.9048     <-- Ti0.5Al0.25Cr1Fe1Co1Cu0.5Ni1
sDOI.get_compVecs_2DPCA()
array([[ 0.03246058, -0.00649938],
       [ 0.09674289, -0.0063689 ],
       [-0.03182172, -0.00662987],
       [-0.09610402, -0.00676035],
       [-0.00127773,  0.0262585 ]])
sDOI.analyze_compVecs_2DPCA()
../_images/718e2911c4e8e0e4b3a783303f9dbbe250bb4988e2bdabe74423e2cc5896e179.svg
<_io.BytesIO at 0x2ab2225c0>
for doi in ['10.1016/j.jallcom.2008.11.059', '10.3390/met9010076', '10.1016/j.scriptamat.2018.10.023', '10.1007/978-1-4684-6066-7', '10.3390/e18050189']:
    sDOI.setDOI(doi)
    sDOI.getCompVecs()
    if len(sDOI.compVecs)>1:
        sDOI.get_compVecs_2DPCA()
        sDOI.analyze_compVecs_2DPCA(showFigure=True)
../_images/a708b013eeb5021b9ab70db448fc288173d587cce19309d9b1220290b0ea0678.svg
for doi in doiList[0:10]:
    sDOI.setDOI(doi)
    sDOI.getCompVecs()
    if len(sDOI.compVecs) > 1:
        sDOI.get_compVecs_2DPCA()
        sDOI.analyze_compVecs_2DPCA(showFigure=True)
sDOI = analysis.SingleDOIAnalyzer(doi='', name='Adam Krajewski')
for doi in doiList[0:10]:
    sDOI.setName('Adam Krajewski')
    sDOI.setDOI(doi)
    sDOI.getCompVecs()
    if len(sDOI.compVecs) > 1:
        sDOI.get_compVecs_2DPCA()
        sDOI.analyze_compVecs_2DPCA(showFigure=True)
Connected to the CURATED_Dec2022 in ULTERA_internal with 6073 data points detected.
********  Analyzer Initialized  ********
doi = '10.1016/j.jallcom.2008.11.059'
sDOI = analysis.SingleDOIAnalyzer(doi=doi)
sDOI.setName('Hui Sun')
doiList = sDOI.get_allDOIs()
print(f'{len(doiList)} DOIs to process')
Connected to the CURATED_Dec2022 in ULTERA_internal with 6073 data points detected.
********  Analyzer Initialized  ********
479 DOIs to process
toPrintList = []
for doi in doiList:
    sDOI.setName('Hui Sun')
    sDOI.setDOI(doi)
    sDOI.getCompVecs()
    if len(sDOI.compVecs)>1:
        sDOI.get_compVecs_2DPCA()
        out = sDOI.analyze_compVecs_2DPCA(showFigure=False)
        toPrintList.append(out)
    else:
        toPrintList.append(f'Skipping {doi:<30} Not enough data for PCA (N>=2).')
sDOI.writeManyPlots(toPlotList=toPrintList, workbookPath='SingleDOI_ResultPCA_Hui.xlsx')

Entire Database

Set up the allD (all Data) Analyzer Object and initialize it

from pyqalloy.curation import analysis
allD = analysis.AllDataAnalyzer()
Connected to the CURATED_Dec2022 in ULTERA_internal with 6073 data points detected.
Updating the list of all unique composition points...
Number of unique formulas found: 1311
Elements Found: {'Mo', 'Fe', 'Si', 'Ir', 'Mg', 'O', 'Ca', 'Zr', 'Nb', 'Ge', 'Be', 'Li', 'Co', 'V', 'Mn', 'B', 'Cr', 'C', 'Ti', 'Ta', 'Sc', 'Ru', 'Zn', 'Hf', 'Cu', 'Y', 'Al', 'Ga', 'Sn', 'Ni', 'Re', 'N', 'S', 'Ag', 'W', 'Pd', 'Nd'}
Done!
allD.getTSNE(perplexity=5)
array([[-46.397068 , -27.267189 ],
       [ -3.2727704,   2.30549  ],
       [-78.12488  ,  16.568735 ],
       ...,
       [ 72.67273  , -11.160606 ],
       [-34.665714 ,  20.281357 ],
       [ 36.46736  ,  20.45136  ]], dtype=float32)
allD.showTSNE()
../_images/36d53345ea3014d1733477988d73e13375be0c71d0ec922958f51fff2db5ed52.svg
allD.getDBSCAN(eps=0.075, min_samples=2)
Found 115 clusters and 427 outliers.
Outlier ratio: 32.6%
(array([  0,   1,   2, ...,  -1,   1, 109]), 427)
allD.showClustersDBSCAN()
../_images/49c69b2fbb4546e6b4ab71fe85b101365e1ff5a3e5c04f5fe288c7bca6f427b3.svg
allD.showOutliersDBSCAN()
../_images/743eecaaf6177360ccb78932d85c321db7b442fef908ed72374b016ad2e1000f.svg
allD.getDBSCANautoEpsilon(outlierTargetN=17)
Running DBSCAN with eps=1.0...
Found 1 clusters and 0 outliers.
Outlier ratio: 0.0%
Running DBSCAN with eps=0.975...
Found 1 clusters and 0 outliers.
Outlier ratio: 0.0%
Running DBSCAN with eps=0.95...
Found 1 clusters and 0 outliers.
Outlier ratio: 0.0%
Running DBSCAN with eps=0.925...
Found 1 clusters and 0 outliers.
Outlier ratio: 0.0%
Running DBSCAN with eps=0.9...
Found 1 clusters and 0 outliers.
Outlier ratio: 0.0%
Running DBSCAN with eps=0.875...
Found 1 clusters and 0 outliers.
Outlier ratio: 0.0%
Running DBSCAN with eps=0.85...
Found 1 clusters and 0 outliers.
Outlier ratio: 0.0%
Running DBSCAN with eps=0.825...
Found 1 clusters and 0 outliers.
Outlier ratio: 0.0%
Running DBSCAN with eps=0.8...
Found 1 clusters and 0 outliers.
Outlier ratio: 0.0%
Running DBSCAN with eps=0.775...
Found 1 clusters and 0 outliers.
Outlier ratio: 0.0%
Running DBSCAN with eps=0.75...
Found 1 clusters and 0 outliers.
Outlier ratio: 0.0%
Running DBSCAN with eps=0.725...
Found 1 clusters and 0 outliers.
Outlier ratio: 0.0%
Running DBSCAN with eps=0.7...
Found 1 clusters and 0 outliers.
Outlier ratio: 0.0%
Running DBSCAN with eps=0.675...
Found 1 clusters and 0 outliers.
Outlier ratio: 0.0%
Running DBSCAN with eps=0.65...
Found 1 clusters and 0 outliers.
Outlier ratio: 0.0%
Running DBSCAN with eps=0.625...
Found 2 clusters and 0 outliers.
Outlier ratio: 0.0%
Running DBSCAN with eps=0.6...
Found 2 clusters and 0 outliers.
Outlier ratio: 0.0%
Running DBSCAN with eps=0.575...
Found 3 clusters and 1 outliers.
Outlier ratio: 0.1%
Running DBSCAN with eps=0.55...
Found 3 clusters and 1 outliers.
Outlier ratio: 0.1%
Running DBSCAN with eps=0.525...
Found 3 clusters and 1 outliers.
Outlier ratio: 0.1%
Running DBSCAN with eps=0.5...
Found 4 clusters and 1 outliers.
Outlier ratio: 0.1%
Running DBSCAN with eps=0.475...
Found 4 clusters and 1 outliers.
Outlier ratio: 0.1%
Running DBSCAN with eps=0.45...
Found 4 clusters and 1 outliers.
Outlier ratio: 0.1%
Running DBSCAN with eps=0.425...
Found 6 clusters and 2 outliers.
Outlier ratio: 0.2%
Running DBSCAN with eps=0.4...
Found 8 clusters and 6 outliers.
Outlier ratio: 0.5%
Running DBSCAN with eps=0.375...
Found 10 clusters and 7 outliers.
Outlier ratio: 0.5%
Running DBSCAN with eps=0.35...
Found 12 clusters and 10 outliers.
Outlier ratio: 0.8%
Running DBSCAN with eps=0.325...
Found 13 clusters and 13 outliers.
Outlier ratio: 1.0%
Running DBSCAN with eps=0.3...
Found 14 clusters and 17 outliers.
Outlier ratio: 1.3%
(array([0, 0, 0, ..., 0, 0, 0]), 17)
allD.showOutliersDBSCAN()
../_images/7bbe2b6b2e6e16ab00c189c73039ef2230ec4834f998baeedc70896cc4bacbf5.svg
allD.updateOutliersList()
allD.findOutlierDataSources();
Outlier Nb8 W2.33 Cr1 Co11 Al11   | Nb24 W7 Cr3 Co33 Al33     | Co33W07Al33Nb24Cr03
matched to:  Adam Krajewski       upload from DOI 10.1038/s41467-019-10533-1 

Outlier Zr1 Ta2.13 Ru3.53         | Zr15 Ta32 Ru53            | Ru53 Ta32 Zr15 
matched to:  Marcia Ahn           upload from DOI 10.1016/j.apsusc.2015.06.144 at position T3 

Outlier Be2.25 Zr4.12 Ti1.38 Ni1 Cu1.25 | Be22.5 Zr41.2 Ti13.8 Ni10 Cu12.5 | Zr41.2 Ti13.8 Cu12.5 Ni10 Be22.5
matched to:  Hui Sun              upload from DOI 10.1016/j.scriptamat.2013.05.020 at position T1 

Outlier Hf1 Zr1 Ti1 Ta1 C4        | Hf12.5 Zr12.5 Ti12.5 Ta12.5 C50 | (Zr0.25Hf0.25Ta0.25Ti0.25)C
matched to:  Hui Sun              upload from DOI 10.1007/s11661-020-06034-2 at position P2 

Outlier W1.5 Mo6.33 Co1 Ni1.83 Al6 | W9 Mo38 Co6 Ni11 Al36     | Co6W9Al36Mo38Ni11
matched to:  Adam Krajewski       upload from DOI 10.1038/s41467-019-10533-1 

Outlier Ti1 Nb1 Ag1 Zn1 Al1       | Ti20 Nb20 Ag20 Zn20 Al20  | AgAlNbTiZn
matched to:  Adam Krajewski       upload from DOI 10.1016/j.msea.2018.12.020 

Outlier Zr30.5 Ti1 Cu12.5 Al6     | Zr61 Ti2 Cu25 Al12        | Zr61Ti2Cu25Al12
matched to:  Hui Sun              upload from DOI 10.1007/s11837-015-1563-9 at position T2 

Outlier Li2 Mg1 Sc2 Ti3 Al2       | Li20 Mg10 Sc20 Ti30 Al20  | AlLiMg0.5ScTi1.5
matched to:  Adam Krajewski       upload from DOI 10.1080/21663831.2014.985855 

Outlier Ti4.5 Ta6 Nb15 Co1 Ni23.5 | Ti9 Ta12 Nb30 Co2 Ni47    | Ni47Co02Ta12Ti9Nb30
matched to:  Adam Krajewski       upload from DOI 10.1038/s41467-019-10533-1 

Outlier Hf3 Mo1 B14 Si10          | Hf10.7 Mo3.6 B50 Si35.7   | MoSi10B14Hf3
matched to:  Shuang Lin           upload from DOI 10.1016/j.msea.2011.11.001 at position T1 

Outlier Ta8 Ir7 Ni4 B1            | Ta40 Ir35 Ni20 B5         | Ir35Ni20Ta40B5
matched to:  Shuang Lin           upload from DOI 10.1103/PhysRevMaterials.5.040301 at position T6 

Outlier Zr1.27 Ta1.07 Ru1         | Zr38 Ta32 Ru30            | Zr38 Ta32 Ru30
matched to:  Marcia Ahn           upload from DOI 10.1016/j.apsusc.2015.06.144 at position T3 

Outlier Zr2 W1 C2                 | Zr40 W20 C40              | W0.5ZrC
matched to:  Shuang Lin           upload from DOI 10.1038/srep16014 at position T1 

Outlier Ti1 V23 Cr1               | Ti4 V92 Cr4               | V92 Cr4 Ti4
matched to:  Marcia Ahn           upload from DOI Natesan_2002_UniaxialCreepBehavior at position F2 

Outlier Ti32 Ta1 Nb9 Cr19 Co39    | Ti32 Ta1 Nb9 Cr19 Co39    | Ti32Nb9Ta01Cr19Co39
matched to:  Adam Krajewski       upload from DOI 10.1038/s41467-019-10533-1 

Outlier W1 Re6 Fe2 Ni8            | W5.9 Re35.3 Fe11.8 Ni47.1 | WNi8Fe2Re6
matched to:  Shuang Lin           upload from DOI 10.3390/ma14071660 at position T2 

Outlier Nb1 V5.5 W4.5 Mo1         | Nb8.3 V45.8 W37.5 Mo8.3   | V11Nb2Mo2W9
matched to:  Happy Researcher     upload from DOI 10.1016-j.actamat.2021.116800 at position T3 

Found 17 outlier data sources from all uploaded data.