Overview of AFC Women's Champions League Preliminary Round Group A
  
    The AFC Women's Champions League Preliminary Round Group A is gearing up for an exciting set of matches tomorrow. Fans and enthusiasts are eagerly anticipating the showdowns, which promise to deliver thrilling football action. This stage is crucial as teams battle it out to secure a spot in the next round of this prestigious tournament. With a blend of tactical prowess and raw talent, each match holds the potential to surprise and captivate audiences worldwide.
  
  
  Teams in Focus
  
    Group A comprises several formidable teams, each bringing unique strengths and strategies to the pitch. The group features clubs from diverse regions, showcasing the growing competitiveness and talent pool in women's football across Asia.
  
  Key Teams
  
    - Team A: Known for their solid defense and strategic gameplay, Team A has consistently been a strong contender in previous tournaments.
- Team B: With a dynamic attacking lineup, Team B is expected to put on an offensive spectacle, aiming to dominate possession and create numerous scoring opportunities.
- Team C: Renowned for their resilience and teamwork, Team C often thrives under pressure, making them a tough opponent in knockout scenarios.
- Team D: Emerging as dark horses, Team D has shown remarkable progress in recent seasons, with young talents leading the charge.
Match Predictions and Analysis
  
    As the matches draw near, expert analysts have provided insights into potential outcomes based on team form, player performances, and historical data. These predictions offer a glimpse into what might unfold on the field.
  
  Match 1: Team A vs. Team B
  
    This clash is anticipated to be a tactical battle. Team A's defensive solidity will be tested against Team B's aggressive forward play. Analysts predict a low-scoring affair with both teams wary of conceding early goals.
  
  Match 2: Team C vs. Team D
  
    Team C's experience could be pivotal in this encounter. However, Team D's youthful energy and recent form suggest they could pull off an upset. Expect an evenly matched contest with both teams looking to exploit any weaknesses.
  
  Betting Predictions
  
    Betting enthusiasts are keenly watching these matches for potential opportunities. Here are some expert predictions based on current odds and team analyses.
  
  Betting Tips for Match 1: Team A vs. Team B
  
    - Under 2.5 Goals: Given both teams' cautious approach, betting on fewer than three goals could be a safe bet.
- Draw No Bet: With both teams having strong defenses, a draw is a plausible outcome.
- Total Corners Over/Under: Expect a high number of corners due to the attacking strategies employed by both sides.
Betting Tips for Match 2: Team C vs. Team D
  
    - Team D to Score: With their attacking flair, backing Team D to score at least one goal could be rewarding.
- Both Teams to Score (BTTS): Given the open nature of this match, there's a good chance both teams will find the back of the net.
- Correct Score Prediction: A close match could end with a narrow victory for either side; consider exploring correct score bets.
Tactical Insights
  
    Understanding team tactics can provide deeper insights into potential match outcomes. Here’s a breakdown of key tactical elements for each team.
  
  Team A's Defensive Strategy
  
    Team A is likely to employ a compact defensive formation, focusing on intercepting passes and minimizing space for opponents. Their full-backs may adopt a conservative approach, prioritizing defensive duties over overlapping runs.
  
  Team B's Offensive Play
  
    Expect Team B to utilize quick transitions from defense to attack, exploiting spaces left by opponents. Their wingers will play a crucial role in stretching the defense and delivering crosses into the box.
  
  Team C's Midfield Dominance
  
    Controlling the midfield will be vital for Team C. They aim to dictate the tempo of the game through possession-based play, using their midfielders' vision to create goal-scoring opportunities.
  
  Team D's Youthful Energy
  
    Team D's young squad brings enthusiasm and unpredictability. They are likely to press high up the pitch, aiming to disrupt their opponents' rhythm and capitalize on counter-attacks.
  
  Potential Game-Changers
  
    Several players could emerge as key influencers in these matches. Their performances might tip the scales in favor of their respective teams.
  
  Influential Players in Match 1: Team A vs. Team B
  
    - Sarah Lee (Team A): As captain and defensive anchor, her leadership will be crucial in organizing the backline.
