bool isAlleleCalled(Allele & allele, const float min_acp) {

        auto acp = allele.info().getValue<float>("ACP");
        
        if (acp.second) {

            if (acp.first >= min_acp) {

                return true;
            
            } else {

                return false;
            }

        } else {

            return false;
        }
    }    
	string getAlleleStringAttribute(Allele & allele, const string attribute) {

		auto att_value = allele.info().getValue<string>(attribute);
		
		if (att_value.second) {									
		
			if (att_value.first == ".") {

				return "NoValue";
			
			} else {

				assert(!(allele.isMissing()));
				return att_value.first;
			}

		} else {

			return "Reference";
		}
	}
    bool isAlleleAnnotated(Allele & allele) {

        auto annotation = allele.info().getValue<string>("AAI");
        
        if (annotation.second) {

            assert(!(annotation.first.empty()));

            if (annotation.first != ".") {

                return true;
            
            } else {

                return false;
            }

        } else {

            return false;
        }
    }