Instructions for demo run - 

Sample run - 
python main.py --nclients 128 --aggregation p2prism --k 32 --init same --niters 1 --nrounds 500 --exp outputs/p2prism_try_mnist_m128c32k32l1 --attack shejwalkar --nbyz 32 

Input:
--nclients: number of nodes 
--aggregation: 'p2prism' for defense, 'p2p_trmean' for trimmed mean, a'p2p' for simple gossip averaging
--k: number of neighbors in ak-regular graph or minimum degree in a power-law graph
--init: 'same' or 'diff' for model initialization
--niters: number of local iterations for every node
--nrounds: total number of rounds
--exp: filename to save the outputs
--attack: 'shejwalkar' or 'benign'
--nbyz: number of malicious nodes
--dataset: 'mnist', 'fmnist', 'shaekspeare'
--lr: learning rate
--net: 'dnn', 'lstm'
--graph_type: 'k-regular', or 'power-law'

Outputs:
test_acc.npy: Average test  accuracy numpy array
local_test_acc.npy: Local test accuracy numpy array
cdist.npy: consensus distance
rpt.pt: reputation score
FS_dict.pt: flip-score values
W.pt: mixing matrix
is_mal.npy: malicious client indices