- Mia Tan (Team B): Known for her pace and dribbling skills, she could break down defenses with her skillful runs.
Influential Players in Match 2: Team C vs. Team D
  
    - Jessica Wong (Team C): Her playmaking abilities will be vital in linking defense and attack.
- Aisha Khan (Team D): As an emerging star striker, her finishing prowess could be decisive in securing goals.
Past Performance Analysis
  
    Examining past performances provides context for predicting future outcomes. Historical data highlights patterns that may influence tomorrow’s matches.
  
  Past Encounters: Team A vs. Team B
  
    In previous meetings, these teams have displayed contrasting styles but balanced results. Matches often hinge on which team can impose their game plan effectively.
  
  Past Encounters: Team C vs. Team D
  
    Historically, matches between these teams have been closely contested affairs, with neither side able to establish consistent dominance over the other.
  
  Injury Updates and Squad Changes
  
<|file_sep|># -*- coding: utf-8 -*-
"""
Created on Tue Jan
@author: Christian Kehl
"""
import os
import time
import pandas as pd
from matplotlib import pyplot as plt
from matplotlib import rcParams
from datetime import datetime
import matplotlib.dates as mdates
#Set global parameters
rcParams['font.family'] = 'sans-serif'
rcParams['font.sans-serif'] = ['Arial']
rcParams['font.size'] = '16'
rcParams['lines.linewidth'] = '0.8'
rcParams['legend.fontsize'] = '14'
rcParams['axes.linewidth'] = '0.8'
def plot_filelist(filelist):
    
        #Go through all files
        for file in filelist:
            print('Processing file '+file)
            
            #Read CSV File
            df=pd.read_csv(file)
            
            #Remove unwanted columns
            df=df.drop(['Unnamed:0','Unnamed:0_x','Unnamed:0_y'], axis=1)
            
            #Convert time column
            df['Time']=df['Time'].apply(lambda x: datetime.strptime(x,'%Y-%m-%d %H:%M:%S'))
            
            #Sort by Time
            df.sort_values(by=['Time'], inplace=True)
            
            #Get information about input file
            filename=os.path.basename(file)
            print('Filename:'+filename)
            
            #Extract country name from filename
            country=filename.split('_')[0]
            
            #Extract state name from filename if available
            try:
                state=filename.split('_')[1]
                print('State:'+state)
                
                #Create path name if state not equal 'Global'
                path='Country/'+country+'/'+state
            
                #If state equal Global create path name without state 
                if state=='Global':
                    path='Country/'+country+'/Global'
                    
                    #Replace state by country name 
                    country=state.replace('Global',country)
                    
                    #If country Germany replace by DEU 
                    if country=='Germany':
                        country='DEU'
                        
                    print('Country:'+country)
                        
            except:
                path='Country/'+country
            
            #Create directory if not existent 
            try:
                os.makedirs(path)
            except OSError:
                pass
            
            #Plot line graph 
            plt.figure(figsize=(10.,5.),dpi=150)   
                
            #Select data points from dataframe
            x=df['Time']
            y=df['Confirmed']
            
            #Plot data points with label
            plt.plot(x,y,label=country,c='black')
            
            #Add legend 
            plt.legend()
            
            #Set x-axis label 
            plt.xlabel('Date')
            
             #Set y-axis label 
             plt.ylabel('Cases')
             
             #Set title 
             plt.title(country+' '+state)
             
             #Set date format on x-axis 
             plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%d.%m.%y'))
             
             #Rotate date labels 
             plt.gcf().autofmt_xdate()
             
             #Set limits for y-axis based on max value of y-values +10%
             plt.ylim(top=max(y)+max(y)*0.1) 
            
             #Save figure as PNG file 
             figname=path+'/'+filename.replace('.csv','.png')
             plt.savefig(figname,dpi=150,bbox_inches='tight')
             
             print('Saved figure as '+figname)  
             
            
