text:
September 20, 2012 12:00AM EDT
France: Officials Backtrack on Identity Checks
Reform Urgently Needed to End Ethnic Profiling, Abusive Practices
Police officers perform an identity check and body pat-down of a young man in Paris, France on June 6, 2011. © 2011 Ludovic/Rea/Redux
(Paris) – The French government should uphold its commitment to reform abusive identity check procedures, a group of French and international organizations said today. Their statement followed a speech by Interior Minister Manuel Valls at the French Military School (École Militaire) on September 19, 2012, and an interview with Prime Minister Jean-Marc Ayrault on RTL radio, both expressing scepticism about reforming identity control procedures.
This reform is urgently needed, and, contrary to the interior minister's claims, it is perfectly feasible and could improve police efficiency, the groups said. The government should uphold its commitment to carry out the reform.
The groups are: GISTI, Grains of France (Graines deFrance), Human Rights Watch, Human Rights League (France) (Ligue des Droits de l'Homme), House for Equitable Development (Maison pour un Développement Solidaire), Open Society Justice Initiative, Lawyers Union of France (Syndicat des Avocats de France), and the Magistrates Union (Syndicat de la Magistrature).
In proposal No.30 of his electoral manifesto, President François Hollande promised to "fight against ethnic profiling and abusive practices during identity checks through the establishment of a 'procedure respectful of citizens.'"
This highly symbolic electoral commitment should be carried out to address the issue of discriminatory identity checks, the groups said. National and international organizations have for years highlighted abuses during identity checks in France, including ethnic profiling.
These abuses damage relations between the police force and the population, and make the victims of these checks feel like second-class citizens, the groups said. In many cases, these police stops infringe on fundamental rights and freedoms: freedom of movement, the right to safety, the right to privacy, and the right to freedom from discrimination.
In his proposal No.30, the president undertook to ensure respect for the rule of law and to re-establish a fair balance between the ability of law enforcement officers to fulfill their duty and the protection of fundamental freedoms. The proposal also reflects a commitment to restore relations between the police force and the population, and to improve security for all.
Valls's statement about how to reform identity checks is particularly worrisome and regrettable, the groups said, all the more so because it followed a public debate that spread inaccurate information about "stop forms," the primary focus of the debate, even though there have been no pilot programs in France to try out the procedure.
Experiences in other countries clearly demonstrate that it is possible to address discriminatory practices while simultaneously improving the efficiency of police stops, the groups said. Strong political commitment and a comprehensive approach are necessary.
The use of stop forms is a part of such a strategy, the groups said. They would make identity checks more transparent and put an end to the current situation in which there is no material record of identity checks. These documents, designed in a way that would protect privacy rights while also recording the objective reasons for the stop, can provide the police with evidence that they did not engage in discrimination or harassment while carrying out identity checks.
Stop forms are important, but this measure alone is not sufficient to reduce ethnic profiling, the groups said. A broader reform of the law on identity checks (article 78-2 of the Penal Procedures Code) is needed, including monitoring of identity checks by supervisors and police managers; regular meetings between residents, the police, and elected representatives to discuss control practices; and training so that officers become more aware of the objectives of identity checks and use them more selectively.
It is crucial for the government, in carrying out the reform, to consult and work with all of those involved – civil society organizations, experts, local representatives, judges, lawyers, and the Justice Ministry.
The groups called on the government to uphold the president's commitment to No.30 without further delay through a genuine and inclusive consultation process with the community.
Europe/Central Asia
Download 09.20.2012_France_Identity checks_0.pdf 09.20.2012_France_Identity checks_0.pdf
January 26, 2012 News Release
France: Abusive Identity Checks of Minority Youth
January 26, 2012 Report
"The Root of Humiliation"
November 24, 2021 Report
"Die Here or Go to Poland"
Belarus' and Poland's Shared Responsibility for Border Abuses
Dismantling Detention
International Alternatives to Detaining Immigrants
May 17, 2021 News Release
Pandemic's Dire Global Impact on Education
Afghanistan: Taliban Takeover Worsens Rights Crisis
June 21, 2017 Report
"Just Let Us Be"
Philippines: 'Drug War' Killings Rise During Pandemic
November 12, 2018 News Release
Pakistan: Girls Deprived of Education
Protecting Rights, Saving Lives
Human Rights Watch defends the rights of people in 90 countries worldwide, spotlighting abuses and bringing perpetrators to justice


Whether you are inviting friends over for a cozy evening together or if you are planning to curl up with a book and enjoy the evening by yourself, we have found the perfect companion for you. A warm spiced cider that leaves you feeling fuzzy is ideal to show off your culinary skills to your friends or to keep yourself warm. If you love apple cider as much as we do, here's an easy spiced cider recipe to try out.
Combine all ingredients in a saucepan and bring it to boil.
Reduce heat and let it simmer for a few minutes.
Set it aside for about 15 minutes to allow flavors to blend.
This sounds amazing - do you have any other cocktail recipes similar to this one??
Yes i do . will share them .


text: An Android client for Circle Blvd.

redpajama_set_name: RedPajamaGithub


Exhibits exceptional drought, disease, insect, and wear tolerance with rapid recovery rate.
West Coast Turf and Western Sod have been the leaders in the sod farming industry since 1972, with the aim of providing the best natural turf grass sod and sod installation service in the business. Only West Coast Turf has earned the name "Home of Super Bowl Sod" having supplied turf grass to a record 8 Super Bowls from California to Florida, including Super Bowl 50 at Levi's Stadium. Check out our list of other famous clients.
West Coast Turf is the leader for California sod and Arizona sod products. We offer more than 30 different varieties of sod and stolons, grown locally at our Phoenix area Arizona sod farms, serving Phoenix sod, Scottsdale sod, Tempe sod, Tucson sod, delivering to nearly every corner of the state; and in Southern California sod farms in the Coachella Valley/Palm Springs/Palm Desert sod areas, Escondido, and Winchester sod serve the entire Los Angeles basin, Orange County, San Diego sod, and beyond, delivered fresh to your home or project in SoCal. In Northern California, our Livingston sod farm serves the San Francisco Bay Area sod, including Sacramento, San Jose, Oakland and everywhere in between.
We specialize in water conserving environmentally friendly bermuda & paspalum grasses with none of the toxic health risks of synthetic grass, and are drought tolerant grasses. We also grow other optimal coastal turf varieties to suit your needs. You can have an environmentally friendly lawn if you water wisely!
Order sod online for special internet discounts, or call one of our expert customer service representatives for more information.
Be in the know about sales, special promotions, and the latest goings-on.


For homeowners, there is nothing more frightening than the prospect of a fire, flood, or other natural disaster doing extensive property damage. It does happen, though, and when it does, homeowners want to have the damage repaired as quickly as possible. At the same time, insurers want to ensure that the repairs are quoted accurately and carried out efficiently. Both parties benefit from a fair, independent appraisal, which is what the experts at TTA Appraisal offer.
TTA Appraisal is a national leader in material damage appraisal, and that includes residential and commercial properties alike. We're known for our low cycle times, the high quality of our work, and exemplary customer service.
Since 2010, TTA Appraisal has provided nationwide expertise in vehicular damage assessment. Subsequently, we've expanded into residential and commercial real estate appraisal. In this field, we remain committed to the core principles on which our business was founded—namely, providing prompt assessments, maintaining high standards of quality, and making it easy for insurers to do business with us.
TTA Appraisal has a nationwide network of appraisers who specialize in real estate assessment; indeed, we have a dedicated team of experts who work solely in our property division. We also have a centralized business structure, empowering us to uphold high standards of quality and precision. Our tagline is Delivering the Promise—and we follow through, pledging the best real estate appraisal services to our clients, and then delivering them.
The experts who work in our property division can provide expertise spanning numerous kinds of property damage, for residential and commercial properties alike.
High winds, driving rain, flooding—all of these things are part and parcel of life in hurricane country, and our appraisers are skilled in assessing any damage done.
In other parts of the country, the most pressing danger is the one posed by earthquakes. TTA Appraisal brings expertise and professionalism to our assessment of any structural damage.
Tornadoes can leave much destruction in their wake, but TTA Appraisal can get experts mobilized for a quick and precise damage report.
A house fire can be the cause of significant structural damage. One of our appraisers will be deployed promptly to offer an estimate.
Flooding, whether from heavy rain or from a malfunctional washing machine, can cause severe damage. TTA Appraisal offers speedy and precise assessment.
Finally, hail storms can take their toll on any home or business. An assessment from TTA Appraisal can get the repairs process started quickly.
Receiving an accurate appraisal is the first step toward getting repairs made promptly, and for the most reasonable price. TTA Appraisal is proud to offer this service on a national level. We invite you to contact us today to learn more about our service and expertise in this field.


Dedicated staff, great facilities and diverse programming were all noted as reasons why the Manassas and Woodbridge Senior Centers were both fully accredited by the National Council on Aging-National Institute of Senior Centers.
Achieving the accreditation means that the centers successfully met the institute's nine standard areas of performance that include purpose, community, governance, administration and human resources, program planning, evaluation, fiscal management, records and reports, and facility.
Accreditation documentation for the centers, which received an on-site peer review as part of the process, stated that the staff at the senior centers were "dedicated and hard-working in support of the mission and the participants." The citation also stated that the annual reports at the senior centers were "well written and detailed" and that the facilities of both centers were "great" with "appropriate space for socializing and classes both large and small."
The Prince William Area Agency on Aging oversees the operation of the senior centers, which serve older residents in Prince William County, Manassas and Manassas Park. The accreditation papers noted that the relationship between the senior centers and the agency is strong in the "day to day support that is given to the center."
Area Agency on Aging Director Sarah Henry said the process showed that area seniors are well served by the senior centers. "People who use the senior centers can be assured that they are being offered current programming and that there are opportunities to be engaged in the planning of programs. They can also be assured that staff are held to the highest standards when operating their senior center."
Henry said the senior centers' staff engaged fellow agencies, community partners, citizens and stakeholders to establish the strengths and weaknesses of current operations. Once completed, staff committed to making the necessary changes that would lead to stronger and more successful facilities. "Those efforts resulted in improved visibility, increased safety for participants, and stronger internal controls."
Part of the accreditation process included planning for the future. The senior centers developed a five-year strategic plan that included targeting persons between 55 and 60 to become members of the center, increasing fresh fruits and vegetables in the daily lunch menu, and increasing the offering of programming, such as health and wellness, lifelong learning opportunities, technology and digital devices classes, and opportunities for civic engagement.
Henry said she's sure that the senior centers will meet the criteria for accreditation when they resubmit again in five years. "I am confident that the senior centers will maintain their accreditation. The staff is dedicated to ensuring that we are offering the best services we can to our older adult population."
For more information about the senior centers, visit pwcgov.org/aging.


text:
TBR Chancellor Opposes Guns on Campus Legislation
Tennessee Board of Regents Chancellor John Morgan is speaking out, expressing his concern for the safety of students, faculty and staff on college campuses if a bill being discussed in the legislature to allow guns on public campuses is passed.
Morgan has joined the Tennessee Association of Chiefs of Police, University of Tennessee President Joe DiPietro, and numerous other presidents, faculty, staff and students of Tennessee's public higher education institutions in opposing the bills.
"I am strongly opposed to these bills, and I am proud to join my colleagues at the University of Tennessee System and the Campus Police Chiefs in that opposition," said TBR Chancellor John Morgan. "I believe the police officers across our system who are fearful that more firearms on campuses would be problematic. Our campuses are much safer with current laws left in place."
House Bill 2016 is scheduled to come up Tuesday, April 19, in the House Judiciary Committee. As amended, it will allow all full-time faculty and staff members of public postsecondary institutions with a concealed weapon permit to carry a concealed firearm on campus after completing a two-hour handgun safety training course. The bill does not pertain to students, part-time employees or adjunct faculty members. The bill provides that if an institution elects to opt out, it will have a duty to guarantee and warrant the health and safety of persons on the campus.
Current law prohibits anyone other than authorized law enforcement officials to bring weapons on campus.
Law enforcement officials nationwide have expressed concern that campuses will become less safe with more gun carriers by complicating law enforcement response to potential threats.
"Just because someone is permitted to carry a weapon, we cannot presume the individual's ability or skill set with that weapon during an alarming situation," wrote Chief David Beams, TACP president, and Chief August Washington, chairman of the TACP University Committee and chief of the Vanderbilt University Police Department, in a letter to the General Assembly.
A 2009 report by ABC News 20/20 titled "If I Only Had a Gun" supported that point by showing individuals who received extensive firearms training still had trouble responding to an active shooter situation.
Recent campus crime reports indicate Tennessee college campuses are often safer than the communities that surround them. College officials are also concerned about the added liabilities and costs they could face if the laws are changed.
The Tennessee Board of Regents is the nation's sixth largest higher education system, governing 46 post-secondary educational institutions. The TBR system includes six universities, 13 two-year colleges and 27 technology centers, providing programs in 90 of Tennessee's 95 counties to more than 200,000 students.

redpajama_set_name: RedPajamaCommonCrawl


so I found there is EX version released supporting this feature, so firstly thank you for your work!
especially the free ones.. and loaded with bunch of useless options, and CDEX for PDF is ultra fast .. so thank you once again!
Now really, to the point. As both CB* and PDF files are with same icon, have you considered an update to make them differentiate from one another.
Thanks for your attention and apologies if that's rather spam than request.


text:
Reach Australia 2020
Multiply 2020
Team Pastoring 2020
2019 Conference Talks
Reach Australia National Conference
Have a browse below of all the speakers we'll have at the Reach Australia Conference in 2019. These are broken down into our main session bible teachers, our main stream workshops, and skills workshops. You can click on any of the speakers to read more about them.
To see the timetable of when each of these sessions will take place, click here to view our interactive timetable.
MAIN SESSION BIBLE TEACHERS:
Phil Colgan
Phil is the Senior Minister at St George North Anglican Church where he has served for 15 years. He's married to Victoria and has three children. He loves coaching his son's cricket team, watching sport and preaching the Gospel.
Andrew Heard
Andrew and Cathie Heard planted EV Church on the Central Coast of NSW in 1996 where they have been serving to this day. Andrew is a founder of FIEC and also of Geneva Push. He and Cathie have 4 grown children.
Eugene Hor
Eugene leads the team at GracePoint Presbyterian in Sydney, a multi-site church community which he and his wife Pauline planted in 1999. They have 2 teenagers, Ashleigh & Joshua. Eugene also serves at Christ College as adjunct lecturer in preaching.
Mikey Lynch
Mikey is the Campus Director of the University Fellowship of Christians, UTAS, Hobart. Mikey is a leader of Vision 100 (TAS) and Geneva Push – both church planting networks. He is a chaplain at Jane Franklin Hall and is married to Nikki with three children.
STREAM WORKSHOP Speakers:
Mission PathwayS STREAM
Sam Hilton
Sam lives in Newcastle and currently works as the Mission Pastor at Hunter Bible Church. He is married to Prue and has four beautiful girls. He loves hanging out with the kids on the weekend, getting to the beach & drinking coffee. His great passion is sharing the good news of Jesus with people in Newcastle.
Adrian Haynes
Adrian works at EV Church in the area of Mission. He'll be speaking on Mission Pathways - the Biblical principle and Structures your church needs to implement.
Matt Varcoe
Matt is the Maturity and Mission Director at Grace City Church in Sydney. Matt is married to Shell and has a son called George. He likes spending Saturdays enjoying the outdoors and eating good food. He loves Jesus and seeing other people come to know and love Him too. Matt is excited to see how God uses Grace City to reach out to Green Square and beyond with the life-giving message of the Gospel. Before he was a Pastor, Matt was a Primary School teacher.
Varcoe
COMMUNITY & INTEGRATION STREAM
Tim Clemens
Tim Clemens is the lead planter/pastor of Grace City Church, which was planted four years ago. Grace City is a growing church in Sydney's inner south that attracts a variety of students and young workers from around the city. Grace City has an average Sunday attendance of 200 adults and 40 kids. Tim is married to Emma and they have a baby girl, Brooke. Tim is married to Emma and they have a baby girl, Brooke.
Amy Townsend
Amy is the Membership and Ministry co-Director at Grace City Church. Jesus says, "The harvest is plentiful but the workers are few" (Matt 9:37) so after running her own business for six years, Amy made the decision to spend two years doing a Ministry Apprenticeship (MTS) with Grace City Church. One thing led to the next, and Amy now works full time at Grace City and studies part time at SMBC. She is married to Jesse and in her free time you'll usually finding her crocheting (or making jewellery or knitting or planting succulents!).
INTENTIONAL GATHERINGS STREAM
Toby Neal
Toby Neal is the founding pastor of Vine Church (Surry Hills), which started in 2011 to connect inner city people to the life, love and freedom Jesus offers. Toby lives in Surry Hills with his wife and his three kids. He loves growing indoor plants (yes, seriously) and has recently given up long distance running to return to his teenage passion for surfing.
Trevor Hodge
Trevor is married to Fiona, and has two boys - Isaac and Jonny. He is a Magnification Pastor at EV Church, Erina - with two key priorities being overseeing Sunday gatherings and teams, and developing the Magnify network / initiative. He's regularly called upon to lead at conferences such as Oxygen and Basecamp, and his songs are being sung in churches across Australia.
BUILDING LEADERS STREAM
Rhett Harris
Rhett Harris will be speaking at this workshop on Building Leaders.
Cathie Heard
Cathie and her Husband Andrew Heard planted EV Church on the Central Coast in 1996 which has seen hundreds of people in that area and beyond come to know Jesus. Cathie is the Director of Coaching at Geneva Push and loves being a coach and particularly helping people learn how to be great coaches of others in order to encourage people in their ministry.
CHURCH OPERATIONS STREAM
Dave Moore became a Christian through SRE teachers encouraging him to read the Bible. He's married to Julie and they have 4 kids. Dave is the Executive Pastor at Hunter Bible Church and works to keep a large church functioning while keeping the raw clarity of a new church plant. Dave is also the Producer of SafeMinistryTraining.com.au which serves new churches with abuse protection training and policies.
Ben Chapman will be speaking at this workshop on Church Operations.
SKILLS Workshop Speakers:
Sandy Galea
Sandy is the Lead Children's Minister at MBM (Multicultural Bible Ministry) in Western Sydney. She partners with others involved in children's ministry by equipping them through training seminars, one-to-one consultancy and the resources available on her web site Kidswise. Sandy is a wife, mother and grandmother (what a great privilege!).
Galea
Growing An Effective Ministry To Kids: what every pastor should know.
Jono McKeon
Jono McKeown has has been leading the youth team at EV for the last 11 years. In "youth pastor years" that makes him 77. He's passionate about running youth programs which go deep in discipleship and reach a lot of people at the same time.
McKeon
Youth Ministry within the Ecosystem
Developing Women Leaders
Al Stewart has been involved in preaching and evangelism in many contexts for over 30 years. For the last few years Al has worked with City Bible Forum speaking to "suits" about Jesus. He is also now involved in ministry at Vine church in Surry Hills.
Preaching that grows your church
Bruce Bennett
Bruce Bennett comes from a farming background and has spent all but four years of his life in country NSW. He is married to Robyn and has four adult children and (at time of writing) five grandchildren. Bruce's four non-country years were spent at Moore College where he completed a Bachelor of Divinity.
He has been at OEC as the senior minister for fourteen years, and has been in full time pastoral ministry since 1995.
Regional Evangelism
Adam Cg'ng
Adam Ch'ng is the pastor of Cross & Crown, a Reformed evangelical church in the south-eastern suburbs of Melbourne.
He is committed to cross-cultural ministry in Australia and South-East Asia, and serves on the Victorian and Asian committees of TGC Australia, as well as its editorial panel. He studied Arts/Laws at Monash University and theology at Ridley College.
Prior to entering gospel ministry, Adam worked as a lawyer and ministerial adviser in the Abbott Government.
Ch'ng
Multiethnic Evangelism
Paul Webb will be speaking at this workshop on MultiEthnic Evangelism.
Paul & Beth
Anna Moss
Anna Moss will be speaking at this workshop on Self Care and How to Not Burn Out.
Self Care & how to not burn out in ministry
Philip Percival
Philip, married to Kate, is director of Emu Music in Australia and the UK. He is also Music Minister at St Ebbe's Church, Oxford, UK. He loves helping musicians apply the Bible to ministry in the local church, and teaches theology and practical skills at conferences and seminars around the world. Philip is author of Then Sings My Soul, a book on Biblical music ministry, and composes songs for churches. He studied music at Sydney University, theology at Moore College, and has a Masters degree from Oxford University.
Establishing a music ministry
Alanna Glover
Alanna has driven the development of Emu's Word In Song online course for church musicians. She worked for a number of years as a church music director in Sydney and was a member of the band Garage Hymnal. Alanna now lives in Oxford where she is part of St Ebbe's Church, and is very involved in songwriting and graphic design and regularly leads the singing at events like the Keswick Convention. She has a Bachelor of Theology from Sydney Missionary Bible College and a Music Degree from Sydney University. She is married to Rohan (who designs airplanes!) and together they love photography, travel, crime dramas, coffee, snow and their little baby boy Hudson.
Gus McCowatt
Gus works as the Operations Manager at Geneva Push. Previously he's studied theology for a couple of years and before that worked in ad-land in agencies and client side. He and his wife Sally and new son Ryan live in Sydney and are at a new church plant, Scots Church Sydney, seeking to reach the CBD.
McCowatt
Church Communications
Rachel Vant
Rachael Vant is the Communications Manager at EV Church Erina. Rachael has a Masters in Communications and previously managed a marketing and communications team in the architectural industry. She now juggles the demands of Comms at EV Church with the demands of parenting!
She regularly fields questions from other churches about how to organise and shape a good comms strategy and support gospel ministries through good design.
Andy Hobbs
After graduating in Visual Communications, Andy has worked as a graphic & web designer helping 100s of clients bring clarity to how they communicate with their audience. He's now on staff leading Membership & Ministry at Salt Church in Wollongong.
Geoff Bailey
Geoff Brailey is a social researcher, strategic advisor and Lead Solution Designer at the internationally recognised McCrindle. As an experienced researcher, Geoff understands how evidence-based insights can inform strategy and help organisations to thrive amidst change.
From his experience in solving business problems using research, Geoff has assisted organisations to identify new target markets and improve engagement levels with staff, donors and customers. As Lead Solution Designer at McCrindle, Geoff regularly develops strategic recommendations that guide CEOs, business leaders, managers and teachers to communicate the trends and shape the culture.
Beyond his commercial work at McCrindle, Geoff is passionate about assisting churches with relevant insights to better understand their mission field and how to better engage with their communities. Geoff has more than 13 years working in youth ministry and is currently Youth and Discipleship pastor at C3 Rouse Hill, his local church which he attends with his wife Krystol and two children Olivia and Sam.
Geoff brings positivity, curiosity and strategic insights from the latest trends impacting the Australian church, and provides practical ways to respond to the trends at an organisational and individual level.
Understanding your community
Tim Edwards
Tim Edwards will be speaking at this workshop on Understanding your community.
© 2020 Reach Australia. ABN: 92 139 724 806. View our privacy policy. Phone: +61 2 8123 2192


A 57-year-old man was killed in a crash Tuesday afternoon in northwest suburban Des Plaines.
At 1:51 p.m., a red Infiniti was traveling south on Wolf Road when it crossed the Union Pacific railroad tracks near Wieboldt Drive, drifted into the northbound lanes of traffic and crashed into a red Honda CR-V, according to Des Plaines police. Witnesses reported that the crash was nearly a head-on collision.
The driver of the Honda, Kais N. Shamaun, was taken from the scene and pronounced dead just over an hour later, police and the Cook County medical examiner's office. He lived in Des Plaines.
An autopsy conducted Wednesday found Shamaun died of multiple injuries from the crash, the medical examiner's office said. His death was ruled an accident.


USA's new scarlet letter, Domestic Terrorist! Are you one? Take the fun quiz and find out!
2 Comments in Response to USA's new scarlet letter, Domestic Terrorist! Are you one? Take the fun quiz and find out!
The beauty of any and all government-sponsored fear-mongering campaigns is that today**Q**s hero is tomorrow**Q**s [insert term du jour here - i.e. Communist, Terrorist, etc.] and vice versa. And what goes up must come down.
This filmmaker spent months interviewing neo-Nazis and jihadists. Here's what she learned.


text:
Back to harsh reality for Croatia after stellar World Cup run
MOSCOW (Reuters) – It was a dream run that came agonizingly close to being crowned with a World Cup title but for Croatia now comes a return to a harsh soccer reality of sketchy infrastructure and scandals. Soccer Football – World Cup – Final – France v Croatia – Luzhniki Stadium, Moscow, Russia – July
Thailand gave diplomatic immunity to Australian medical team in…
BANGKOK (Reuters) – Thailand gave diplomatic immunity to three Australians who helped a boys' soccer team escape from a flooded cave, in case "something went wrong", its foreign minister said on Monday. Volunteers arrive to clear the campsite of the rescue mission for the 12 boys of the "Wild Boars" soccer team and their coach,
ZTE stock surges as U.S. supplier ban lifted though outlook remains…
HONG KONG (Reuters) – Investors on Monday cheered the lifting of a U.S. supplier ban on China's ZTE Corp (0763.HK), pushing its shares up 17 percent, though analysts cautioned the telecommunications equipment maker still faced many challenges as it works to revive its business. FILE PHOTO: A ZTE smart phone is pictured in this illustration
Kremlin takes Trump to task over his gas pipeline comments: RIA
MOSCOW (Reuters) – U.S. President Donald Trump's criticism of Russia's Nord Stream-2 gas pipeline to Europe is an egregious example of unscrupulous competition and it worries Moscow, Kremlin spokesman Dmitry Peskov was quoted as saying on Monday. U.S. President Donald Trump and first lady Melania Trump arrive at Helsinki-Vantaa airport in Vantaa, Finland, July 15,
Trump and Putin to hold first summit talks as twitchy West looks on
HELSINKI (Reuters) – After months of exchanging long-distance compliments, Donald Trump and Vladimir Putin sit down on Monday for their first ever summit, a potential political minefield at home for the U.S. president but a geopolitical win for his Russian counterpart. Neither side expects major breakthroughs from the talks in the Finnish capital beyond warm
Glut of property hits UK housing market in July – Rightmove
LONDON (Reuters) – Britain's housing market saw a glut of new property offered for sale this month, keeping a lid on prices at a time when sales typically suffer from a seasonal lull, property website Rightmove said on Monday. A row of houses are seen in London, Britain June 3, 2015. REUTERS/Suzanne Plunkett Real estate
Sports betting no easy fix for U.S. gaming
CLEVELAND (Reuters) – Long-struggling U.S. gambling industries hope to cash in on newly legal sports betting, but the growing wave of electronic and mobile gaming choices is considered more likely to change the face of those businesses rather than revive them. FILE PHOTO – A race-goer checks his phone under a bank of televisions showing
Planemakers to kickstart Farnborough jetliner order battle
FARNBOROUGH, England (Reuters) – Aerospace firms Airbus (AIR.PA) and Boeing (BA.N) will kickstart a contest for tens of billions of dollars of orders at the Farnborough Airshow on Monday, ensuring fireworks start early as they seek to bolster their already bulging order books. FILE PHOTO: An Airbus A350 aircraft flies in formation with Britain's Red
France lifts second World Cup after classic final
MOSCOW (Reuters) – France won the World Cup for the second time in spectacular style on Sunday as a 4-2 victory over Croatia in one of the most entertaining and action-packed finals for decades ended the battling outsiders' dreams of a first title. After an early own goal by Mario Mandzukic France's big guns delivered
TUNIS (Reuters) – Tunisia's president called on Sunday for Prime Minister Youssef Chahed to step down or seek a confidence quote if the country's political and economic crisis continues, withdrawing his support for the premier, who has clashed with the president's son. FILE PHOTO: Tunisian's President Beji Caid Essebsi attends a news conference with French
UK PM May promises to protect planemakers
LONDON (Reuters) – British Prime Minister Theresa May will on Monday seek to reassure aviation bosses that her under-fire Brexit plan won't disrupt their supply chains, and promise that the industry will flourish as Britain leaves the European Union. Britain's Prime Minister, Theresa May, appears on the BBC's Andrew Marr Show in London, Britain July
Israeli Prime Minister Replied to Letter of Armenian Patriarch of Jerusalem
The Israeli Prime Minister Benjamin Netanyahu has replied to the letter of the Armenian Patriarch of Jerusalem Archbishop Nurhan Manukyan, the chancellor of the Armenian Patriarchy of Jerusalem Hovnan Baghdasaryan posted on Facebook. The letter to Benjamin Netanyahu was signed on June 18 by the Armenian and Greek patriarchs and the Custos of the Holy
Նիկոլ Փաշինյանի ընտրությունը՝ ճակատագրով
Ժողովրդավարությունը Հայաստանի համար ոչ թե արտաքին քաղաքական կողմնորոշում է, այլ արժեքային համակարգ։ Բրյուսելում Եվրամիության ղեկավարների հետ կայացած գրեթե բոլոր հանդիպումներում հայտարարել է վարչապետ Նիկոլ Փաշինյանը։ Նա ասել է նաև, որ Հայաստանը արդեն իսկ սկսված ներքին ժողովրդավարական բարեփոխումները, այդ թվում՝ կոռուպցիայի դեմ հետևողական պայքարը շարունակելու է Եվրոպայի աջակցությամբ կամ առանց դրա։ Այս հայտարարությունները տարաբնույթ մեկնաբանությունների ու
Pakistan opens terrorism investigation against ex-PM
LAHORE, Pakistan/ISLAMABAD (Reuters) – Pakistani authorities have opened a criminal investigation into leaders of jailed ex-prime minister Nawaz Sharif's political party under an anti-terrorism law, 10 days before a hotly contested general election, according to a police report. Ousted Pakistani Prime Minister Nawaz Sharif sits on a plane after landing at the Allama Iqbal International
German transport ministry confirms official hearing on Opel emissions
FRANKFURT (Reuters) – The German transport ministry confirmed on Sunday that the country's federal motor vehicle authority (KBA) is conducting an official hearing into the emissions technology used in three models of car made by Opel. The Opel development centre is pictured in Ruesselsheim, Germany July 5, 2018. REUTERS/Ralph Orlowski Weekly Bild am Sonntag reported


National School Counselor Week, observed Feb. 2-6, honors those who have a hand in helping students succeed personally, socially and academically. In addition to counseling students one-on-one or working with them in small group settings, counselors support their schools in a variety of ways.
A man charged with kidnapping his stepdaughter after signing her out of school is still on the run.
The Lancaster County school board gave district architects the go-ahead Jan. 24 to develop plans for a classroom expansion at Indian Land Middle School.
It was only a handshake, but it became a bond.
As the second annual Teen Day in LA commences, there's much to celebrate about the first year's event.
Will shoppers in Indian Land one day be able to stroll the aisles of big box stores like Target or watch the latest blockbusters at movie chains like Regal Cinemas?
The S.C. Department of Health and Environmental Control (DHEC) has slammed Indian Land's Pressley's Recycling Center and sister companies Crisis Hill, which owns the land, and Southside Metal & Electronics Recycling with a civil lawsuit for repeated violations of state environmental laws.
A pedestrian was seriously injured, and flown to a Charlotte hospital Monday afternoon, Jan. 26, after he was struck by a patrol car while trying to flag down a deputy sheriff.


The seed for IT Schools Africa (ITSA) was sown as an old computer was thrown into a skip. Monis Khalifa, ITSA's IT Manager watched as the computer was dumped and thought to himself, is there not a better way to recycle old computers? He mentioned this to his friend Michael Ratcliffe, and between the two of them, they decided that there definitely was a better way - to send them to African schools!
Subsequently IT Schools Africa was established in 2004; operations started the following year with the renovation of a warehouse in Cheltenham and from there the first used computers were shipped in a container to Africa.
The same year the charity also began working with the Inside-Out Trust, establishing its first prison refurbishment workshop in HMP Winchester.
In 2006 ITSA formed a partnership with Computers for African Schools (CFAS). ITSA took over responsibility from CFAS for the country programmes in Malawi, Zambia and Zimbabwe in 2011. During that year the number of computers sent to Africa passed the 30,000 mark.
In 2013 we donated our first e-Learning Centre to Chipasula Secondary School and in 2017 that number had risen to 16.
We are proud to announce that at the start of 2019 we have donated a total of 24 e-Learning labs to secondary schools, transforming education and future opportunities for the students.
Read more about how we work in the UK and our partners in Africa. Or watch our video!


What is the current size of China's outbound tourism market?
What are the future growth predictions for China's outbound tourism market?
What are the macro-economic and industry factors shaping dynamic growth in China's outbound market?
How are NTOs responding to the needs of China's tourists?
How are the infiltration of digital technology and changes in government legislation impacting China's outbound market potential?
Who is the Chinese outbound traveller?


The owner of this blog is not compensated to provide opinion on products, services, websites and various other topics. The views and opinions expressed on this blog are purely mine. Any product claim, statistic, quote or other representation about a product or service should be verified with the manufacturer or provider.
All Content Published on Homemade and Happy becomes property of Homemade and Happy and cannot be replicated, re-used or copied without prior, written consent.
Please see my full terms of service here.


text:
Q: value error trying to install numpy on windows 8 I am trying to set up a python enviorenment on a computer running Windows 8.1. I have installed Python 3.4 successfully, but when I try to install numpy with pip I run in to the following error:
raise ValueError<str<list<result.keys<>>>>
ValueError: ['path']

In looking around for similar problems I have found and tried this solution: https://stackoverflow.com/a/10558328/2362877
Taking in to account that I have Visual Studio 2010 installed.
I have also tried running vcvarsal.bat to no avail.
I would appreciate any assistance with this issue, and if more information is required just let me know.

A: For Windows, it is easier to download the binary installer for numpy; especially if you have installed Python from the official .msi installer.

redpajama_set_name: RedPajamaStackExchange


iOS 7 is largely expected to make an appearance at this year's WWDC, and under the influence of Jony Ive, some are expecting more radical changes than previously seen under the guidance of Scott Forstall. Ive doesn't strike us as somebody who finds it difficult to dream up new designs, but if he and his team were ever stuck, they could always turn to the multitude of designs offered by Apple fans across the world. We've seen many an iOS 7 concept during the past six months, but this demonstration of a revamped "App Switcher" concept by one Jesse Head has left us relatively awestruck.
The app switcher / multitasking bar – whatever you want to call it – has been the subject of increased scrutiny from the get-go. The problems? It's one dimensional, there's no preview functionality, it's difficult to close many apps in one hit.. the list is endless. Many have tried to improve the situation, with standouts including the jailbreak tweak Auxo, but with Apple always steadfast in stopping the jailbreak scene in its tracks, it's not a viable, long-term solution.
What would be great, is if Apple and Jony Ive would overhaul the system, and as we continue to wait for WWDC'13, Jesse Head's solution does a great job of presenting an innovative system. Featuring live previews, it takes the idea of the aforementioned Auxo tweak, but goes one further by bringing it to the full-screen. This dynamic, faster app-switching does wonders for the user interface, and in a practical sense, works a great deal better than the current configuration.
The active, liveness of the previews is somewhat akin to Windows Phone 8 with its Live Tiles, and would mean users wouldn't have to categorically open every app in order to check for any changes.
As we continue to hope for some big alterations to iOS in 2013, one suspects this is a step too far. Moreover, the bottom bar, which comes complete with SBSettings-like toggles, may bamboozle the average user, so while we may well continue to dream, don't expect anything like this to be arriving anytime soon.
What do you think of the App Switcher – would it dramatically improve the look and feel of iOS? Or is the current app switcher just fine as it is? Please do share your thoughts via the usual mediums below!


text:
Q: How to code template variables transform uppercase|lowercase|captalize in Netbeans? I need to convert same variables to uppercase|lowercase|captalize.
/**
 * @package     ${1 default="Hello"}
 * @subpackage  ${com}_${1 capitalize=false}
 * @copyright   Copyright (C) 2012 ${AtomTech}, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

// No direct access
defined('_JEXEC') or die;

How can I do this?

A: Is very easy to solve it, see:
${1/(.+)/\L\1/g}
${var_name/regex/format_string/options}
var_name = 1
regex = (.+)
format_string = \L\1 (can use l|L|u|U)
options = g
See more in http://sublimetext.info/docs/en/reference/snippets.html

A: Uppercase
${name?upper_case}

Lowercase
${name?lower_case}

Capitalize
${name?capitalize}

Netbeans uses FreeMarker for its template language.
The documentation specific to your request is on the page about strings.


text:
Vienna's gay-themed traffic signals to stay permanently
By The Associated Press | Posted - May 19, 2015 at 9:32 a.m.
VIENNA (AP) — Vienna's gay-themed pedestrian traffic lights are here to stay.
Instead of the usual stick man, the lights show couples — a man and a woman, two women or two men. Set up recently at 47 crossings, they were to be taken down in June, after the end of several gay-friendly events.
But Vienna Councilwoman Maria Vassilakou, in charge of traffic issues, says they will now remain. State broadcaster ORF quoted her Tuesday as saying they have already achieved cult status.
The right-wing Freedom Party says it will lodge a criminal complaint against Vassilakou for allegedly contravening traffic regulations and wasting taxpayers' money at a cost of 63,000 euros ($70,000.)
But a Facebook page calling for them to be kept has gathered more than 20,000 likes.
North of the border in Germany, Munich's city council voted Tuesday to install its own traffic signals based on those in Vienna showing gay, lesbian and heterosexual couples in early July to coincide with gay-pride events in the city, the dpa news agency reported.
It has not yet been decided exactly where the estimated 50 signals will be installed, nor how long they will remain.
"This is an important signal, in the truest sense of the word, against homophobia," said Munich city council member Christian Vorlaender.
In Japan, pet fish playing Nintendo Switch run up bill on owner's credit card
US infiltrates big ransomware gang: 'We hacked the hackers'
Will Russian athletes compete at next year's Paris Olympics? Here's what the IOC is considering


For some people, they start on the track, others the woods or the football field. For me, it was the backyard, the front yard, the soccer field, the baseball tee (well that was more for cartwheels), these were all areas where I began running. But running to me was never a sport. It was something I did while taking part in other sports or just playing. It would not be until the third grade when the mandatory presidential physical fitness test was put into place, that I would realize my semi-enjoyment for running.
After clocking in a 7:30 mile for a third grader, being the first female to finish, and coming in third overall, I realized that I could run. When I later told my mom about my success, she, of course, asked if I wanted to go running with her. My mother was a runner, age grouper to be exact, but was also successful at running growing up. What I would later find out was that I came from a family of runners. My great-grandfather would run races and finish well, my uncle was the runner of the '80s for the Baltimore area, my mother was the only female on the high school track and cross country team. It was in my blood, so to speak.
But the funny thing was, I still was not THAT interested. I did sign up for local one-milers and 5Ks, but when I did not win, I was REALLY not that interested. Why? Well, I was 9! I was incredibly competitive (ie if I was not good at a sport, I stopped it all together) and hyperactive to the nines. My mind was constantly on the move. As a result, it would only be in school, where I would run.
It was not until I graduated high school that I began to appreciate the sport. I ran for exercise, to compete, my sanity, and now it's become a combination of those three as well as the fact that I love it! I may not be an elite runner like my uncle was, but I do pretty well.
I was not forced into running as a child. I look back now and kind of wish I had tried. It probably would not have worked out because I wasn't that interested in it especially if I did not win, but maybe that's why I love it so much now. I admire those parents whose children are interested in the sport because they watch their parents compete in marathons and triathlons. It makes me smile seeing the up-and-coming generations getting out there and running.
I was a kid who ran, and that worked for me.


text:
from __future__ import (division, print_function, absolute_import,
                        unicode_literals)

'''

Stellab (Stellar Abundances)

Fonctionality
=============

This class plots observational stellar abundances data for different galaxies.

Made by
=======

JUNE2015: B. Cote

Usage
=====

Import the module:

>>> import stellab

Load the data:

>>> s = stellab.stellab()

Plot [Mg/Fe] vs [Fe/H] for the Fornax dwarf spheoridal galaxy:

>>> s.plot_spectro(xaxis='[Fe/H]', yaxis='[Mg/Fe]', galaxy='fornax')

See the Sphinx documentation for more options

'''

# Import standard packages
import matplotlib
import matplotlib.pyplot as plt
import os

# Define where is the working directory
# This is where the NuPyCEE code will be extracted
nupy_path = os.path.dirname(os.path.realpath(__file__))

# Import NuPyCEE codes
import NuPyCEE.read_yields as ry

class stellab():

    '''
    See the plot_spectro() function to plot the data.

    '''

    # Input paramters
    def __init__(self):

        # read abundance data library via
        # index file abundance_data_library.txt
        # creates self.paths, self.paths_s, self.cs, self.leg
        self.read_abundance_data_library(os.path.join(nupy_path, "stellab_data",\
                "abundance_data_library.txt"))

        # Declaration of the name of available galaxies
        #self.galaxy_name = []
        #self.galaxy_name.append('milky_way')
        #self.galaxy_name.append('sculptor')
        #self.galaxy_name.append('fornax')
        #self.galaxy_name.append('carina')
        #self.galaxy_name.append('lmc')

        # Declaration of arrays containing information on every data set
        self.elem_list = []  # Available elements
        self.elem      = []  # Nominator and denominator of each abundance ratio
        self.ab        = []  # Stellar abundances
        #self.paths     = []  # Path to the stellar abundances file
        #self.paths_s   = []  # Path to the solar values
        self.solar     = []  # Solar values used
        #self.cs        = []  # Color and symbol
        #self.leg       = []  # Legend

        ## List of all the solar values used in the data sets
        #for i_path in range(0,len(self.paths)):
        #    self.paths_s.append(self.paths[i_path]+'_s')

        # For every data set ...
        for i_entry in range(0,len(self.paths)):

            # Copy the stellar abundaces
            self.__read_data_file(self.paths[i_entry], i_entry)

            # Copy the solar values used for the normalization
            self.__read_solar_values(self.paths_s[i_entry], i_entry)

            # Copy the list of available elements
            self.elem_list.append([])
            for i_elem in range(0,len(self.solar[i_entry])):
                self.elem_list[i_entry].append(self.solar[i_entry][i_elem][0])

        # Declaration of arrays containing information for every solar reference
        self.paths_norm = []  # Path of the files
        self.sol_norm   = []  # Solar abundance "eps_x = log(n_x/n_H) + 12"

        # List of all the reference solar normalization (path to file)
        self.paths_norm.append('Anders_Grevesse_1989')
        self.paths_norm.append('Grevesse_Noels_1993')
        self.paths_norm.append('Grevesse_Sauval_1998')
        self.paths_norm.append('Asplund_et_al_2009')
        self.paths_norm.append('Asplund_et_al_2005')
        self.paths_norm.append('Lodders_et_al_2009')

        # For every solar reference ...
        for i_sol in range(0,len(self.paths_norm)):

            # Copy the solar values
            self.__read_solar_norm(self.paths_norm[i_sol], i_sol)

    ##############################################
    #        Read abundance data library         #
    ##############################################
    def read_abundance_data_library(self,filename):

        # open index file
        f=open(filename)
        lines=f.readlines()
        f.close()

        # Declaration of the name of available galaxies

        # name of galaxy
        self.galaxy_name = []
        # color + symbol
        self.cs=[]
        # legend
        self.leg=[]
        # path to the stellar abundances file
        self.paths = []
        for k in range(len(lines)):
            line = lines[k]
            #ignore header
            if k == 0:
                continue
            #if commented line
            if line[0] == '#':
                continue
            # Declaration of the name of available galaxies
            if line[0] == 'H':
                galaxy=line[1:].strip()
                self.galaxy_name.append(galaxy)
                #print ('found galaxy ',galaxy)
            # read data set
            else:
                #print (line)
                path = 'stellab_data/'+line.split('&&')[0].strip()
                leg = line.split('&&')[1].strip()
                cs = line.split('&&')[2].strip()
                self.paths.append(path)
                self.leg.append(leg)
                self.cs.append(cs)
                #print ('path : ',path)
                #print ('leg : ',leg)

        self.paths_s   = []  # Path to the solar values

        # List of all the solar values used in the data sets
        for i_path in range(0,len(self.paths)):
            self.paths_s.append(self.paths[i_path]+'_s')

    ##############################################
    #               Read Data File               #
    ##############################################
    def __read_data_file(self, file_path, i_entry):

        # Create an entry
        self.elem_list.append([])
        self.elem.append([])
        self.ab.append([])

        # Open the data file
        with open(os.path.join(nupy_path, file_path + ".txt"), "r") as data_file:

            # Read and split the first line (header)
            line_1_str = data_file.readline()
            ratios_f = [str(x) for x in line_1_str.split()]

            # Extract the X and Y in the [X/Y] ratio
            err_available = self.__extract_x_y(ratios_f, i_entry)

            # Get the number of ratios
            nb_ratios = len(self.elem[i_entry])

            # For every remaining line (for each star) ...
            i_star = 0
            for line_2_str in data_file:

                # Split the line
                ab_f = [float(x) for x in line_2_str.split()]

                # Create a star entry
                self.ab[i_entry].append([])

                # For every abundance ratio ...
                i_ab = 0
                for i_ratio in range(0,nb_ratios):

                    # Copy the ratio (stellar abundance)
                    self.ab[i_entry][i_star].append([ab_f[i_ab],0.0])
                    i_ab += 1

                    # Add the error bars if any
                    if err_available:
                      if ab_f[i_ab] == -30.0:
                        self.ab[i_entry][i_star][i_ratio][1] = 0.0
                      else:
                        self.ab[i_entry][i_star][i_ratio][1] = ab_f[i_ab]
                      i_ab += 1

                # Move to the next line (next star)
                i_star += 1

        # Close the file
        data_file.close()

    ##############################################
    #             Read Solar Values              #
    ##############################################
    def __read_solar_values(self, file_path, i_entry):

        # Create an entry
        self.solar.append([])

        # Open the data file
        with open(os.path.join(nupy_path, file_path + ".txt"), "r") as data_file:

            # For every line (for each element) ...
            i_elem = 0
            for line_1_str in data_file:

                # Create an entry
                self.solar[i_entry].append([])

                # Split the line
                split = [str(x) for x in line_1_str.split()]

                # Copy the element and the solar value
                self.solar[i_entry][i_elem].append(str(split[0]))
                self.solar[i_entry][i_elem].append(float(split[1]))

                # Go to the next element
                i_elem += 1

        # Close the file
        data_file.close()

    ##############################################
    #              Read Solar Norm               #
    ##############################################
    def __read_solar_norm(self, file_path, i_sol):

        # Create an entry
        self.sol_norm.append([])

        # Open the data file
        with open(os.path.join(nupy_path, "stellab_data", "solar_normalization",\
            file_path + ".txt"), "r") as data_file:

            # For every line (for each element) ...
            i_elem = 0
            for line_1_str in data_file:

                # Create an entry
                self.sol_norm[i_sol].append([])

                # Split the line
                split = [str(x) for x in line_1_str.split()]

                # Copy the element and the solar value
                self.sol_norm[i_sol][i_elem].append(str(split[1]))
                self.sol_norm[i_sol][i_elem].append(float(split[2]))

                # Go to the next element
                i_elem += 1

        # Close the file
        data_file.close()

    ##############################################
    #                Extract X Y                 #
    ##############################################
    def __extract_x_y(self, ratios_f, i_entry):

        # Variable that indicates if the file contains error bars
        err_available = False

        # For each available ratios [X/Y] ...
        for i_ratio in range(0,len(ratios_f)):

            # Look if the ratio is actually an error bar
            if ratios_f[i_ratio] == 'err':
                err_available = True

            # If it is not an error bar ...
            else:

                # Get X and Y
                x_extxt, y_extxt = self.__get_x_y(ratios_f[i_ratio])

                # Copy the extracted X and Y strings
                self.elem[i_entry].append([x_extxt,y_extxt])

        # Return wether or not error bars were present in the input string
        return err_available

    ##############################################
    #                  Get X Y                   #
    ##############################################
    def __get_x_y(self, str_ratio):

        # Initialisation of the numerator X and the denominator Y
        x_in = ''
        y_in = ''
        is_num = True

        for i_str in range(0,len(str_ratio)):
            if str_ratio[i_str] == '/':
                is_num = False
            elif (not str_ratio[i_str] == '[') and \
                 (not str_ratio[i_str] == ']'):
                if is_num:
                    x_in += str_ratio[i_str]
                else:
                    y_in += str_ratio[i_str]

        # Return the X and Y of the [X/Y] ratio
        return x_in, y_in

    ##############################################
    #                Plot Spectro                #
    ##############################################
    def plot_spectro(self,fig=-1, galaxy='', xaxis='[Fe/H]', yaxis='[Mg/Fe]', \
                   fsize=[10,4.5], fontsize=14, rspace=0.6, bspace=0.15,\
                   labelsize=15, legend_fontsize=14, ms=6.0, norm='', obs='',\
                   overplot=False, return_xy=False, show_err=False, \
                   show_mean_err=False, stat=False, flat=False,abundistr=False,show_legend=True, \
                   sub=1, sub_plot=False, alpha=1.0, lw=1.0):

        '''
        This function plots observational data with the spectroscopic notation:
        [X/Y] = log10(n_X/n_Y) - log10(n_X/n_Y)_solar where 'n_X' and 'n_Y' are
        the number densities of elements X and Y.

        Parameters
        ---------

        galaxy : string

            Name of the target galaxy.  The code then automatically selects
            the corresponding data sets (when available).

            Choices : 'milky_way', 'sculptor', 'carina', 'fornax'

            Default value : 'milky_way'

        xaxis : string

            Elements on the x axis in the form of '[X/Y]'.

            Default value : '[Fe/H]'

        yaxis : string

            Elements on the y axis in the form of '[X/Y]'.

            Default value : '[Mg/Fe]'

        norm : string

            Common solar normalization used to scale all the data.  Use the
            list_solar_norm() function for a list of available normalizations.
            When not specified, each data uses the solar normalization of the
            reference paper.

            Example : norm='Anders_Grevesse_1989'

        obs : string array

            Personal selection of observational data.  Use the list_ref_papers()
            function for a list of availble data sets.  When not specified, all
            the available data for the selected galaxy will be plotted.

            Example : obs=['milky_way_data/Venn_et_al_2004_stellab',
            'milky_way_data/Hinkel_et_al_2014_stellab']

        show_err : boolean

            If True, show error bars when available in the code.

            Default value : False

        show_mean_err : boolean

            If True, print the mean X and Y errors when error bars are available
            in the code.

            Default value : False

        return_xy : boolean

            If True, return the X and Y axis arrays instead of plotting the data.

            Default value = False

            Example : x, y = stellab.plot_spectro(return_xy=True)

        fsize : 2D float array

            Figure dimension/size.

        fontsize : integer

            Font size of the numbers on the X and Y axis.

        rspace : float

            Extra space on the right for the legend.

        bspace : float

            Extra space at the bottom for the Y axis label.

        labelsize : integer

            Font size of the X and Y axis labels.

        legend_fontsize : integer

            Font size of the legend.

        Examples
        ----------

        >>> stellab.plot_spectro(yaxis='[Ti/H]',xaxis='[Mg/H]',galaxy='sculptor',norm='Anders_Grevesse_1989',show_err=True)

        '''

        # Copy the marker size
        ms_copy = ms
        lw_copy = lw

        # Extract the X and Y of the input [X/Y]
        xx, yx = self.__get_x_y(xaxis)
        xy, yy = self.__get_x_y(yaxis)
        elem_in = ([xx,yx], [xy,yy])

        # Initialization of the variables used to calculate the average error
        sum_x = 0.0
        sum_y = 0.0
        sum_count = 0

        # Initialization of the variables used for statistical plot
        if stat:
            xy_plot_all = []
            xy_plot_all.append([])
            xy_plot_all.append([])

        # Show the frame of the plot
        if not overplot and not return_xy and not sub_plot:
            if fig>=0:
                plt.figure(fig,figsize=(fsize[0],fsize[1]))
            else:
                plt.figure(fig,figsize=(fsize[0],fsize[1]))

        # If data need to be re-normalized ...
        re_norm = False
        if len(norm) > 0:

            # Get the array index associated with the solar normalization
            i_re_norm = self.__get_i_re_norm(norm)

            # Look if the normalization reference is valid ...
            if not i_re_norm == -1:
                re_norm = True

            # Warning message if the reference is not valid
            else:
                print ('!! Warning - The solar normalization is not valid !!')

        # Return the list of index of the wanted data set
        # If a specif set of references is choosen ...
        if len(obs) > 0:

            # Get the indexes for the wanted references
            i_obs = self.__get_i_data_set(obs)

        # If a specific galaxy is choosen ...
        elif len(galaxy) > 0:

            # Get the indexes of the wanted galaxy
            i_obs = self.__get_i_data_galaxy(galaxy)

        # If the default mode is used ...
        else:

            # Use the Milky Way
            i_obs = self.__get_i_data_galaxy('milky_way')
        # Keep the number of indexes in memory
        len_i_obs = len(i_obs)

        # Prepare the returning array if the option is choosen
        if return_xy:
            ret_x = []
            ret_y = []
            ret_x_err = []
            ret_y_err = []
            #store index of stars of all data sets
            ret_star_i = []

        # For every data set ...
        for i_obs_index in range(0,len_i_obs):

          # Copy the data set index
          i_ds = i_obs[i_obs_index]

          #store temporary index of stars for current data set
          ret_star_i_tmp = []

          # If the current data set contains the input elements ...
          if elem_in[0][0] in self.elem_list[i_ds] and \
             elem_in[0][1] in self.elem_list[i_ds] and \
             elem_in[1][0] in self.elem_list[i_ds] and \
             elem_in[1][1] in self.elem_list[i_ds]:

            # Variable that tells if the ratio can be plotted
            ok_for_plot = True

            # Local variables
            xy_plot  = [[0.0 for ii  in range(len(self.ab[i_ds]))] \
                             for ijk in range(2)]
            err_plot = [[0.0 for ii  in range(len(self.ab[i_ds]))] \
                             for ijk in range(2)]

            # Common loop for the x-axis and the y-axis ...
            for i_x_y in range(0,2):

              # Find the corresponding entry in the data set for the numinator
              i_num, den_ok = self.__find_num(i_ds, i_x_y, elem_in)

              # If a perfect match was found ...
              if den_ok:

                  # Copy the current data set for the current input element ratio
                  for i_star in range(0,len(self.ab[i_ds])):
                      xy_plot[i_x_y][i_star]  = self.ab[i_ds][i_star][i_num][0]
                      err_plot[i_x_y][i_star] = self.ab[i_ds][i_star][i_num][1]
                      ret_star_i_tmp.append(i_star)
              # If the data need to be manipulated to recover the wanted ratio ...
              else:

                  # Find the corresponding entry in the data for the denominator
                  i_denom, div = self.__find_denom(i_ds, i_x_y, i_num, elem_in)

                  # Verify if the ratio can be plotted
                  if i_denom == -1:
                      ok_for_plot = False

                  else:

                      # If a division is needed to recover the wanted ratio ...
                      # Want [A/C] with nominator [A/B] and denominator [C/B]
                      if div:

                          # Calculate the ratio for each star in the data set ...
                          for i_star in range(0,len(self.ab[i_ds])):
                              if self.ab[i_ds][i_star][i_num][0] == -30.0 or \
                                 self.ab[i_ds][i_star][i_denom][0] == -30.0 :
                                  xy_plot[i_x_y][i_star] = -30.0
                                  ret_star_i_tmp.append(i_star)
                              else:
                                  xy_plot[i_x_y][i_star] = \
                                    self.ab[i_ds][i_star][i_num][0] - \
                                      self.ab[i_ds][i_star][i_denom][0]
                                  ret_star_i_tmp.append(i_star)

                      # If a multiplication is needed to recover the input ratio ..
                      # Want [A/C] with nominator [A/B] and denominator [B/C]
                      else:

                          # Calculate the ratio for each star in the data set ...
                          for i_star in range(0,len(self.ab[i_ds])):
                              xy_plot[i_x_y][i_star] = \
                                self.ab[i_ds][i_star][i_num][0] + \
                                  self.ab[i_ds][i_star][i_denom][0]
                              ret_star_i_tmp.append(i_star)

              # If a re-normalization is needed ...
              if re_norm and ok_for_plot:

                  # Calculate the wanted solar normalization
                  # eps = log(n_X/n_Y) + 12
                  eps_x = self.__get_eps(i_re_norm,elem_in[i_x_y][0],True)
                  eps_y = self.__get_eps(i_re_norm,elem_in[i_x_y][1],True)
                  sol_wanted = eps_x - eps_y

                  # Calculate the solar normalization used in data
                  eps_x = self.__get_eps(i_ds,elem_in[i_x_y][0],False)
                  eps_y = self.__get_eps(i_ds,elem_in[i_x_y][1],False)
                  sol_data = eps_x - eps_y

                  # If the solar values where available in the ref. paper ...
                  if not eps_x == -30.0 and not eps_y == -30.0:

                      # Indication of the success of re-normalization
                      sol_ab_found = True

                      # For every star ...
                      for i_star in range(0,len(self.ab[i_ds])):

                          # Correct the normalization
                          xy_plot[i_x_y][i_star] = \
                              xy_plot[i_x_y][i_star] + sol_data - sol_wanted

                  # Warning message if the re-normalization cannot be made
                  else:
                      sol_ab_found = False
                      if i_x_y == 0:
                          warn_ratio = xaxis
                      else:
                          warn_ratio = yaxis
                      if eps_x == -30.0 and eps_y == -30.0:
                          warn_el = elem_in[i_x_y][0]+' and '+elem_in[i_x_y][1]
                          print ('Solar values for '+warn_el+' not found in ' + \
                          self.leg[i_ds]+'.  '+warn_ratio+ ' was not modified.')
                      else:
                          if eps_x == -30.0:
                              warn_el = elem_in[i_x_y][0]
                          else:
                              warn_el = elem_in[i_x_y][1]
                          print ('Solar value for '+warn_el+' not found in ' + \
                          self.leg[i_ds]+'.  '+warn_ratio + ' was not modified.')
                      self.leg[i_ds]

            #####################################################

            # If ratio is available
            if ok_for_plot:

                # If a plot is generated
                if not return_xy:

                    # Reduce the size of APOGEE data
                    if self.paths[i_ds] == 'milky_way_data/APOGEE_stellab':
                        ms = 1
                        lw = 1
                    else:
                        ms = ms_copy
                        lw = lw_copy

                    if re_norm and not sol_ab_found:
                        leg_temp = self.leg[i_ds]+' **'
                    else:
                        leg_temp = self.leg[i_ds]
                    if stat:
                        xy_plot_all[0].append(xy_plot[0])
                        xy_plot_all[1].append(xy_plot[1])
                    else:
                      if show_err:
                        if show_legend:
                          if sub_plot:
                            sub.errorbar(xy_plot[0], xy_plot[1], \
                            xerr=err_plot[0], yerr=err_plot[1],
                            fmt=self.cs[i_ds][0], ecolor=self.cs[i_ds][1], \
                            color=self.cs[i_ds][1], label=leg_temp, markersize=ms, \
                            alpha=alpha, linewidth=lw)
                          else:
                            plt.errorbar(xy_plot[0], xy_plot[1], \
                            xerr=err_plot[0], yerr=err_plot[1],
                            fmt=self.cs[i_ds][0], ecolor=self.cs[i_ds][1], \
                            color=self.cs[i_ds][1], label=leg_temp, markersize=ms, \
                            alpha=alpha, linewidth=lw)
                        else:
                          if sub_plot:
                            sub.errorbar(xy_plot[0], xy_plot[1], \
                            xerr=err_plot[0], yerr=err_plot[1],
                            fmt=self.cs[i_ds][0], ecolor=self.cs[i_ds][1], \
                            color=self.cs[i_ds][1], markersize=ms, alpha=alpha, \
                            linewidth=lw)
                          else:
                            plt.errorbar(xy_plot[0], xy_plot[1], \
                            xerr=err_plot[0], yerr=err_plot[1],\
                            fmt=self.cs[i_ds][0], ecolor=self.cs[i_ds][1], \
                            color=self.cs[i_ds][1], markersize=ms, alpha=alpha, \
                            linewidth=lw)
                      else:
                        if show_legend:
                          if sub_plot:
                            sub.plot(xy_plot[0],xy_plot[1],self.cs[i_ds],\
                            label=leg_temp, markersize=ms, alpha=alpha, \
                            linewidth=lw)
                          else:
                            plt.plot(xy_plot[0],xy_plot[1],self.cs[i_ds],\
                            label=leg_temp, markersize=ms, alpha=alpha, \
                            linewidth=lw)
                        else:
                          if sub_plot:
                            sub.plot(xy_plot[0],xy_plot[1],self.cs[i_ds], \
                                  markersize=ms, alpha=alpha, linewidth=lw)
                          else:
                            plt.plot(xy_plot[0],xy_plot[1],self.cs[i_ds], \
                                  markersize=ms, alpha=alpha, linewidth=lw)
                      if show_legend:
                        if sub_plot:
                          sub.legend()
                        else:
                          plt.legend()

                # If the data need to be returned ...
                else:

                    # Add the data set to the returning arrays
                    for i_ret in range(0,len(xy_plot[0])):
                        if xy_plot[0][i_ret] < 5 and xy_plot[0][i_ret] > -5 and \
                           xy_plot[1][i_ret] < 5 and xy_plot[1][i_ret] > -5:
                            ret_x.append(xy_plot[0][i_ret])
                            ret_y.append(xy_plot[1][i_ret])
                            ret_x_err.append(err_plot[0][i_ret])
                            ret_y_err.append(err_plot[1][i_ret])
                            ret_star_i.append(ret_star_i_tmp[i_ret])

            # If the average error need to be calculated...
            if show_mean_err:

                # For every data point ...
                for i_dp in range(0,len(self.ab[i_ds])):

                    # Add the error to the sum
                    if not xy_plot[0][i_dp] == -30.0 and \
                       not xy_plot[1][i_dp] == -30.0 and \
                       not err_plot[0][i_dp] == 0.0 and \
                       not err_plot[1][i_dp] == 0.0:
                         sum_x += err_plot[0][i_dp]
                         sum_y += err_plot[1][i_dp]
                         sum_count += 1

        # Calculate the average error
        if show_mean_err and not return_xy:
            if sum_count > 0:
                print ('Mean',xaxis,'error =',sum_x/sum_count)
                print ('Mean',yaxis,'error =',sum_y/sum_count)

        # Provide a standard plot
        if not return_xy:

            # If plot median, 68%, 95%,
            if stat:

                # Build the x_bin
                x_bin = []
                y_bin = []
                dx_bin = 0.3
                x_max = 1.0
                xx = -5.0
                while xx <= x_max:
                    x_bin.append(xx)
                    y_bin.append([])
                    xx += dx_bin

                # Put the y data in the right bin
                for xi in range(0,len(xy_plot_all[0])):
                    for xxi in range(0,len(xy_plot_all[0][xi])):
                        for xb in range(len(x_bin)-1):
                            if x_bin[xb] <= xy_plot_all[0][xi][xxi] < x_bin[xb+1]:
                              if xy_plot_all[1][xi][xxi] > -10.0:
                                y_bin[xb].append(xy_plot_all[1][xi][xxi])

                y_stat = []
                for i in range(0,7):
                    y_stat.append([])
                for xb in range(len(x_bin)-1):
                    x_bin[xb] += 0.5 * dx_bin
                    y_temp = sorted(y_bin[xb])
                    if len(y_temp) > 0:
                        i_med = int(len(y_temp)/2)
                        y_stat[0].append(y_temp[0])
                        y_stat[1].append(y_temp[i_med - int(len(y_temp)*0.475)])
                        y_stat[2].append(y_temp[i_med - int(len(y_temp)*0.340)])
                        y_stat[3].append(y_temp[i_med])
                        y_stat[4].append(y_temp[i_med + int(len(y_temp)*0.340)])
                        y_stat[5].append(y_temp[i_med + int(len(y_temp)*0.475)])
                        y_stat[6].append(y_temp[-1])
                    else:
                        y_stat[0].append(-30.0)
                        y_stat[1].append(-30.0)
                        y_stat[2].append(-30.0)
                        y_stat[3].append(-30.0)
                        y_stat[4].append(-30.0)
                        y_stat[5].append(-30.0)
                        y_stat[6].append(-30.0)

                if flat:
                    for i in range(0,len(y_stat[0])):
                        y_stat[0][i] -= y_stat[3][i]
                        y_stat[1][i] -= y_stat[3][i]
                        y_stat[2][i] -= y_stat[3][i]
                        y_stat[4][i] -= y_stat[3][i]
                        y_stat[5][i] -= y_stat[3][i]
                        y_stat[6][i] -= y_stat[3][i]
                        y_stat[3][i] = 0.0

                del x_bin[-1]
                plt.fill_between(x_bin,y_stat[0],y_stat[-1],color='0.95')
                plt.plot(x_bin,y_stat[1],linestyle='-', color='w',linewidth=3)
                plt.plot(x_bin,y_stat[1],linestyle=':', color='k',linewidth=1.5)
                plt.plot(x_bin,y_stat[2],linestyle='-', color='w',linewidth=3)
                plt.plot(x_bin,y_stat[2],linestyle='--',color='k',linewidth=1)
                plt.plot(x_bin,y_stat[3],               color='w',linewidth=3)
                plt.plot(x_bin,y_stat[3],               color='k',linewidth=1.5)
                plt.plot(x_bin,y_stat[4],linestyle='-' ,color='w',linewidth=3)
                plt.plot(x_bin,y_stat[4],linestyle='--',color='k',linewidth=1)
                plt.plot(x_bin,y_stat[5],linestyle='-', color='w',linewidth=3)
                plt.plot(x_bin,y_stat[5],linestyle=':', color='k',linewidth=1.5)

            if not sub_plot:
                ax = plt.gca()
                plt.xlabel(xaxis)
                plt.ylabel(yaxis)
                matplotlib.rcParams.update({'font.size': 14})
                self.__fig_standard(ax=ax, fontsize=fontsize, labelsize=labelsize, \
                rspace=rspace, bspace=bspace, legend_fontsize=legend_fontsize)

        # Return the data if the option is choosen
        else:
            if show_mean_err and show_err:
              if sum_count > 0:
                return ret_x, ret_y, ret_x_err, ret_y_err, \
                       sum_x/sum_count, sum_y/sum_count
              else:
                return ret_x, ret_y, ret_x_err, ret_y_err, sum_count, sum_count
            if abundistr:
                return ret_x, ret_y, ret_x_err, ret_y_err,ret_star_i

            return ret_x, ret_y

    ##############################################
    #               Get i Data Set               #
    ##############################################
    def __get_i_data_set(self, obs):

        # Declaration of the list of index to be returned
        i_return = []

        # For every wanted data set ...
        for i_gids in range(0,len(obs)):

            # Initialization of the index
            i_search = -1

            # Look every available data set
            for i_look in range(0,len(self.paths)):

                # Add the index if the data set is found
                if self.paths[i_look] == obs[i_gids]:
                    i_search = i_look
                    i_return.append(i_look)

            # Warning message if the data set is not available
            if i_search == -1:
                print ('!! Warning - '+obs[i_gids]+' not available !!')

        # Return a bad index if the wanted normalization is not available
        return i_return

    ##############################################
    #              Get i Data Galaxy             #
    ##############################################
    def __get_i_data_galaxy(self, galaxy):

        # Declaration of the list of index to be returned
        i_return = []

        # Verify is the galaxy is available
        if not galaxy in self.galaxy_name:
            print ('!! Warning - '+galaxy+' not available !!')
        else:

            # Keep the number of characters in the name of the galaxy
            nb_char = len(galaxy)

            # Look every available data set
            for i_look in range(0,len(self.paths)):

                # Extract the nb_char first characters of the data set name
                ds_name = ''
                if len(self.paths[i_look]) > nb_char:
                    for i_extr in range(0,nb_char):
                        ds_name += self.paths[i_look][i_extr+13]

                # Add the index if it's for the right galaxy
                if ds_name == galaxy:
                    i_return.append(i_look)

        # Return a bad index if the wanted normalization is not available
        return i_return

    ##############################################
    #                Get i Re-Norm               #
    ##############################################
    def __get_i_re_norm(self, norm):

        # For every available standard solar normalization ...
        for i_irn in range(0,len(self.paths_norm)):

            # Return the index if the file is found
            if self.paths_norm[i_irn] == norm:
                return i_irn

        # Return a bad index if the wanted normalization is not available
        return -1

    ##############################################
    #                  Find Num                  #
    ##############################################
    def __find_num(self, i_ds, i_x_y, elem_in):

        # Arbitraty value for the index, just in case nothing is found
        i_num = -1

        # For each element ratio in the data set ...
        for i_elem in range(0,len(self.elem[i_ds])):

            # Copy the index if the right numinator is found
            if self.elem[i_ds][i_elem][0] == elem_in[i_x_y][0]:
                i_num = i_elem

                # Look for a perfect match
                if self.elem[i_ds][i_elem][1]==elem_in[i_x_y][1]:

                    # Return the entry index (the exact wanted ratio is found)
                    return i_num, True

        # Return the entry index (the exact wanted ratio is not found)
        return i_num, False

    ##############################################
    #                  Get Eps                   #
    ##############################################
    def __get_eps(self, i_eps, elem_eps, is_solar_ref):

        # Select the right array
        if is_solar_ref:
            temp_solar = self.sol_norm[i_eps]
        else:
            temp_solar = self.solar[i_eps]

        # Find the index associated with the wanted element
        for i_get_eps in range(0,len(temp_solar)):
            if temp_solar[i_get_eps][0] == elem_eps:
                return temp_solar[i_get_eps][1]

        # Print a warning message if the element is not found
        print ('Error - Element not found in __get_eps function.')
        return -30.0

    ##############################################
    #                 Find Denom                 #
    ##############################################
    def __find_denom(self, i_ds, i_x_y, i_num, elem_in):

        # For each element ratio in the data set ...
        for i_elem in range(0,len(self.elem[i_ds])):

            # If the denominator is found (in the division form) ...
            if self.elem[i_ds][i_elem][0] == elem_in[i_x_y][1] and \
               self.elem[i_ds][i_elem][1] == self.elem[i_ds][i_num][1]:

                # Return the entry index (a division is needed)
                return i_elem, True

            # If the denominator is found (in the multiplication form) ...
            elif self.elem[i_ds][i_elem][1] == elem_in[i_x_y][1] and \
               self.elem[i_ds][i_elem][0] == self.elem[i_ds][i_num][1]:

                # Return the entry index (a multiplication is needed)
                return i_elem, False

        # Return arbitrary value if nothing is found
        return -1, False

    ##############################################
    #                Fig Standard                #
    ##############################################
    def __fig_standard(self, ax, fontsize=8, labelsize=8, lwtickboth=[6,2], \
                       lwtickmajor=[10,3], rspace=0.6, bspace=0.15, \
                       legend_fontsize=14):

        '''
        Internal function in order to get standardized figure font sizes.
        It is used in the plotting functions.

        '''

        plt.legend(loc=2,prop={'size':legend_fontsize})
        plt.rcParams.update({'font.size': fontsize})
        ax.yaxis.label.set_size(labelsize)
        ax.xaxis.label.set_size(labelsize)
        ax.tick_params(length=lwtickboth[0],width=lwtickboth[1],which='both')
        ax.tick_params(length=lwtickmajor[0],width=lwtickmajor[1],which='major')
#        if len(ax.lines)>0:
#            for h in range(len(ax.lines)):
#                ax.lines[h].set_markersize(markersize)
        ax.legend(loc='center left', bbox_to_anchor=(1.01, 0.5), \
             markerscale=0.8,fontsize=legend_fontsize)
        plt.subplots_adjust(right=rspace)
        plt.subplots_adjust(bottom=bspace)

    ##############################################
    #              List Solar Norm               #
    ##############################################
    def list_solar_norm(self):

        '''
        This function plots the list of solar normalizations available.

        '''

        # Print every available solar abundances
        for i_lsn in range(0,len(self.paths_norm)):
            print (self.paths_norm[i_lsn])

    ##############################################
    #              List Ref Papers               #
    ##############################################
    def list_ref_papers(self,galaxy=''):

        '''
        This function prints lists of available data sets.

        Parameters
        ---------

        galaxy : string

            Name of the target galaxy for which data sets will be displayed.
            If empty includes data sets of all available galaxies.

            Choices : 'milky_way', 'sculptor', 'carina', 'fornax'

            Default value : ''

        '''

        if len(galaxy)==0:
           # Print every available observational reference papers
           for i_lsn in range(0,len(self.paths)):
              print (self.paths[i_lsn])
        else:
           i_obs = self.__get_i_data_galaxy(galaxy)
           for i_ref in i_obs:
               print (self.paths[i_ref])

    ##############################################
    #                 Get star id                #
    ##############################################

    def get_star_id(self,find_elements=['Sc'],find_Fe_H_range=[],obs='milky_way_data/Venn_et_al_2004_stellab'):

        '''
        Gets index of stars with certain properties such as available elements or Fe/H range.

        Parameters
        ---------

        find_elements : array
            Find index of all stars with elements
        obs : string
            Star data set
        '''

        overplot=False

        # get the elements available

        # Get the indexes for the wanted references
        i_obs = self.__get_i_data_set([obs])
        i_ds=i_obs[0]
        elements = self.elem_list[i_ds]
        print ('Number of elements available in dataset: ',elements)
        # get [X/Fe] for each element
        abunds_y=[]
        abunds_y_err=[]
        eles_found=[]
        num_stars=0
        star_ids=[]
        star_fe_h=[]
        for k in range(len(find_elements)):
            yaxis='['+find_elements[k]+'/'+'Fe]'
            ret_x, ret_y, ret_x_err, ret_y_err,ret_star_i=self.plot_spectro(fig=-1, galaxy='', xaxis='[Fe/H]', yaxis=yaxis, \
                   fsize=[10,4.5], fontsize=14, rspace=0.6, bspace=0.15,\
                   labelsize=15, legend_fontsize=14, ms=6.0, norm='', obs=[obs],\
                   overplot=False, return_xy=True, show_err=True, \
                   show_mean_err=False, stat=False, flat=False, show_legend=True, \
                   sub=1, sub_plot=False, alpha=1.0, lw=1.0,abundistr=True)

            if k==0:
                star_ids=ret_star_i
                star_fe_h=ret_x
            else:
                star_ids_tmp=[]
                star_fe_h_tmp=[]
                for h in range(len(star_ids)):
                    if star_ids[h] in ret_star_i:
                        star_ids_tmp.append(star_ids[h])
                        star_fe_h_tmp.append(star_fe_h[h])
                star_ids=star_ids_tmp
                star_fe_h=star_fe_h_tmp

        # get [Fe/H] values
        if len(find_Fe_H_range)>0:
            fe_h_max=find_Fe_H_range[1]
            if fe_h_max==0:
                fe_h_max=max(star_fe_h)
            fe_h_min=find_Fe_H_range[0]
            if fe_h_min==0:
                fe_h_min=min(star_fe_h)
            star_ids_tmp=[]
            print ('adjust to given metallicity range from ',fe_h_min,' to ',fe_h_max)
            for k in range(len(star_ids)):
                if (star_fe_h[k]>fe_h_min) and (star_fe_h[k]<fe_h_max):
                    star_ids_tmp.append(star_ids[k])
            star_ids=star_ids_tmp
        return star_ids

    ##############################################
    #                 Plot Abun                  #
    ##############################################

    def plot_abun(self,fig=-1,obs='milky_way_data/Venn_et_al_2004_stellab',\
                   star_idx=0,find_elements=[],fsize=[10,4.5],label='Star 1',elem_label_on=True,\
                   fontsize=14,shape='-',color='k', rspace=0.6, bspace=0.15,\
                   labelsize=15, legend_fontsize=14, ms=6.0, norm='',\
                   marker='o',markersize=3,return_xy=False,show_err=True, \
                   show_mean_err=False, stat=False, flat=False, show_legend=True, \
                   sub=1, sub_plot=False, alpha=1.0, lw=1.0,iolevel=0):

        '''
        Plots abundance distribution [Elements/Fe] vs Z

        Parameters
        ---------

        elements : array
        find_elements : array
            Plot only
        '''

        overplot=False

        # get the elements available

        # Get the indexes for the wanted references
        i_obs = self.__get_i_data_set([obs])
        i_ds=i_obs[0]
        elements = self.elem_list[i_ds]
        if iolevel>0:
            print ('Number of elements available in dataset: ',elements)
        # get [X/Fe] for each element
        abunds_y=[]
        abunds_y_err=[]
        eles_found=[]
        num_stars=0
        for k in range(len(elements)):
            yaxis='['+elements[k]+'/'+'Fe]'
            ret_x, ret_y, ret_x_err, ret_y_err,ret_star_i=self.plot_spectro(fig=-1, galaxy='', xaxis='[Fe/H]', yaxis=yaxis, \
                   fsize=[10,4.5], fontsize=14, rspace=0.6, bspace=0.15,\
                   labelsize=15, legend_fontsize=14, ms=6.0, norm='', obs=[obs],\
                   overplot=False, return_xy=True, show_err=True, \
                   show_mean_err=False, stat=False, flat=False, show_legend=True, \
                   sub=1, sub_plot=False, alpha=1.0, lw=1.0,abundistr=True)

            if star_idx in ret_star_i:
               idx=ret_star_i.index(star_idx)
               #ret_x[idx]
               abunds_y.append(ret_y[idx])
               #ret_x_err[idx]
               abunds_y_err.append(ret_y_err[idx])
               eles_found.append(elements[k])
               #print ('get value: ',ret_y[idx])
            if len(ret_star_i)>num_stars:
               num_stars=len(ret_star_i)
        if iolevel>0:
            print ('Number of stars available in dataset: ',num_stars)
        err_on = show_err
        self.__plot_distr(fig,eles_found,abunds_y,abunds_y_err,err_on,elem_label_on,shape,color,label,marker,markersize,fsize)

    def __plot_distr(self,fig, elements,abunds,abunds_err,err_on,label_on,shape,color,label,marker,markersize,fsize):

        '''
        Helping function to plot the abundance distribution [Elements/Fe] vs Z

        Parameters
        ---------

        elements : array
            list of elements to be plotted
        abunds : array
            abundances as [X/Fe]
        label_on : boolean
            if true plots the element label for each element

        '''
        plt.figure(fig,figsize=(fsize[0],fsize[1]))

        Z_numbers=[]
        for i_ele in range(len(elements)):
          # get name of element
          Z=ry.get_z_from_el(elements[i_ele])
          Z_numbers.append(Z)

        Z_numbers_sort=[]
        abunds_sort=[]
        idx_sorted=sorted(range(len(Z_numbers)),key=lambda x:Z_numbers[x])
        for k in range(len(idx_sorted)):
           Z_numbers_sort.append(Z_numbers[idx_sorted[k]])
           abunds_sort.append(abunds[idx_sorted[k]])

        plt.ylabel('[X/Fe]')
        plt.xlabel('charge number Z')
        plt.plot(Z_numbers_sort, abunds_sort, linestyle=shape,\
                         color=color,label=label,marker=marker,markersize=markersize)

        ## plot element labels
        if label_on:
            for i_ele in range(len(elements)):
                plt.annotate(elements[i_ele],(Z_numbers[i_ele],abunds[i_ele]), \
                    xytext=(-2,0),textcoords='offset points',horizontalalignment='right', verticalalignment='top')

        #err on
        if err_on:
            for i_ele in range(len(elements)):
                plt.errorbar(Z_numbers[i_ele],abunds[i_ele], \
                    xerr=0, yerr=abunds_err[i_ele],
                    color=color,marker=marker, ecolor=color, \
                    label=label, markersize=markersize, alpha=1)

    def write_data_table(self,data,attr,filename):

        '''
        Write stellar data table for the stellab database. Format as for
        files found in stellab_data and read in by stellab.

        Parameters
        ---------

        data : list
            List of stellar data such as abundances. Each list element
            contains list entries for a star.

        attr : list
            List of types of stellar data such as [Fe/H] for each star.
        filename : string
            Name of data file to be written
        '''
        out=''

        #create header with types
        for k in range(len(attr)):
            sp = len(attr[k])
            out = out + attr[k]+(10-sp)*' '
        out = out + '\n'

        #loop over stars
        for k in range(len(data)):
            for h in range(len(data[k])):
                out = out + '{:.3E}'.format(data[k][h]) + ' '
            out = out + '\n'

        f1=open(filename,'w')
        f1.write(out)
        f1.close()
        print ('file ',filename,' created.')


text:
Ram Gopal may refer to:
 Ram Gopal (author) (born 1925), Indian writer and historian
 Ram Gopal Varma (born 1962), Indian screenwriter, film director/producer
 Ram Gopal (dancer) (1912–2003), Bangalore-born British dancer
 Ram Gopal Bajaj (born 1940), National School of Drama director
 Ram Gopal Yadav (born 1946), Indian politician

See also
 Ram Gopal Varma Ke Sholay, 2007 Indian film

redpajama_set_name: RedPajamaWikipedia


Look through the listings of Member users here at Military Dating that are associated with EDM. Talking to other members that have similar interests is a pefect way to come up with ideas to do on a first date. Create a Totally Free Account to Meet Someone Tonight!
If you wish to contact any member on Military Dating, you need to create a Totally Free Account to verify you are real. After you verified you are who you say you are, you can begin talking to to see if they are interested in you. It's very easy to meet someone. Just send a wink or quick message and patiently wait for for them to get back to you. After they respond and there is a mutual interest, then you can schedule to meet up to see if there happens to be a actual connection. Stop Waiting around! Go ahead and open up your totally free account right now!


text:
RFP seeks vendor to consolidate recreation sites
By Jason Miller
The consolidation of the government's recreation reservation Web sites is about to begin.
After more than two years of work on the Recreation One-Stop Quicksilver project, the Agriculture Department's Forest Service last week released a request for proposals to set up a new recreation reservation system combining the National Recreation Service's and the National Park Service's systems.
The contract will have a base period of 3.5 years and six one-year options. Proposals are due April 23. The agency plans to award a contract in June with migration to one system taking place in November, said Charlie Grymes, Recreation One-Stop project manager.
'November is our slow season, so there is less data in the system than any other time during the year,' he said.
The new site will incorporate functionality of the Recreation.gov site, which Interior launched in September 2002.
Users will be able to reserve campsites online or buy wilderness permits and tour tickets.
Spherix Inc. of Beltsville, Md., and ReserveAmerica Inc., a subsidiary of InterActiveCorp. of Los Angeles, are the incumbent contractors for the National Recreation Service and National Park Service sites, respectively.
Now that the RFP is out, the project team can concentrate on getting the data standards approved, Grymes said. Federal agencies are reviewing RecML, an Extensible Markup Language schema developed over the past two years.
'Agreeing to this data exchange standard will make sure all systems will hold consistent information and eliminate duplicative data entry,' he said.
The project team also is working with the states to link through their sites to commercial recreation facilities.
'States are investing a good deal of money and resources to establish their Web sites, and we are happy to have them do that,' Grymes said. Eliminating the extra click to the state's site 'would cost us a good deal of money in data collection and management.'
Cloud quick start with FedRAMP Tailored
Adobe gets first FedRAMP Tailored authorizations
Government data in the cloud: Provider and user responsibilities
Blackboard brings learning to the AWS GovCloud
GeoShield moves to Microsoft Azure Government Cloud