#Get list of all CSV files from directory          
filelist=[os.path.join(dp,f) for dp,dn,f in os.walk(os.getcwd()) for f in dn if f.endswith('.csv')]
#Call plot function with filelist as argument           
plot_filelist(filelist)<|repo_name|>c-kehl/covid19<|file_sep|>/README.md
# COVID19
Data sources:
https://github.com/CSSEGISandData/COVID-19/blob/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv
https://github.com/CSSEGISandData/COVID-19/blob/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_deaths_global.csv
https://github.com/CSSEGISandData/COVID-19/blob/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_recovered_global.csv
Source code:
https://github.com/c-kehl/covid19/blob/master/extract_daily_data.py
https://github.com/c-kehl/covid19/blob/master/plot_time_series.py
<|repo_name|>c-kehl/covid19<|file_sep|>/extract_daily_data.py
# -*- coding: utf-8 -*-
"""
Created on Mon Jan
@author: Christian Kehl
"""
import pandas as pd
import os
#Read CSV File confirmed cases
df=pd.read_csv('https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv')
#Extract data columns from dataframe (all columns except first three columns)
data=df.iloc[:,4:]
#Add new column Time with values from column Date - fill empty cells with zero value (NaN ->0)
data.insert(0,'Time',df['Date'].fillna(0))
#Remove first column Province/State (not needed anymore) 
data=data.drop(['Province/State'],axis=1)
#Reset index starting at zero (default after drop operation is index starting at one) 
data.reset_index(drop=True,inplace=True)
#Group rows by Country/Region summing up all values (if several entries exist e.g.: US State wise entries + Federal States entries) 
data=data.groupby(['Country/Region']).sum()
#Create directory if not existent 
try:
   os.makedirs('Country')
except OSError:
   pass
#Go through all rows (Countries)  
for row_index,row_value in data.iterrows():
    
   country=row_value.name
    
   #Print Country name   
   print(country)
   
   #Extract series values from dataframe row  
   series=row_value.to_list()
   
   #Create dataframe with two columns - Time & Cases  
   df=pd.DataFrame(list(zip(series[:],series[1:])),columns=['Time','Confirmed'])
   
   #Add Country column with constant value  
   df['Country']=country
   
   try:
       state=row_value.name.split(',')[1].strip()
       print(state)
       
       df['State']=state
   
       path='Country/'+row_value.name.replace(',','_')+'_DailyConfirmed.csv'
       
       print(path)   
       
   except:
       path='Country/'+row_value.name+'_DailyConfirmed.csv'
       print(path)
       
   df.to_csv(path,index=False)
<|file_sep|>#include "stdafx.h"
#include "Turret.h"
CTurret::CTurret(CPlayer* player) :CGameObject(player->GetWorld())
{
	//m_TurretMesh = SMgr.GetMesh("Models/TankTurret.X");
	m_TurretMesh = SMgr.GetMesh("Models/TankTurretTest.X");
	m_MaxRotationSpeed = Vector3(180.f / dt);
	m_MaxRotationSpeed *= dt;
	//m_RotationSpeed = m_MaxRotationSpeed;
	m_RotationSpeed = Vector3(100.f / dt);
	m_RotationSpeed *= dt;
	m_CurrentRotationSpeed = Vector3::Zero;
}
CTurret::~CTurret(void)
{
}
void CTurret::Update(const float& dt)
{
	CGameObject::Update(dt);
	if (!m_Player->IsDead())
	{
		Vector3 lookDirection = m_Player->GetPosition() - GetPosition();
		lookDirection.Normalize();
		Vector3 turretForward = GetForward();
		turretForward.Normalize();
		float dot = turretForward.Dot(lookDirection);
		if (dot > -0.f && dot <= -0.999f)
		{
			turretForward *= -1.f;
			dot *= -1.f;
		}
		float angleToLookAt = acos(dot);
		Vector3 crossProductVector = turretForward.Cross(lookDirection);
		float crossProductZValue = crossProductVector.z;
		
		if(crossProductZValue >= -0.f && crossProductZValue <= +0.f) // up or down -> rotate around x axis			
			m_CurrentRotationSpeed.x = m_RotationSpeed.x * sign(angleToLookAt);
			
		else if(crossProductZValue > +0.f && crossProductZValue <= +1.f) // right side -> rotate around z axis clockwise	
			m_CurrentRotationSpeed.z = m_RotationSpeed.z * sign(angleToLookAt);
		else if(crossProductZValue > -1.f && crossProductZValue <= -0.f) // left side -> rotate around z axis counter clockwise	
			m_CurrentRotationSpeed.z = m_RotationSpeed.z * sign(-angleToLookAt);
		else // only happens when vectors are parallel -> do nothing because there is no need to rotate around y axis	
			m_CurrentRotationSpeed.y = Vector3::Zero.y;
		if (abs(angleToLookAt) > abs(m_CurrentRotationSpeed.Length()))
			m_CurrentRotationSpeed.Normalize();
		
		SetRotation(GetRotation() + m_CurrentRotationSpeed);
		
		
// 		CGameObject* objectInFrontOfTurret;
// 		float minDistanceToObjectInFrontOfTurret;
// 		bool objectInFrontOfTurretExists;
// 		objectInFrontOfTurretExists =
// 			SMgr.GetPhysicsManager()->Raycast(
// 			GetPosition(),
// 			GetForward(),
// 			objectInFrontOfTurret,
// 			minDistanceToObjectInFrontOfTurret,
// 			this,
// 			false);
//
//
// 		if (!objectInFrontOfTurretExists || objectInFrontOfTurret == m_Player)
// 			return;
//
//
// 		Vector3 lookDirection =
// 			objectInFrontOfTurret->GetPosition() -
// 			GetPosition();
//
// 		Vector3 turretForward =
// 			GetForward();
//
// 		turretForward.Normalize();
//
//
// 		float dot =
// 			turretForward.Dot(lookDirection);
//
//
// 		if (dot > -0.f && dot <= -0.999f)
// 		{
// 			turretForward *= -1.f;
// 			dot *= -1.f;
// 		}
//
//
// 		float angleToLookAt =
// 			acos(dot);
//
//
// 		Vector3 crossProductVector =
// 			turretForward.Cross(lookDirection);
//
//
// 		float crossProductZValue =
// 			crossProductVector.z;
//
//
//
////UP OR DOWN -> ROTATE AROUND X AXIS			
//
//
//
////RIGHT SIDE -> ROTATE AROUND Z AXIS CLOCKWISE		
//
////LEFT SIDE -> ROTATE AROUND Z AXIS COUNTER CLOCKWISE		
//
////ONLY HAPPENS WHEN VECTORS ARE PARALLEL -> DO NOTHING BECAUSE THERE IS NO NEED TO ROTATE AROUND Y AXIS		
//
////if (abs(angleToLookAt) > abs(m_CurrentRotationSpeed.Length()))
////	m_CurrentRotationSpeed.Normalize();
////
////
////SetRotation(GetRotation() + m_CurrentRotationSpeed);		
	}
}
void CTurret::Render(const Vector4& colorOverride /*= Vector4::White*/)
{
	CGameObject::Render(colorOverride);
	Matrix worldMatrix;
	worldMatrix.SetTranslation(GetPosition());
	worldMatrix.Rotate(GetEulerAngles());
	worldMatrix.Scale(Vector3(20.f));
	SMgr.GetDevice()->SetTransform(D3DTS_WORLD,&worldMatrix);
	SMgr.Get